CVE-2026-111754Medium▾ Sunlit@angular/platform-server: Open Redirect via Protocol-Relative URLs in Server-Side Rendering (SSR)
▾ Sunlit zone — Low / medium · no exploitation signal
impact 27.5 · likelihood 0 · exploitation 0
Need a working PoC? Pro members can cast a request and our team develops one — it lands right here.
An open redirect vulnerability was identified in @angular/platform-server when Server-Side Rendering (SSR) is enabled.
When Angular SSR renders an incoming request, URL resolution and platform navigation are managed by ServerPlatformLocation using resolveUrl (or parseUrl in v20). While resolveUrl rejected protocol-relative URLs whose raw string directly started with //, this check ran prior to WHATWG URL normalization.
When a request URL includes a popping dot-segment followed by multiple slashes (such as /.//evil.test or serialized from router route shapes like /.;/(//evil.test)), the input bypassed the initial urlStr.startsWith('//') check. Subsequent WHATWG URL parsing resolved the dot-segments and resulted in a pathname starting with // (//evil.test).
Consequently, ServerPlatformLocation stored pathname = '//evil.test'. When @angular/ssr detected a mismatch between the rendered URL and the router's final location state, it emitted the unnormalized pathname into the HTTP Location response header, producing an HTTP 302 redirect with Location: //evil.test, which browsers resolve as a protocol-relative navigation off-origin.
Successful exploitation allows an unauthenticated remote attacker to craft URLs that trick Angular SSR into redirecting users to an arbitrary external domain.
!returnUrl.startsWith('//') before invoking router.navigateByUrl) accept /.//evil.test or /.;/(//evil.test) as a safe relative path, allowing attackers to bypass redirect allowlists.ServerPlatformLocation is only utilized in server-side execution environments.An application is affected if the following conditions are met:
@angular/platform-server and @angular/ssr./:tenant matching . and serializing secondary outlet groups (//evil.test) to /.//evil.test), or passes user-provided navigation targets (e.g. returnUrl).;) or dot-segments without stripping or normalizing them.An attacker sends a request targeting a route with parameters and child segments:
GET /.;/(//evil.test) HTTP/1.1
Host: example.com
Response:
HTTP/1.1 302 Found
Location: //evil.test
The client browser resolves //evil.test protocol-relatively and redirects the user away from example.com to evil.test.
The issue is resolved by updating resolveUrl (and parseUrl in v20) in @angular/platform-server to verify that the normalized URL pathname does not start with // when allowProtocolRelative is false.
22.2.121.2.2520.3.33If you cannot immediately upgrade to a patched version, apply one of the following mitigations at your edge reverse proxy or WAF:
/.//, /..//, or /.;/:
# Nginx example: reject suspicious path normalization sequences
if ($request_uri ~* "(\n/\.\/|\/\.\;)") {
return 400;
}
//) Location response headers originating from the SSR upstream.@angular/platform-server >= 22.0.0, < 22.2.1@angular/platform-server >= 21.0.0, < 21.2.25@angular/platform-server >= 20.0.0, < 20.3.33@angular/platform-server <= 19.2.25Upgrade to a patched release:
@angular/platform-server 22.2.1@angular/platform-server 21.2.25@angular/platform-server 20.3.33Connected by shared product, vendor, weakness, or advisory.
CVE-2026-101895High· 8.7Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript and other languages
CVE-2026-69149HighAngular SSR: Missing Fallback Raw-Content Serialization Escaping leads to Cross-Site Scripting (XSS)
CVE-2026-50168High@angular/platform-server: URL Parser Differential leading to SSRF Allowlist Bypass
CVE-2026-50555High@angular/platform-server: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
CVE-2026-111752High@angular/router: Denial of Service via Unmatched Empty-Path Outlet Route Matching in Server-Side Rendering (SSR)
CVE-2026-104871Medium· 6.3The Angular SSR is a server-rise rendering tool for Angular applications