CVE-2025-59052 json
Angular SSR: Global Platform Injector Race Condition Leads to Cross-Request Data Leakage
published 2025-09-10 13 mo ago modified 2026-06-17 4 mo ago also EUVD-2025-33972 , GHSA-68x2-mx4q-78m7
- cvss
- 7.1
- version 4.0, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.4%
- EPSS 0.4% chance of exploitation in 30 days, percentile 29%
- public exploits
- 0
- none known
Summary
Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript and other languages. Angular uses a DI container (the "platform injector") to hold request-specific state during server-side rendering. For historical reasons, the container was stored as a JavaScript module-scoped global variable. When multiple requests are processed concurrently, they could inadvertently share or overwrite the global injector state. In practical terms, this can lead to one request responding with data meant for a completely different request, leaking data or tokens included on the rendered page or in response headers. As long as an attacker had network access to send any traffic that received a rendered response, they may have been able to send a large number of requests and then inspect the responses for information leaks. The APIs `bootstrapApplication`, `getPlatform`, and `destroyPlatform` were vulnerable and required SSR-only breaking changes. The issue has been patched in all active release lines as well as in the v21 prerelease. Patched packages include `@angular/platform-server` 21.0.0-next.3, 20.3.0, 19.2.15, and 18.2.14 and `@angular/ssr` 21.0.0-next.3, 20.3.0, 19.2.16, and 18.2.21. Several workarounds are available. Disable SSR via Server Routes or builder options, remove any asynchronous behavior from custom `bootstrap` functions, remove uses of `getPlatform()` in application code, and/or ensure that the server build defines `ngJitMode` as false.
Patch / fix
- npm @angular/platform-server 18.2.14, 19.2.15, 20.3.0, 21.0.0-next.3
- npm @angular/ssr 18.2.21, 19.2.16, 20.3.0, 21.0.0-next.3
- angular angular 18.2.14, 18.2.21, 19.2.15, 19.2.16, 20.3.0, 21.0.0-next.3
- github.com/angular/angular-cli#31108 pull request
- github.com/angular/angular#63562 pull request
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2025-59052 updated cvss 7.1
@angular/ssr: @angular/platform-server: @nguniversal/common: Angular Cross-Request Data Leakage
-
Red Hat Enterprise Linux 8 dotnet5.0-build-reference-packagesaffected: workaround, no fix planned “Will not fix”
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- yes
- Technical impact
- partial
- Assessed
- 13 mo ago
Exploit prediction
0.36% chance of exploitation in the next 30 days, higher than 29% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 4.0 | 7.1 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N |
| CNA | 4.0 | 7.1 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| npm | @angular/platform-server | >=16.0.0-next.0, <18.2.14 >=20.0.0-next.0, <20.3.0 >=19.0.0-next.0, <19.2.15 >=21.0.0-next.0, <21.0.0-next.3 |
18.2.14 20.3.0 19.2.15 21.0.0-next.3 |
| npm | @angular/ssr | >=17.0.0-next.0, <18.2.21 >=19.0.0-next.0, <19.2.16 >=20.0.0-next.0, <20.3.0 >=21.0.0-next.0, <21.0.0-next.3 |
18.2.21 19.2.16 20.3.0 21.0.0-next.3 |
| npm | @nguniversal/common | >=16.0.0-next.0, <=16.2.0 |
no fix listed |
Affected products
- angular angular
Classification
- Weakness
-
- CWE-362 Concurrent Execution using Shared Resource with Improper Synchronization
References
Sources
- CVE List CVE-2025-59052
- GitHub Advisory GHSA-68x2-mx4q-78m7
- NVD CVE-2025-59052
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.
CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.