GHSA-58c5-g7wp-6w37

Suggest an improvement
Source
https://github.com/advisories/GHSA-58c5-g7wp-6w37
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2025/11/GHSA-58c5-g7wp-6w37/GHSA-58c5-g7wp-6w37.json
JSON Data
https://api.osv.dev/v1/vulns/GHSA-58c5-g7wp-6w37
Aliases
Published
2025-11-26T23:18:50Z
Modified
2025-12-01T16:21:36.319696Z
Severity
  • 7.7 (High) CVSS_V4 - CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:H/SI:N/SA:N CVSS Calculator
Summary
Angular is Vulnerable to XSRF Token Leakage via Protocol-Relative URLs in Angular HTTP Client
Details

The vulnerability is a Credential Leak by App Logic that leads to the unauthorized disclosure of the Cross-Site Request Forgery (XSRF) token to an attacker-controlled domain.

Angular's HttpClient has a built-in XSRF protection mechanism that works by checking if a request URL starts with a protocol (http:// or https://) to determine if it is cross-origin. If the URL starts with protocol-relative URL (//), it is incorrectly treated as a same-origin request, and the XSRF token is automatically added to the X-XSRF-TOKEN header.

Impact

The token leakage completely bypasses Angular's built-in CSRF protection, allowing an attacker to capture the user's valid XSRF token. Once the token is obtained, the attacker can perform arbitrary Cross-Site Request Forgery (CSRF) attacks against the victim user's session.

Attack Preconditions

  1. The victim's Angular application must have XSRF protection enabled.
  2. The attacker must be able to make the application send a state-changing HTTP request (e.g., POST) to a protocol-relative URL (e.g., //attacker.com) that they control.

Patches

  • 19.2.16
  • 20.3.14
  • 21.0.1

Workarounds

Developers should avoid using protocol-relative URLs (URLs starting with //) in HttpClient requests. All backend communication URLs should be hardcoded as relative paths (starting with a single /) or fully qualified, trusted absolute URLs.

Database specific
{
    "severity": "HIGH",
    "nvd_published_at": "2025-11-26T23:15:49Z",
    "cwe_ids": [
        "CWE-201",
        "CWE-359"
    ],
    "github_reviewed": true,
    "github_reviewed_at": "2025-11-26T23:18:50Z"
}
References

Affected packages

npm / @angular/common

Package

Name
@angular/common
View open source insights on deps.dev
Purl
pkg:npm/%40angular/common

Affected ranges

Type
SEMVER
Events
Introduced
21.0.0-next.0
Fixed
21.0.1

npm / @angular/common

Package

Name
@angular/common
View open source insights on deps.dev
Purl
pkg:npm/%40angular/common

Affected ranges

Type
SEMVER
Events
Introduced
20.0.0-next.0
Fixed
20.3.14

npm / @angular/common

Package

Name
@angular/common
View open source insights on deps.dev
Purl
pkg:npm/%40angular/common

Affected ranges

Type
SEMVER
Events
Introduced
0Unknown introduced version / All previous versions are affected
Fixed
19.2.16