@angular/platform-server: Open Redirect über protokollrelative URLs im Server-Side Rendering (SSR)
In @angular/platform-server wurde eine Open-Redirect-Schwachstelle festgestellt, wenn Server-Side Rendering (SSR) aktiviert ist.
Wenn Angular-SSR eine eingehende Anfrage rendert, werden URL-Auflösung und Plattform-Navigation von ServerPlatformLocation mittels resolveUrl (oder parseUrl in v20) verwaltet. Zwar wies resolveUrl protokollrelative URLs ab, deren Roh-String direkt mit // begann, diese Prüfung fand jedoch vor der WHATWG-URL-Normalisierung statt.
Wenn eine Anfrage-URL ein auflösendes Dot-Segment gefolgt von mehreren Schrägstrichen enthält (wie /.//evil.test oder serialisiert aus Router-Routenformen wie /.;/(//evil.test)), umging die Eingabe die anfängliche Prüfung auf urlStr.startsWith('//'). Das anschließende WHATWG-URL-Parsing löste die Dot-Segmente auf und führte zu einem pathname, der mit // (//evil.test) begann.
Folglich speicherte ServerPlatformLocation den Wert pathname = '//evil.test'. Wenn @angular/ssr eine Diskrepanz zwischen der gerenderten URL und dem finalen Location-Zustand des Routers erkannte, wurde der unnormalisierte Pfadname im HTTP-Header Location ausgegeben, was zu einer HTTP-302-Weiterleitung mit Location: //evil.test führte, die Browser als protokollrelative Navigation außerhalb der Origin auflösen.
Auswirkungen
Eine erfolgreiche Ausnutzung ermöglicht es einem nicht authentifizierten Remote-Angreifer, URLs zu konstruieren, die Angular-SSR dazu verleiten, Benutzer auf eine beliebige externe Domäne umzuleiten.
- Umgeht Guards auf Anwendungsebene: Typische Validierungsroutinen auf Anwendungsebene (wie die Überprüfung von
!returnUrl.startsWith('//')vor dem Aufruf vonrouter.navigateByUrl) stufen/.//evil.testoder/.;/(//evil.test)als sicheren relativen Pfad ein, wodurch Angreifer Weiterleitungs-Allowlists umgehen können. - Clientseitige SPAs nicht betroffen: Reine clientseitige Angular-Anwendungen (Single Page Applications ohne SSR) sind nicht verwundbar, da
ServerPlatformLocationausschließlich in serverseitigen Ausführungsumgebungen verwendet wird.
Voraussetzungen für Angriffe & verwundbare Konfigurationen
Eine Anwendung ist betroffen, wenn die folgenden Bedingungen erfüllt sind:
- SSR aktiviert: Die Anwendung läuft in einer Server-Side-Rendering-Umgebung unter Verwendung von
@angular/platform-serverund@angular/ssr. - Parameter-Routenformen: Der Router enthält Parameter-Routen mit Wildcard- oder untergeordneten Segmenten (z. B.
/:tenant, das auf.passt und sekundäre Outlet-Gruppen(//evil.test)zu/.//evil.testserialisiert), oder übergibt vom Benutzer bereitgestellte Navigationsziele (z. B.returnUrl). - Weiterleitung durch Reverse-Proxies: Upstream-Reverse-Proxies (Nginx, Cloudflare, ALB) leiten Semikolons (
;) oder Dot-Segmente weiter, ohne diese zu entfernen oder zu normalisieren.
Beispiel-Exploit-Payload
Ein Angreifer sendet eine Anfrage an eine Route mit Parametern und untergeordneten Segmenten:
GET /.;/(//evil.test) HTTP/1.1
Host: example.com
Antwort:
HTTP/1.1 302 Found
Location: //evil.test
Der Client-Browser löst //evil.test protokollrelativ auf und leitet den Benutzer von example.com nach evil.test weiter.
Patches
Das Problem wird behoben, indem resolveUrl (und parseUrl in v20) in @angular/platform-server aktualisiert werden, um zu überprüfen, dass der normalisierte URL-Pfadname nicht mit // beginnt, wenn allowProtocolRelative den Wert false hat.
22.2.121.2.2520.3.33
Workarounds & Mitigierungsmaßnahmen
Wenn ein sofortiges Upgrade auf eine gepatchte Version nicht möglich ist, können die folgenden Maßnahmen am Edge-Reverse-Proxy oder an der WAF implementiert werden:
- Pfade mit Dot-Segmenten gefolgt von Schrägstrichen abweisen:
Konfigurieren Sie Ihren Reverse-Proxy (z. B. Nginx, Cloudflare, AWS WAF) so, dass Anfragen blockiert werden, die
/.//,/..//oder/.;/enthalten:nginx# Nginx example: reject suspicious path normalization sequences if ($request_uri ~* "(\n/\.\/|\/\.\;)") { return 400; } - Weiterleitungs-Header bereinigen:
Stellen Sie sicher, dass Edge-Proxies oder API-Gateways protokollrelative (
//)Location-Antwort-Header, die vom SSR-Upstream stammen, umschreiben oder ablehnen.
Was zu tun ist
Aktualisieren Sie @angular/platform-server auf Version 22.2.1, 21.2.25 oder 20.3.33.
Falls ein Upgrade nicht unmittelbar möglich ist, können am Reverse-Proxy oder der WAF folgende Workarounds eingerichtet werden:
- Blockieren von Anfragen, die Dot-Segmente gefolgt von Schrägstrichen enthalten (
/.//,/..//,/.;/). - Bereinigen oder Umschreiben von protokollrelativen
Location-Headern, die vom SSR-Upstream zurückgegeben werden.
Betroffene Software
Klicken Sie auf eine Technologie, um alle zugehörigen Schwachstellen anzuzeigen.
| Plattform | Paket | Anfällige Versionen | Behoben in |
|---|---|---|---|
| npm-Paket | @angular/platform-server | >= 22.0.0, < 22.2.1, >= 21.0.0, < 21.2.25, >= 20.0.0, < 20.3.33, <= 19.2.25 | 22.2.1, 21.2.25, 20.3.33 |
Verweise
- https://github.com/angular/angular/security/advisories/GHSA-w739-gvwx-grc3
- https://github.com/angular/angular/pull/71077
- https://github.com/angular/angular/pull/71078
- https://github.com/angular/angular/pull/71079
- https://github.com/angular/angular/commit/450af9c813c7660b9bd91e5635f705ee3ed7b32a
- https://github.com/angular/angular/commit/83944fc8c50e86be90e8ec4184cd15002b5af262
- https://github.com/angular/angular/commit/928dcfd2582152655b5559509d057bf6a5a19521
- https://github.com/angular/angular/commit/d7d81e189d227108c3b9d39178dbb7389f6f970d
- https://github.com/angular/angular
- https://github.com/angular/angular/releases/tag/v20.3.33
- https://github.com/angular/angular/releases/tag/v21.2.25
- https://github.com/angular/angular/releases/tag/v22.2.1
- CVSS-Vektor
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N- Schwäche (CWE)
CWE-601- Plattform
- npm
- Paket
@angular/platform-server- Veröffentlicht
- 20.10.2026
- Aktualisiert
- 20.10.2026 18:18
Quellen und Lizenzen · Von DockRay bearbeitet oder übersetzt; Rechte und Lizenzen der Quellen bleiben erhalten.
OSV / GitHub Advisory Database - GHSA-w739-gvwx-grc3 - CC BY 4.0
Schwachstellenhistorie: @angular/platform-server
Alle veröffentlichten Schwachstellen dieses Pakets (npm-Paket), neueste zuerst. Zeigt, ob es ein einmaliger Ausrutscher ist oder ein Paket, das man im Auge behalten muss.
- Einträge insgesamt
- 12
- Erste → letzte
- 09.2025 10.2026
- Ohne Fix
- 0
- In Angriffen ausgenutzt
- 0
Verteilung nach Schweregrad
- Hoch 11
- Mittel 1
Veröffentlichungen pro Jahr
- 2025: 1
- 2026: 11
-
@angular/platform-server: Open Redirect über protokollrelative URLs im Server-Side Rendering (SSR) dieser Eintrag
Erkennen Sie Schwachstellen in Ihrer Anwendung
Mit der DockRay-Integration und aktivierter Softwareinventarisierung prüft DockRay gemeldete Komponentenversionen auf bekannte Schwachstellen und benachrichtigt Sie über bestätigte Treffer. Die Abdeckung hängt von der unterstützten Technologie und den verfügbaren Meldungen ab.