{"id":"CVE-2026-33397","state":"PUBLISHED","title":"Angular SSR Vulnerable to Protocol-Relative URL Injection via Single Backslash Bypass","description":"The Angular SSR is a server-rise rendering tool for Angular applications. Versions on the 22.x branch prior to 22.0.0-next.2, the 21.x branch prior to 21.2.3, and the 20.x branch prior to 20.3.21 have an Open Redirect vulnerability 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, the internal validation failed to flag the single backslash as invalid, the application prepends a leading forward slash, resulting in a `Location` header containing the URL, and 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). Versions 22.0.0-next.2, 21.2.3, and 20.3.21 contain a patch. Until the patch is applied, developers should sanitize the `X-Forwarded-Prefix` header in their `server.ts` before the Angular engine processes the request.","publishedAt":"2026-03-26T13:46:16.145Z","updatedAt":"2026-03-30T14:56:05.822Z","severity":{"score":6.9,"label":"Medium","version":"4.0","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N","source":"GitHub_M"},"assigner":"GitHub_M","products":["angular angular-cli"],"affected":[{"vendor":"angular","product":"angular-cli","versions":[{"version":">= 22.0.0-next.0, < 22.0.0-next.2","status":"affected"},{"version":">= 21.0.0-next.0, < 21.2.3","status":"affected"},{"version":">= 20.0.0-next.0, < 20.3.21","status":"affected"}]}],"references":["https://github.com/angular/angular-cli/security/advisories/GHSA-vfx2-hv2g-xj5f","https://github.com/angular/angular-cli/pull/32771","https://github.com/advisories/GHSA-xh43-g2fq-wjrj"],"weaknesses":["CWE-601"],"ingestedAt":"2026-10-29T20:11:40.391Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/33xxx/CVE-2026-33397.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-33397","state":"PUBLISHED","datePublished":"2026-03-26T13:46:16.145Z","dateUpdated":"2026-03-30T14:56:05.822Z","assignerShortName":"GitHub_M","assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateReserved":"2026-03-19T17:02:34.169Z"},"containers":{"cna":{"title":"Angular SSR Vulnerable to Protocol-Relative URL Injection via Single Backslash Bypass","descriptions":[{"lang":"en","value":"The Angular SSR is a server-rise rendering tool for Angular applications. Versions on the 22.x branch prior to 22.0.0-next.2, the 21.x branch prior to 21.2.3, and the 20.x branch prior to 20.3.21 have an Open Redirect vulnerability 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, the internal validation failed to flag the single backslash as invalid, the application prepends a leading forward slash, resulting in a `Location` header containing the URL, and 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). Versions 22.0.0-next.2, 21.2.3, and 20.3.21 contain a patch. Until the patch is applied, developers should sanitize the `X-Forwarded-Prefix` header in their `server.ts` before the Angular engine processes the request."}],"affected":[{"vendor":"angular","product":"angular-cli","versions":[{"version":">= 22.0.0-next.0, < 22.0.0-next.2","status":"affected"},{"version":">= 21.0.0-next.0, < 21.2.3","status":"affected"},{"version":">= 20.0.0-next.0, < 20.3.21","status":"affected"}]}],"references":[{"url":"https://github.com/angular/angular-cli/security/advisories/GHSA-vfx2-hv2g-xj5f","name":"https://github.com/angular/angular-cli/security/advisories/GHSA-vfx2-hv2g-xj5f","tags":["x_refsource_CONFIRM"]},{"url":"https://github.com/angular/angular-cli/pull/32771","name":"https://github.com/angular/angular-cli/pull/32771","tags":["x_refsource_MISC"]},{"url":"https://github.com/advisories/GHSA-xh43-g2fq-wjrj","name":"https://github.com/advisories/GHSA-xh43-g2fq-wjrj","tags":["x_refsource_MISC"]}],"metrics":[{"cvssV4_0":{"attackVector":"NETWORK","attackComplexity":"LOW","attackRequirements":"NONE","privilegesRequired":"NONE","userInteraction":"NONE","vulnConfidentialityImpact":"NONE","vulnIntegrityImpact":"NONE","vulnAvailabilityImpact":"NONE","subConfidentialityImpact":"LOW","subIntegrityImpact":"LOW","subAvailabilityImpact":"NONE","baseScore":6.9,"baseSeverity":"MEDIUM","vectorString":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N","version":"4.0"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-601","lang":"en","description":"CWE-601: URL Redirection to Untrusted Site ('Open Redirect')","type":"CWE"}]}],"providerMetadata":{"shortName":"GitHub_M","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateUpdated":"2026-03-26T13:46:16.145Z"},"source":{"advisory":"GHSA-vfx2-hv2g-xj5f","discovery":"UNKNOWN"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-03-30T13:54:22.310595Z","id":"CVE-2026-33397","options":[{"Exploitation":"none"},{"Automatable":"yes"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-03-30T14:56:05.822Z"}}]}}}