CVE-2026-50170: @angular/common Information Leak Vulnerability

HIGH
Advisory Identifier: GHSA-q6f4-qqrg-jv6x
CVSS 7.5
CWE-524
Published
Advisory Summary

CVE-2026-50170 is a HIGH (CVSS 7.5) information leak vulnerability (CWE-524: Use of Cache Containing Sensitive Information) affecting @angular/common libraries in the npm ecosystem. The issue involves information leak via default caching of credentialed requests in httptransfercache. Remediation is available by upgrading affected packages to version 22.0.0-rc.2, 20.3.22, 19.2.23, 21.2.15.

CVE-2026-50170 at a Glance

CVE Identifier CVE-2026-50170
GHSA Identifier GHSA-q6f4-qqrg-jv6x
Severity HIGH
CVSS v3.1 Base Score 7.5
CWE Classification CWE-524: Use of Cache Containing Sensitive Information
Affected Product @angular/common
Package Ecosystem npm
Published Date
Last Updated

Security Impact

CVSS: 7.5

The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N).

Attack Vector Network (AV:N)
Attack Complexity Low (AC:L)
Privileges Required None (PR:N)
User Interaction None (UI:N)
Scope Unchanged (S:U)
Confidentiality High (C:H)
Integrity None (I:N)
Availability None (A:N)

How to Fix CVE-2026-50170

To remediate this vulnerability, upgrade all affected @angular/common dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

@angular/common fixed: 22.0.0-rc.2
npm install @angular/common@22.0.0-rc.2
@angular/common fixed: 20.3.22
npm install @angular/common@20.3.22
@angular/common fixed: 19.2.23
npm install @angular/common@19.2.23
@angular/common fixed: Latest secure release
npm install @angular/common@Latest secure release
@angular/common fixed: 21.2.15
npm install @angular/common@21.2.15
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

npm ls @angular/common

How to Check if You Are Affected

To determine whether your Node.js application is affected by CVE-2026-50170, inspect your project dependencies using npm:

npm ls @angular/common

Analyze the terminal output to locate any version of @angular/common in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 22.0.0-rc.2), your application is affected.

Note: The npm ls @angular/common command inspects dependencies declared in your package.json and lockfile; it does not perform automated runtime dynamic scanning.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-524: Use of Cache Containing Sensitive Information, where the code uses a cache that contains sensitive information, but the cache can be read by an actor outside of the intended control sphere. In @angular/common, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

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

CVE-2026-50170 Affected @angular/common Versions

5 component(s)
Fixed Versions:
22.0.0-rc.220.3.2219.2.2321.2.15
Product / Package Ecosystem Affected Versions Fixed Version
@angular/common
npm
≥ 22.0.0-next.0
< 22.0.0-rc.2
22.0.0-rc.2
@angular/common
npm
≥ 20.0.0-next.0
< 20.3.22
20.3.22
@angular/common
npm
≥ 19.0.0-next.0
< 19.2.23
19.2.23
@angular/common
npm
≤ 18.2.14
@angular/common
npm
≥ 21.0.0-next.0
< 21.2.15
21.2.15

References

Frequently Asked Questions

What is CVE-2026-50170?
CVE-2026-50170 is a security vulnerability in @angular/common involving Information Leak via Default Caching of Credentialed Requests in HttpTransferCache under CWE-524: Use of Cache Containing Sensitive Information.
Which @angular/common versions are affected?
Affected versions include releases prior to 22.0.0-rc.2, 20.3.22, 19.2.23, 21.2.15 across affected packages: @angular/common.
What version fixes CVE-2026-50170?
Upgrading to 22.0.0-rc.2, 20.3.22, 19.2.23, 21.2.15 (or the latest patched release for your respective branch) resolves the vulnerability.
Is @angular/common affected?
Yes, @angular/common is affected in releases prior to 22.0.0-rc.2, 20.3.22, 19.2.23, Latest secure release, 21.2.15. Upgrade your dependency to 22.0.0-rc.2, 20.3.22, 19.2.23, Latest secure release, 21.2.15 or later.
What is the CVSS score of CVE-2026-50170?
CVE-2026-50170 has a CVSS v3.1 base score of 7.5 (HIGH) with vector string CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N.
What CWE is associated with CVE-2026-50170?
CVE-2026-50170 is classified under CWE-524: Use of Cache Containing Sensitive Information (The code uses a cache that contains sensitive information, but the cache can be read by an actor outside of the intended control sphere.).
How can I check npm dependencies for CVE-2026-50170?
Run the dependency tree command: 'npm ls @angular/common'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-q6f4-qqrg-jv6x",
  "modified" : "2026-07-15T22:05:10Z",
  "published" : "2026-06-15T16:51:53Z",
  "aliases" : [ "CVE-2026-50170" ],
  "summary" : "@angular/common: Information Leak via Default Caching of Credentialed Requests in HttpTransferCache",
  "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`.\n\nHowever, 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.\n\n### Impact\n\nSuccessful exploitation allows an unauthenticated attacker to obtain sensitive, user-specific information of other authenticated users. This occurs when:\n\n* The SSR-rendered HTML containing the cached private data is stored in a shared cache (e.g., CDN, reverse proxy).  \n* Subsequent requests for the same page receive the cached HTML containing the first user's private data.\n\n### Attack Preconditions\n\n* **SSR and Hydration Enabled:** The Angular application must be configured to use Server-Side Rendering and hydration (e.g., using `provideClientHydration()`).  \n* **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.  \n* **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.\n\n### Patches\n- 22.0.0-rc.2\n- 21.2.15\n- 20.3.22\n- 19.2.23",
  "severity" : [ {
    "type" : "CVSS_V3",
    "score" : "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N"
  }, {
    "type" : "CVSS_V4",
    "score" : "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@angular/common"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "22.0.0-next.0"
      }, {
        "fixed" : "22.0.0-rc.2"
      } ]
    } ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@angular/common"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "20.0.0-next.0"
      }, {
        "fixed" : "20.3.22"
      } ]
    } ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@angular/common"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "19.0.0-next.0"
      }, {
        "fixed" : "19.2.23"
      } ]
    } ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@angular/common"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0"
      }, {
        "last_affected" : "18.2.14"
      } ]
    } ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@angular/common"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "21.0.0-next.0"
      }, {
        "fixed" : "21.2.15"
      } ]
    } ]
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/angular/angular/security/advisories/GHSA-q6f4-qqrg-jv6x"
  }, {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-50170"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/angular/angular/pull/67964"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/angular/angular"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-524" ],
    "severity" : "HIGH",
    "github_reviewed" : true,
    "github_reviewed_at" : "2026-06-15T16:51:53Z",
    "nvd_published_at" : "2026-06-22T18:16:42Z"
  }
}