Search
Find a vulnerability
Search criteria
2 vulnerabilities found for router by @angular
CVE-2026-101896 (GCVE-0-2026-101896)
Vulnerability from nvd – Published: 2026-10-14 15:05 – Updated: 2026-10-14 15:05
VLAI
EPSS
VEX
Title
Angular: Denial of Service via Numeric URL Matrix Parameters in Server-Side Rendering (SSR)
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.
Severity
CWE
Assigner
References
9 references
| URL | Tags |
|---|---|
| https://github.com/angular/angular/security/advis… | x_refsource_CONFIRM |
| https://github.com/angular/angular/issues/70716 | x_refsource_MISC |
| https://github.com/angular/angular/pull/70717 | x_refsource_MISC |
| https://github.com/angular/angular/commit/03872a8… | x_refsource_MISC |
| https://github.com/angular/angular/commit/5af6121… | x_refsource_MISC |
| https://github.com/angular/angular/commit/ddfe210… | x_refsource_MISC |
| https://github.com/angular/angular/releases/tag/v… | x_refsource_MISC |
| https://github.com/angular/angular/releases/tag/v… | x_refsource_MISC |
| https://github.com/angular/angular/releases/tag/v22.2.0 | x_refsource_MISC |
Impacted products
{
"containers": {
"cna": {
"affected": [
{
"product": "angular",
"vendor": "angular",
"versions": [
{
"status": "affected",
"version": "\u003c= 19.2.25"
},
{
"status": "affected",
"version": "\u003e= 20.0.0, \u003c 20.3.32"
},
{
"status": "affected",
"version": "\u003e= 21.0.0, \u003c 21.2.24"
},
{
"status": "affected",
"version": "\u003e= 22.0.0, \u003c 22.2.0"
}
]
},
{
"product": "router",
"vendor": "@angular",
"versions": [
{
"status": "affected",
"version": "\u003c= 19.2.25"
},
{
"status": "affected",
"version": "\u003e= 20.0.0, \u003c 20.3.32"
},
{
"status": "affected",
"version": "\u003e= 21.0.0, \u003c 21.2.24"
},
{
"status": "affected",
"version": "\u003e= 22.0.0, \u003c 22.2.0"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "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."
}
],
"metrics": [
{
"cvssV4_0": {
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"attackVector": "NETWORK",
"baseScore": 8.2,
"baseSeverity": "HIGH",
"privilegesRequired": "NONE",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "NONE",
"vectorString": "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",
"version": "4.0",
"vulnAvailabilityImpact": "HIGH",
"vulnConfidentialityImpact": "NONE",
"vulnIntegrityImpact": "NONE"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-400",
"description": "CWE-400: Uncontrolled Resource Consumption",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-770",
"description": "CWE-770: Allocation of Resources Without Limits or Throttling",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-14T15:05:42.934Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/angular/angular/security/advisories/GHSA-ff3f-86qr-9cv3",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/angular/angular/security/advisories/GHSA-ff3f-86qr-9cv3"
},
{
"name": "https://github.com/angular/angular/issues/70716",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/angular/angular/issues/70716"
},
{
"name": "https://github.com/angular/angular/pull/70717",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/angular/angular/pull/70717"
},
{
"name": "https://github.com/angular/angular/commit/03872a80bcf1c89b2b04cdd3f444b2ee954da583",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/angular/angular/commit/03872a80bcf1c89b2b04cdd3f444b2ee954da583"
},
{
"name": "https://github.com/angular/angular/commit/5af61216eab8bf4a6697a1d79bda3d857c06f89d",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/angular/angular/commit/5af61216eab8bf4a6697a1d79bda3d857c06f89d"
},
{
"name": "https://github.com/angular/angular/commit/ddfe21072ba32ca4cd9d7d3c6b7df66af81d58c4",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/angular/angular/commit/ddfe21072ba32ca4cd9d7d3c6b7df66af81d58c4"
},
{
"name": "https://github.com/angular/angular/releases/tag/v20.3.32",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/angular/angular/releases/tag/v20.3.32"
},
{
"name": "https://github.com/angular/angular/releases/tag/v21.2.24",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/angular/angular/releases/tag/v21.2.24"
},
{
"name": "https://github.com/angular/angular/releases/tag/v22.2.0",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/angular/angular/releases/tag/v22.2.0"
}
],
"source": {
"advisory": "GHSA-ff3f-86qr-9cv3",
"discovery": "UNKNOWN"
},
"title": "Angular: Denial of Service via Numeric URL Matrix Parameters in Server-Side Rendering (SSR)"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-101896",
"datePublished": "2026-10-14T15:05:42.934Z",
"dateReserved": "2026-09-28T15:55:37.906Z",
"dateUpdated": "2026-10-14T15:05:42.934Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-101896 (GCVE-0-2026-101896)
Vulnerability from cvelistv5 – Published: 2026-10-14 15:05 – Updated: 2026-10-14 15:05
VLAI
EPSS
VEX
Title
Angular: Denial of Service via Numeric URL Matrix Parameters in Server-Side Rendering (SSR)
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.
Severity
CWE
Assigner
References
9 references
| URL | Tags |
|---|---|
| https://github.com/angular/angular/security/advis… | x_refsource_CONFIRM |
| https://github.com/angular/angular/issues/70716 | x_refsource_MISC |
| https://github.com/angular/angular/pull/70717 | x_refsource_MISC |
| https://github.com/angular/angular/commit/03872a8… | x_refsource_MISC |
| https://github.com/angular/angular/commit/5af6121… | x_refsource_MISC |
| https://github.com/angular/angular/commit/ddfe210… | x_refsource_MISC |
| https://github.com/angular/angular/releases/tag/v… | x_refsource_MISC |
| https://github.com/angular/angular/releases/tag/v… | x_refsource_MISC |
| https://github.com/angular/angular/releases/tag/v22.2.0 | x_refsource_MISC |
Impacted products
{
"containers": {
"cna": {
"affected": [
{
"product": "angular",
"vendor": "angular",
"versions": [
{
"status": "affected",
"version": "\u003c= 19.2.25"
},
{
"status": "affected",
"version": "\u003e= 20.0.0, \u003c 20.3.32"
},
{
"status": "affected",
"version": "\u003e= 21.0.0, \u003c 21.2.24"
},
{
"status": "affected",
"version": "\u003e= 22.0.0, \u003c 22.2.0"
}
]
},
{
"product": "router",
"vendor": "@angular",
"versions": [
{
"status": "affected",
"version": "\u003c= 19.2.25"
},
{
"status": "affected",
"version": "\u003e= 20.0.0, \u003c 20.3.32"
},
{
"status": "affected",
"version": "\u003e= 21.0.0, \u003c 21.2.24"
},
{
"status": "affected",
"version": "\u003e= 22.0.0, \u003c 22.2.0"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "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."
}
],
"metrics": [
{
"cvssV4_0": {
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"attackVector": "NETWORK",
"baseScore": 8.2,
"baseSeverity": "HIGH",
"privilegesRequired": "NONE",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "NONE",
"vectorString": "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",
"version": "4.0",
"vulnAvailabilityImpact": "HIGH",
"vulnConfidentialityImpact": "NONE",
"vulnIntegrityImpact": "NONE"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-400",
"description": "CWE-400: Uncontrolled Resource Consumption",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-770",
"description": "CWE-770: Allocation of Resources Without Limits or Throttling",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-14T15:05:42.934Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/angular/angular/security/advisories/GHSA-ff3f-86qr-9cv3",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/angular/angular/security/advisories/GHSA-ff3f-86qr-9cv3"
},
{
"name": "https://github.com/angular/angular/issues/70716",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/angular/angular/issues/70716"
},
{
"name": "https://github.com/angular/angular/pull/70717",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/angular/angular/pull/70717"
},
{
"name": "https://github.com/angular/angular/commit/03872a80bcf1c89b2b04cdd3f444b2ee954da583",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/angular/angular/commit/03872a80bcf1c89b2b04cdd3f444b2ee954da583"
},
{
"name": "https://github.com/angular/angular/commit/5af61216eab8bf4a6697a1d79bda3d857c06f89d",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/angular/angular/commit/5af61216eab8bf4a6697a1d79bda3d857c06f89d"
},
{
"name": "https://github.com/angular/angular/commit/ddfe21072ba32ca4cd9d7d3c6b7df66af81d58c4",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/angular/angular/commit/ddfe21072ba32ca4cd9d7d3c6b7df66af81d58c4"
},
{
"name": "https://github.com/angular/angular/releases/tag/v20.3.32",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/angular/angular/releases/tag/v20.3.32"
},
{
"name": "https://github.com/angular/angular/releases/tag/v21.2.24",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/angular/angular/releases/tag/v21.2.24"
},
{
"name": "https://github.com/angular/angular/releases/tag/v22.2.0",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/angular/angular/releases/tag/v22.2.0"
}
],
"source": {
"advisory": "GHSA-ff3f-86qr-9cv3",
"discovery": "UNKNOWN"
},
"title": "Angular: Denial of Service via Numeric URL Matrix Parameters in Server-Side Rendering (SSR)"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-101896",
"datePublished": "2026-10-14T15:05:42.934Z",
"dateReserved": "2026-09-28T15:55:37.906Z",
"dateUpdated": "2026-10-14T15:05:42.934Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}