CVE-2026-101896 json
Angular: Denial of Service via Numeric URL Matrix Parameters in Server-Side Rendering (SSR)
published 2026-09-30 39 d ago modified 2026-10-20 20 d ago also GHSA-ff3f-86qr-9cv3 , EUVD-2026-101147
- cvss
- 8.2
- version 4.0, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.9%
- EPSS 0.9% chance of exploitation in 30 days, percentile 60%
- public exploits
- 0
- none known
Summary
Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript and other languages. Prior to 20.3.32, 21.2.24, and 22.2.0, the @angular/router URL parser stores numeric matrix parameter names and numeric outlet names as properties on initially empty JavaScript objects during Node.js server-side rendering. V8 can interpret these URL-derived keys as array indices and allocate dense backing stores sized to high numeric values, so repeated small path segments cause disproportionate per-segment heap consumption. An unauthenticated attacker can send overlapping requests containing repeated numeric matrix parameters when SSR is enabled, the router directly parses the request URL, and upstream proxies allow semicolons and multiple path segments, eventually exhausting the Node.js old-space heap and terminating the SSR worker. Pure client-side Angular applications are not affected. This issue is fixed in versions 20.3.32, 21.2.24, and 22.2.0.
Patch / fix
- npm @angular/router 20.3.32, 21.2.24, 22.2.0
- github.com/angular/angular@03872a8 commit
- github.com/angular/angular@5af6121 commit
- github.com/angular/angular@ddfe210 commit
- github.com/angular/angular#70717 pull request
- github.com/angular/angular/releases/tag/v20.3.32 release
- github.com/angular/angular/releases/tag/v21.2.24 release
- github.com/angular/angular/releases/tag/v22.2.0 release
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-2026-101896 updated cvss 7.5
@angular/router: @angular/router: Denial of Service via numeric matrix parameters during Server-Side Rendering
-
Red Hat All currently supported Red Hat productsnot affected: vulnerable code not present
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
- 20 d ago
Exploit prediction
0.91% chance of exploitation in the next 30 days, higher than 60% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 4.0 | 8.2 | CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N |
| CNA | 4.0 | 8.2 | CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/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/router | >=22.0.0, <22.2.0 >=21.0.0, <21.2.24 >=20.0.0, <20.3.32 <=19.2.25 |
22.2.0 21.2.24 20.3.32 |
Affected products
- angular angular
- @angular router
Classification
References
-
github.com
/angular/angular/pull/70717
web
-
github.com
/angular/angular/commit/03872a80bcf1c89b2b04cdd3f444b2ee954da583
web
-
github.com
/angular/angular/commit/5af61216eab8bf4a6697a1d79bda3d857c06f89d
web
-
github.com
/angular/angular/commit/ddfe21072ba32ca4cd9d7d3c6b7df66af81d58c4
web
-
github.com
/angular/angular/security/advisories/GHSA-ff3f-86qr-9cv3
web
-
github.com
/angular/angular/issues/70716
web
- github.com /angular/angular/releases/tag/v20.3.32
- github.com /angular/angular/releases/tag/v21.2.24
- github.com /angular/angular/releases/tag/v22.2.0
-
github.com
/angular/angular
package
Sources
- CVE List CVE-2026-101896
- GitHub Advisory GHSA-ff3f-86qr-9cv3
- NVD CVE-2026-101896
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.