Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/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
Network vector as attack is HTTP-based; AC:H because SSR, hydration, and colliding parameter usage must all coincide; PR:N as attacker sends unauthenticated request; high confidentiality impact from authorization bypass, low integrity from state poisoning, no availability impact.
Primary rating from Vendor (https://github.com/angular/angular).
CVSS VectorVendor: https://github.com/angular/angular
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/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
Lifecycle Timeline
3DescriptionCVE.org
Angular's HttpTransferCache caches HTTP requests made during Server-Side Rendering (SSR) so that they can be reused during client-side hydration.
During SSR, HttpTransferCache previously generated identical key material for distinct request parameters when repeated values were present because repeated values were joined with commas:
new HttpParams().set('role', 'user,admin')
new HttpParams().append('role', 'user').append('role', 'admin')Both requests previously serialized as role=user,admin, allowing distinct HttpClient requests to produce the same transfer-cache key material.
Impact
In an SSR application, this cache-key ambiguity can make a later security-sensitive HttpClient request receive the response from an earlier semantically different request in the same render. For example, an attacker-influenced scalar-comma request can be cached and then replayed as the response for a trusted repeated-param authorization or data request to the same URL. As a result, Angular's server-rendered output can be based on the wrong backend response because the trusted request is not dispatched. This can lead to:
- State Poisoning: Using incorrect or attacker-influenced cached responses for subsequent application logic.
- Cross-Request Response Reuse: Reusing cached responses across requests with semantically different parameters.
Patched Versions
- 22.0.2
- 21.2.19
- 20.3.27
Workarounds
If you cannot upgrade immediately, configure your HttpClient requests to skip transfer caching for sensitive endpoints where repeated parameter keys are used:
this.http.get('/api/resource', {
transferCache: false
});Alternatively, disable the HTTP transfer cache globally in your application bootstrap config:
import { provideClientHydration, withNoHttpTransferCache } from '@angular/platform-browser';
export const appConfig = {
providers: [
provideClientHydration(
withNoHttpTransferCache()
)
]
};AnalysisAI
HttpTransferCache key collision in Angular's Server-Side Rendering subsystem enables cache poisoning by exploiting identical serialization of scalar comma-separated query parameters and semantically distinct repeated query parameters against the same endpoint. Angular SSR applications using client-side hydration across versions 20.x, 21.x, and 22.x - and 19.x with no available patch - are at risk of having security-sensitive HttpClient responses silently replaced by earlier attacker-influenced cached responses, bypassing trusted backend authorization calls entirely. …
Unlock full vulnerability intelligence
- Risk assessment & exploitation conditions
- Attack chain visualization
- Remediation with exact patch versions
- Threat intelligence from 22 sources
- Personal watchlist & email alerts
Free forever · No credit card required
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata
Vulnerability AssessmentAI
| Exploitation | Exploitation requires all of the following conditions to be simultaneously true: the Angular application must be configured for Server-Side Rendering using @angular/ssr; client-side hydration must be enabled via provideClientHydration() (the standard SSR setup); HttpTransferCache must not have been disabled either globally via withNoHttpTransferCache() or per-request via { transferCache: false }; the application must expose at least one endpoint where both a scalar comma-delimited parameter variant and a repeated multi-value parameter variant of the same key are valid and semantically different; and the attacker must be able to cause or predict that the scalar-comma variant request is processed and cached before the security-sensitive repeated-param request during the same SSR render cycle. … Additional conditions and limiting factors are described in the full assessment. |
| Risk Assessment | Real-world risk is moderate-to-high for applications that use Angular SSR with HttpTransferCache and rely on repeated query parameters for authorization or data scoping decisions. … Full risk analysis with EPSS, KEV, and SSVC signal comparison available after sign-in. |
| Exploit Scenario | An attacker identifies an Angular SSR application that uses repeated query parameters to scope an authorization check, such as GET /api/items?role=user&role=admin. The attacker sends a prior request to the same URL with the scalar comma variant GET /api/items?role=user,admin containing attacker-controlled data, causing the SSR cache to store that response under the colliding key. … |
| Remediation | Upgrade @angular/common to the appropriate patched release: 22.0.2 for 22.x applications, 21.2.19 for 21.x applications, or 20.3.27 for 20.x applications, as documented in the GitHub Advisory at https://github.com/angular/angular/security/advisories/GHSA-jhpw-976m-542j. … Detailed patch versions, workarounds, and compensating controls in full report. |
Recommended ActionAI
Within 24 hours, inventory all applications using Angular SSR versions 19.x through 22.x and identify current version deployments. …
Sign in for detailed remediation steps and compensating controls.
Threat intelligence, references, and detailed analysis are available after sign-in.
Same technique Information Disclosure
View allVendor StatusVendor
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-52343
GHSA-jhpw-976m-542j