Medium

Protocol-Relative URL Injection via Single Backslash Bypass in Angular SSR

  • Disclosed: 19.03.2026
  • Updated: 11.10.2026 10:22

An Open Redirect vulnerability exists in @angular/ssr due to an incomplete fix for CVE-2026-27738. While the original fix successfully blocked multiple leading slashes (e.g., ///), the internal validation logic fails to account for a single backslash (\) bypass.

When an Angular SSR application is deployed behind a proxy that passes the X-Forwarded-Prefix header:

  • An attacker provides a value starting with a single backslash (e.g., \evil.com).
  • The internal validation failed to flag the single backslash as invalid.
  • The application prepends a leading forward slash, resulting in a Location header containing /\evil.com.
  • Modern browsers interpret the /\ sequence as //, treating it as a protocol-relative URL and redirecting the user to the attacker-controlled domain.

Furthermore, the response lacks the Vary: X-Forwarded-Prefix header, allowing the malicious redirect to be stored in intermediate caches (Web Cache Poisoning).

Impact

This vulnerability allows attackers to conduct large-scale phishing and SEO hijacking:

  • Scale: A single request can poison a high-traffic route, impacting all users until the cache expires.
  • SEO Poisoning: Search engine crawlers may follow and index these malicious redirects, causing the legitimate site to be delisted or associated with malicious domains.
  • Trust: Because the initial URL belongs to the trusted domain, users and security tools are less likely to flag the redirect as malicious.

Patches

  • 22.0.0-next.2
  • 21.2.3
  • 20.3.21

Workarounds

Until the patch is applied, developers should sanitize the X-Forwarded-Prefix header in their server.ts before the Angular engine processes the request:

ts
app.use((req, res, next) => {
  const prefix = req.headers['x-forwarded-prefix'];
  if (typeof prefix === 'string') {
    // Sanitize by removing all leading forward and backward slashes
    req.headers['x-forwarded-prefix'] = prefix.trim().replace(/^[/\\]+/, '/');
  }
  next();
});

References

Affected software

Click a technology to see all vulnerabilities affecting it.

PlatformPackageVulnerable versionsFixed in
npm package @angular/ssr >= 22.0.0-next.0, < 22.0.0-next.2, >= 21.0.0-next.0, < 21.2.3, >= 20.0.0-next.0, < 20.3.21 22.0.0-next.2, 21.2.3, 20.3.21

References

CVSS score 6.1/10
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Weakness (CWE)
CWE-601
Platform
npm
Package
@angular/ssr
Disclosed
19.03.2026
Updated
11.10.2026 10:22

Sources and licenses

OSV / GitHub Advisory Database - GHSA-vfx2-hv2g-xj5f - CC BY 4.0

Vulnerability history: @angular/ssr

All published vulnerabilities of this package (npm package), newest first. Shows whether this is a one-off slip or a package that needs watching.

Total entries
7
First → latest
09.2025 10.2026
Without a fix
0
Exploited in attacks
0

Severity breakdown

  • Critical 1
  • High 2
  • Medium 4

Disclosures per year

  1. 2025: 2
  2. 2026: 5
  1. Medium CVE-2026-104871 >= 22.0.0, < 22.1.7, >= 21.0.0, < 21.2.23, >= 20.0.0, < 20.3.36, <= 19.2.27 22.1.7, 21.2.23, 20.3.36
  2. Medium CVE-2026-44437 >= 22.0.0-next.0, < 22.0.0-next.7, >= 21.0.0-next.0, < 21.2.9, >= 20.0.0-next.0, < 20.3.25, >= 19.0.0-next.0, < 19.2.25 22.0.0-next.7, 21.2.9, 20.3.25, 19.2.25
  3. Protocol-Relative URL Injection via Single Backslash Bypass in Angular SSR this entry
    Medium · 6.1 CVE-2026-33397 >= 22.0.0-next.0, < 22.0.0-next.2, >= 21.0.0-next.0, < 21.2.3, >= 20.0.0-next.0, < 20.3.21 22.0.0-next.2, 21.2.3, 20.3.21
  4. Critical CVE-2026-27739 >= 21.2.0-next.0, < 21.2.0-rc.1, >= 21.0.0-next.0, < 21.1.5, >= 20.0.0-next.0, < 20.3.17, < 19.2.21 21.2.0-rc.1, 21.1.5, 20.3.17, 19.2.21
  5. Medium CVE-2026-27738 >= 21.2.0-next.0, < 21.2.0-rc.1, >= 21.0.0-next.0, < 21.1.5, >= 20.0.0-next.0, < 20.3.17, >= 19.0.0-next.0, < 19.2.21 21.2.0-rc.1, 21.1.5, 20.3.17, 19.2.21
  6. High CVE-2025-62427 >= 19.0.0-next.0, < 19.2.18, >= 20.0.0-next.0, < 20.3.6, >= 21.0.0-next.0, < 21.0.0-next.8 19.2.18, 20.3.6, 21.0.0-next.8
  7. High CVE-2025-59052 >= 17.0.0-next.0, < 18.2.21, >= 19.0.0-next.0, < 19.2.16, >= 20.0.0-next.0, < 20.3.0, >= 21.0.0-next.0, < 21.0.0-next.3 18.2.21, 19.2.16, 20.3.0, 21.0.0-next.3

Know which vulnerabilities affect your application

With the DockRay integration and software inventory enabled, DockRay checks reported component versions against known vulnerabilities and notifies you about confirmed matches. Coverage depends on the supported technology and available advisory data.

Connect your application
DockRay newsletter

Application security in your inbox

Important vulnerabilities, actionable guidance and practical advice for your applications. Choose your technologies and follow what matters to your project.

  • A daily digest of new vulnerabilities, critical ones included.
  • Notifications about important updates.
  • Practical advice on application security and monitoring.

Leave empty to receive updates for every technology.

Free to subscribe. Unsubscribe with one click in any email.