@angular/common: XSRF-Token-Offenlegung durch URL-Parsing-Diskrepanz im Angular HTTP-Client (Unvollständiger Fix für CVE-2025-66035)
Ein unvollständiger Fix für GHSA-58c5-g7wp-6w37 (CVE-2025-66035) im HTTP-Client von @angular/common (HttpClient) ermöglicht es, dass Cross-Site-Request-Forgery-Tokens (XSRF) an vom Angreifer kontrollierte Cross-Origin-Domains übertragen werden, wenn Anfragen URLs verwenden, die Parsing-Diskrepanzen zwischen regulären Ausdrücken und dem WHATWG-URL-Parser des Browsers ausnutzen.
Technische Beschreibung
Zur Behebung von CVE-2025-66035 führte xsrfInterceptorFn einen regulären Ausdruck (const ABSOLUTE_URL_REGEX = /^(?:https?:)?\/\//i) ein, um absolute und protokollrelative URLs zu erkennen und zu überspringen, bevor der X-XSRF-TOKEN-Header angehängt wird.
Browser lösen an fetch() und XMLHttpRequest.open() übergebene Request-URLs jedoch mithilfe des WHATWG-URL-Parsers auf. Für die Schemata http: und https: führt der WHATWG-URL-Standard vor der Auflösung von Authority/Origin mehrere Normalisierungen durch:
- Backslashes (
\) werden wie Schrägstriche behandelt (/) — z. B./\evil.example/x,\\evil.example/x,\/evil.example/x,https:\\evil.example/x,https:/\evil.example/x. - Führende und nachfolgende C0-Steuerzeichen und Leerzeichen (
<= 0x20) werden entfernt — z. B.' //evil.example/x','\0//evil.example/x','\x1f//evil.example/x'. - ASCII-Tabulator- (
\t), Zeilenumbruch- (\n) und Wagenrücklaufzeichen (\r) werden überall in der Eingabe entfernt — z. B.'/\t/evil.example/x','/\n/evil.example/x','htt\tps://evil.example/x'.
Da diese URLs nicht auf /^(?:https?:)?\/\//i matchen, behandelt xsrfInterceptorFn sie als relative Same-Origin-URLs und fügt den X-XSRF-TOKEN-Header an, während der Browser die Anfrage an den Cross-Origin-Host (evil.example) auflöst und versendet.
Hinweis: In Angular 21.0.3+ und 22.x wurde der reguläre Ausdruck in #65683 durch einen WHATWG-new URL(req.url, locationOrigin)-Origin-Vergleich ersetzt; diese waren bereits nicht betroffen. Der LTS-Zweig 20.3.x behielt den regulären Ausdruck jedoch bis 20.3.34 bei.
Auswirkungen
Das Abfließen des Tokens umgeht den integrierten XSRF-Schutz von Angular auf betroffenen Versionen, wodurch ein Angreifer den gültigen X-XSRF-TOKEN-Header des Nutzers abfangen kann, sofern sein Server die Anfrage und den benutzerdefinierten Header über CORS zulässt. Sobald das Token erlangt wurde, kann der Angreifer Cross-Site Request Forgery (CSRF)-Angriffe gegen die Sitzung des Opfers durchführen.
Angriffsvoraussetzungen
- In der Angular-Anwendung des Opfers muss der XSRF-Schutz aktiviert sein (standardmäßig in
HttpClientaktiviert). - Der Angreifer muss in der Lage sein, die Anwendung dazu zu bringen, eine zustandsverändernde HTTP-Anfrage (z. B.
POST,PUT,DELETE,PATCH) an eine von ihm kontrollierte URL (wie/\attacker.example/apioder//attacker.example/api) zu senden.
Patches
Das Problem wird behoben, indem der Origin der Anfrage-URL mit dem Standardkonstruktor URL (new URL(req.url, locationOrigin)) geparst und mit dem aktuellen Origin der Anwendung verglichen wird.
21.0.3(und alle22.x-Releases)20.3.34
Workarounds
Falls ein sofortiges Upgrade auf eine gepatchte Version nicht möglich ist:
- Validieren und normalisieren Sie ausgehende Anfrage-URLs mit
new URL(url, window.location.origin)und verifizieren SieparsedUrl.origin === window.location.origin, bevor dynamische URLs an veränderndeHttpClient-Anfragen übergeben werden. - Vermeiden Sie die Übergabe von nicht vertrauenswürdigen oder benutzergesteuerten URLs an verändernde
HttpClient-Methoden.
Was zu tun ist
Aktualisieren Sie auf eine der behobenen Versionen:
21.0.3(und alle nachfolgenden22.x-Releases)20.3.34
Die Schwachstelle wird behoben, indem der Origin der Anfrage-URL mittels URL (new URL(req.url, locationOrigin)) geparst und mit dem Origin der Anwendung abgeglichen wird.
Wenn ein direktes Upgrade nicht umsetzbar ist:
- Validieren und normalisieren Sie ausgehende URLs über
new URL(url, window.location.origin)und stellen Sie sicher, dassparsedUrl.origin === window.location.originerfüllt ist, bevor dynamische URLs an zustandsveränderndeHttpClient-Anfragen übergeben werden. - Übergeben Sie keine nicht vertrauenswürdigen URLs an verändernde Methoden von
HttpClient.
Betroffene Software
Klicken Sie auf eine Technologie, um alle zugehörigen Schwachstellen anzuzeigen.
| Plattform | Paket | Anfällige Versionen | Behoben in |
|---|---|---|---|
| npm-Paket | @angular/common | >= 21.0.0, < 21.0.3, >= 20.0.0, < 20.3.34, <= 19.2.25 | 21.0.3, 20.3.34 |
Verweise
- https://github.com/angular/angular/security/advisories/GHSA-jfgx-762w-99vr
- https://github.com/angular/angular/pull/65683
- https://github.com/angular/angular/pull/71295
- https://github.com/angular/angular/commit/0659d11c854c9c6b886a2e925afef98d70bb005f
- https://github.com/angular/angular/commit/20474d3f0fd7c64071add6e84acf720627e5c19b
- https://github.com/angular/angular/commit/933ce817d53e25926844fa56af8230816763d08e
- https://github.com/angular/angular
- CVSS-Vektor
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N- Schwäche (CWE)
CWE-201, CWE-359- Plattform
- npm
- Paket
@angular/common- Veröffentlicht
- 20.10.2026
- Aktualisiert
- 20.10.2026 23:22
Quellen und Lizenzen · Von DockRay bearbeitet oder übersetzt; Rechte und Lizenzen der Quellen bleiben erhalten.
OSV / GitHub Advisory Database - GHSA-jfgx-762w-99vr - CC BY 4.0
Schwachstellenhistorie: @angular/common
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
- 8
- Erste → letzte
- 11.2025 10.2026
- Ohne Fix
- 0
- In Angriffen ausgenutzt
- 0
Verteilung nach Schweregrad
- Hoch 6
- Mittel 2
Veröffentlichungen pro Jahr
- 2025: 1
- 2026: 7
-
@angular/common: XSRF-Token-Offenlegung durch URL-Parsing-Diskrepanz im Angular HTTP-Client (Unvollständiger Fix für CVE-2025-66035) 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.