HighGHSA-q6f4-qqrg-jv6xCVE-2026-50170

@angular/common: Information Leak via Default Caching of Credentialed Requests in HttpTransferCache

Published 15 Jun 2026 · Updated 10 Sept 2026

Affected packages

Affected
>=22.0.0-next.0 <22.0.0-rc.2
Fixed in
22.0.0-rc.2
Update to the fixed version for your release line, for example:npm install @angular/common@22.0.0-rc.2
Affected
>=20.0.0-next.0 <20.3.22
Fixed in
20.3.22
Update to the fixed version for your release line, for example:npm install @angular/common@20.3.22
Affected
>=19.0.0-next.0 <19.2.23
Fixed in
19.2.23
Update to the fixed version for your release line, for example:npm install @angular/common@19.2.23
Affected
<=18.2.14
Fixed in
No fix released
Affected
>=21.0.0-next.0 <21.2.15
Fixed in
21.2.15
Update to the fixed version for your release line, for example:npm install @angular/common@21.2.15

Details

A vulnerability was discovered in @angular/common when Server-Side Rendering (SSR) and hydration are enabled. The HttpTransferCache utility optimizes hydration by caching outgoing HTTP requests performed during SSR and transferring the cached state to the client-side application via TransferState.

However, the caching mechanism fails to inspect the withCredentials flag or the Cookie header of outgoing requests. As a result, credentialed, user-specific responses may be cached by default in the shared TransferState payload. When these responses are serialized into the HTML, any caching layer (such as a CDN, reverse proxy, or shared server cache) that caches the SSR-rendered HTML page could inadvertently cache and leak one user's private data to other users, leading to a high-severity information disclosure vulnerability.

Impact

Successful exploitation allows an unauthenticated attacker to obtain sensitive, user-specific information of other authenticated users. This occurs when:

  • The SSR-rendered HTML containing the cached private data is stored in a shared cache (e.g., CDN, reverse proxy).
  • Subsequent requests for the same page receive the cached HTML containing the first user's private data.

Attack Preconditions

  • SSR and Hydration Enabled: The Angular application must be configured to use Server-Side Rendering and hydration (e.g., using provideClientHydration()).
  • Credentialed Requests during SSR: The application must perform HTTP requests that require user-specific authentication (using cookies or withCredentials: true) during the initial server-side render.
  • Shared Caching: The application's HTML responses must be cached by a shared caching layer (CDN, reverse proxy, or server-side cache) without proper cache-control headers to distinguish authenticated users.

Patches

  • 22.0.0-rc.2
  • 21.2.15
  • 20.3.22
  • 19.2.23

Is GHSA-q6f4-qqrg-jv6x in any of your client repos?

Checking one package by hand is fine. Checking it across forty client projects is not. NPMscan reads the lockfiles in every GitHub repo you pick, finds each project with an affected @angular/common, and gives you the command that fixes it.

References

Advisory data from OSV.dev (opens OSV.dev in a new tab), refreshed daily.