Impact
The vulnerability lies in Angular's @angular/common HttpClient xsrfInterceptorFn regex that fails to normalize URLs consistently with the browser's parser. With XSRF protection turned on, an attacker can craft a mutation request to a malicious URL containing crafted characters that cause the interceptor to treat the URL as same‑origin. The interceptor then appends the X‑XSRF‑TOKEN header, inadvertently leaking the victim's token. The attacker can use this token to forge requests from the victim's session, bypassing CSRF defenses.
Affected Systems
Angular developers using Angular versions prior to 20.3.34 and prior to 21.0.3 are affected. The flaw resides in the common HttpClient module; any application that relies on Angular's built‑in XSRF client side interceptor and has XSRF enabled is potentially vulnerable. The issue is fixed in Angular 20.3.34 and Angular 21.0.3 releases.
Risk and Exploitability
The reported CVSS score of 5.9 indicates moderate severity. EPSS is unavailable, and the issue is not listed in CISA's KEV catalogue, suggesting no widely known exploit yet. However, the flaw can be exploited by an attacker who can influence the victim’s application to send an XHR request to a crafted URL; such malicious URLs may be injected via user input or site‑content. Successful exploitation requires the victim’s browser to have XSRF protection enabled and the server to allow the custom X‑XSRF‑TOKEN header through CORS. In such a scenario, the attacker can retrieve the XSRF token and perform CSRF attacks against authenticated sessions.
OpenCVE Enrichment
Github GHSA