Vulnerability GHSA-jhpw-976m-542j

High Risk
HIGH RISK
CVSS Score: 8.0
Score Range: 7.0–8.9
High severity vulnerabilities (CVSS 7.0–8.9). Serious vulnerabilities that should be prioritized soon after critical fixes.
2 months ago
August 03, 2026 at 03:59 PM UTC
Angular: Cache-Key Ambiguity in HttpTransferCache Leading to Cross-Request Response Reuse and State Poisoning
0.0.0-0 - 20.3.26 and 21.0.0-next.0 - 21.2.18 and 22.0.0-next.0 - 22.0.1
0.0.0-0 - 20.3.26 and 21.0.0-next.0 - 21.2.18 and 22.0.0-next.0 - 22.0.1

Summary

Angular: Cache-Key Ambiguity in HttpTransferCache Leading to Cross-Request Response Reuse and State Poisoning

Details

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()
    )
  ]
};

Related Vulnerabilities

Other vulnerabilities affecting the same packages

Medium Risk
7 hours ago
@angular/common: XSRF Token Leakage via URL Parsing Discrepancy in Angular HTTP Client (Incomplete fix for CVE-2025-66035)
0.0.0-0 - 19.2.25 and 20.0.0 - 20.3.33 and 21.0.0 - 21.0.2 GHSA-jfgx-762w-99vr
0.0.0-0 - 19.2.25 and 20.0.0 - 20.3.33 and 21.0.0 - 21.0.2 GHSA-jfgx-762w-99vr
Medium Risk
1 month ago
Angular: Information Leak via `HttpTransferCache` Bypass When Using `withRequestsMadeViaParent`
0.0.0-0 - 19.2.25 and 20.0.0 - 20.3.27 and 21.0.0 - 21.2.19 and 22.0.0 - 22.1.0 GHSA-p297-fm68-3q8c
0.0.0-0 - 19.2.25 and 20.0.0 - 20.3.27 and 21.0.0 - 21.2.19 and 22.0.0 - 22.1.0 GHSA-p297-fm68-3q8c
High Risk
4 months ago
@angular/common: Denial of Service (DoS) via OOM in Date Formatting (formatDate)
0.0.0-0 - 20.3.24 and 21.0.0-next.0 - 21.2.16 and 22.0.0-next.0 - 22.0.0 GHSA-48r7-hpm6-gfxm
0.0.0-0 - 20.3.24 and 21.0.0-next.0 - 21.2.16 and 22.0.0-next.0 - 22.0.0 GHSA-48r7-hpm6-gfxm
Medium Risk
4 months ago
@angular/common: Weak 32-Bit Cache Key Hashing in `HttpTransferCache` Leading to Cross-Request Data Leakage and State Poisoning
0.0.0-0 - 20.3.24 and 21.0.0-next.0 - 21.2.16 and 22.0.0-next.0 - 22.0.0 GHSA-39pv-4j6c-2g6v
0.0.0-0 - 20.3.24 and 21.0.0-next.0 - 21.2.16 and 22.0.0-next.0 - 22.0.0 GHSA-39pv-4j6c-2g6v
Medium Risk
4 months ago
@angular/common: Denial of Service (DoS) via OOM in Number Formatting (digitsInfo)
0.0.0-0 - 19.2.22 and 20.0.0-next.0 - 20.3.21 and 21.0.0-next.0 - 21.2.14 and 22.0.0-next.0 - 22.0.0-rc.1 GHSA-p3vc-36g9-x9gr
0.0.0-0 - 19.2.22 and 20.0.0-next.0 - 20.3.21 and 21.0.0-next.0 - 21.2.14 and 22.0.0-next.0 - 22.0.0-rc.1 GHSA-p3vc-36g9-x9gr
View all vulnerabilities for these packages

Impacted packages

Timeline

Published
2 months ago
August 03, 2026 at 03:59 PM UTC
Fixed (22.0.2)
4 months ago
June 17, 2026 at 09:08 PM UTC
Fixed (20.3.27)
2 months ago
July 29, 2026 at 07:52 PM UTC
Fixed (21.2.19)
2 months ago
July 29, 2026 at 08:45 PM UTC
Last Modified
2 months ago
August 03, 2026 at 04:26 PM UTC