Angular: SSRF via protocol-relative and backslash URLs in Angular Platform-Server
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Attack requirements
- None
- Impact type
- Information disclosure
- Confidentiality · integrity · availability
- High · None · None
- Fix status
- Partial Red Hat: 9 without a fix
Attack profile from CVSS 4.0 · CNA. Fix status from CNA, GitHub and Red Hat. Impact type from CWE-918 and the CVSS impact.
Summary
Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript and other languages. Prior to versions 19.2.21, 20.3.19, 21.2.9, and 22.0.0-next.8, a Server-Side Request Forgery (SSRF) vulnerability exists in @angular/platform-server due to improper handling of URLs during Server-Side Rendering (SSR). When an attacker sends a request such as GET /\evil.com/ HTTP/1.1 the server engine (Express, etc.) passes the URL string to Angular’s rendering functions. Because the URL parser normalizes the backslash to a forward slash for HTTP/HTTPS schemes, the internal state of the application is hijacked to believe the current origin is evil.com. This misinterpretation tricks the application into treating the attacker’s domain as the local origin. Consequently, any relative HttpClient requests or PlatformLocation.hostname references are redirected to the attacker controlled server, potentially exposing internal APIs or metadata services. This issue has been patched in versions 19.2.21, 20.3.19, 21.2.9, and 22.0.0-next.8.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- Yes
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| angular | angular | before 19.2.21; 20.0.0-next.0 to before 20.3.19; 21.0.0-next.0 to before 21.2.9; 22.0.0-next.0 to before 22.0.0-next.8 | 19.2.21, 20.3.19, 21.2.9, 22.0.0-next.8 | Patch available | CNA |
| — | @angular/platform-server (npm) | 22.0.0-next.0 to before 22.0.0-next.8 | 22.0.0-next.8 | Patch available | GHSA-45q2-gjvg-7973 |
| — | @angular/platform-server (npm) | 21.0.0-next.0 to before 21.2.9 | 21.2.9 | Patch available | GHSA-45q2-gjvg-7973 |
| — | @angular/platform-server (npm) | 20.0.0-next.0 to before 20.3.19 | 20.3.19 | Patch available | GHSA-45q2-gjvg-7973 |
| — | @angular/platform-server (npm) | 19.0.0-next.0 to before 19.2.21 | 19.2.21 | Patch available | GHSA-45q2-gjvg-7973 |
| — | @angular/platform-server (npm) | up to 18.2.14 | — | No fix listed | GHSA-45q2-gjvg-7973 |
- angular Vendorangular Affected before 19.2.21; 20.0.0-next.0 to before 20.3.19; 21.0.0-next.0 to before 21.2.9; 22.0.0-next.0 to before 22.0.0-next.8 Fixed in 19.2.21, 20.3.19, 21.2.9, 22.0.0-next.8 Patch available CNA
- @angular/platform-server (npm) Vendor— Affected 22.0.0-next.0 to before 22.0.0-next.8 Fixed in 22.0.0-next.8 Patch available GHSA-45q2-gjvg-7973
- @angular/platform-server (npm) Vendor— Affected 21.0.0-next.0 to before 21.2.9 Fixed in 21.2.9 Patch available GHSA-45q2-gjvg-7973
- @angular/platform-server (npm) Vendor— Affected 20.0.0-next.0 to before 20.3.19 Fixed in 20.3.19 Patch available GHSA-45q2-gjvg-7973
- @angular/platform-server (npm) Vendor— Affected 19.0.0-next.0 to before 19.2.21 Fixed in 19.2.21 Patch available GHSA-45q2-gjvg-7973
- @angular/platform-server (npm) Vendor— Affected up to 18.2.14 Fixed in — No fix listed GHSA-45q2-gjvg-7973
CPE configurations NVD · 10
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:a:angular:angular:*:*:*:*:*:node.js:*:* | before 19.2.21; 20.0.0 to before 20.3.19; 21.0.0 to before 21.2.9 | Vulnerable | angular |
| cpe:2.3:a:angular:angular:22.0.0:next0:*:*:*:node.js:*:* | 22.0.0 next0 | Vulnerable | angular |
| cpe:2.3:a:angular:angular:22.0.0:next1:*:*:*:node.js:*:* | 22.0.0 next1 | Vulnerable | angular |
| cpe:2.3:a:angular:angular:22.0.0:next2:*:*:*:node.js:*:* | 22.0.0 next2 | Vulnerable | angular |
| cpe:2.3:a:angular:angular:22.0.0:next3:*:*:*:node.js:*:* | 22.0.0 next3 | Vulnerable | angular |
| cpe:2.3:a:angular:angular:22.0.0:next4:*:*:*:node.js:*:* | 22.0.0 next4 | Vulnerable | angular |
| cpe:2.3:a:angular:angular:22.0.0:next5:*:*:*:node.js:*:* | 22.0.0 next5 | Vulnerable | angular |
| cpe:2.3:a:angular:angular:22.0.0:next6:*:*:*:node.js:*:* | 22.0.0 next6 | Vulnerable | angular |
| cpe:2.3:a:angular:angular:22.0.0:next7:*:*:*:node.js:*:* | 22.0.0 next7 | Vulnerable | angular |
| cpe:2.3:a:angular:angular:22.0.0:next8:*:*:*:node.js:*:* | 22.0.0 next8 | Vulnerable | angular |
- cpe:2.3:a:angular:angular:*:*:*:*:*:node.js:*:* Versions before 19.2.21; 20.0.0 to before 20.3.19; 21.0.0 to before 21.2.9 Vulnerable ·angular
- cpe:2.3:a:angular:angular:22.0.0:next0:*:*:*:node.js:*:* Versions 22.0.0 next0 Vulnerable ·angular
- cpe:2.3:a:angular:angular:22.0.0:next1:*:*:*:node.js:*:* Versions 22.0.0 next1 Vulnerable ·angular
- cpe:2.3:a:angular:angular:22.0.0:next2:*:*:*:node.js:*:* Versions 22.0.0 next2 Vulnerable ·angular
- cpe:2.3:a:angular:angular:22.0.0:next3:*:*:*:node.js:*:* Versions 22.0.0 next3 Vulnerable ·angular
- cpe:2.3:a:angular:angular:22.0.0:next4:*:*:*:node.js:*:* Versions 22.0.0 next4 Vulnerable ·angular
- cpe:2.3:a:angular:angular:22.0.0:next5:*:*:*:node.js:*:* Versions 22.0.0 next5 Vulnerable ·angular
- cpe:2.3:a:angular:angular:22.0.0:next6:*:*:*:node.js:*:* Versions 22.0.0 next6 Vulnerable ·angular
- cpe:2.3:a:angular:angular:22.0.0:next7:*:*:*:node.js:*:* Versions 22.0.0 next7 Vulnerable ·angular
- cpe:2.3:a:angular:angular:22.0.0:next8:*:*:*:node.js:*:* Versions 22.0.0 next8 Vulnerable ·angular
Remediation
- Fix · CNA angular (angular) Fixed in 19.2.21, 20.3.19, 21.2.9, 22.0.0-next.8
- Fix · GHSA-45q2-gjvg-7973 @angular/platform-server (npm) Fixed in 22.0.0-next.8 Advisory →
- Fix · GHSA-45q2-gjvg-7973 @angular/platform-server (npm) Fixed in 21.2.9 Advisory →
- Fix · GHSA-45q2-gjvg-7973 @angular/platform-server (npm) Fixed in 20.3.19 Advisory →
- Fix · GHSA-45q2-gjvg-7973 @angular/platform-server (npm) Fixed in 19.2.21 Advisory →
Vendor assessments
Red Hat
Red Hat rating: Important. Red Hat's page for this CVE →
| Product | Status | Plan or fix |
|---|---|---|
| Red Hat AMQ Broker 7 | Affected | No fix yet: Fix deferred |
| Red Hat Enterprise Linux 10 | Affected | No fix planned: Out of support scope |
| Red Hat Enterprise Linux 7 | Affected | — |
| Red Hat Enterprise Linux 8 | Affected | — |
| Red Hat Enterprise Linux 9 | Affected | No fix planned: Out of support scope |
| Red Hat Fuse 7 | Affected | No fix planned: Will not fix |
| Red Hat JBoss Enterprise Application Platform Expansion Pack | Affected | No fix yet: Fix deferred |
| Red Hat OpenStack Platform 16.2 | Affected | No fix yet |
| Red Hat Single Sign-On 7 | Affected | No fix yet: Fix deferred |
Not affected: 1 product
- Red Hat Quay 3
Timeline
- 2026-10-02 Threatist record created from CVE-2026-41423
- 2026-10-03 Alias added: GHSA-45q2-gjvg-7973
- 2026-11-06 Affected versions changed · Red Hat
- 2026-11-06 CVSS score added · Red Hat
References
Advisory 2
More Angular vulnerabilities
- TI-2026-60076 Angular: SSRF and Cross-Origin Credential Disclosure via URL Resolution Discrepancy in SSR CVSS 4.0HIGH 8.6
- TI-2026-60080 Angular: SSR XSS via Unescaped <template> Content Across DocumentFragment Boundaries in Fallback Raw-Content Elements CVSS 4.0HIGH 8.6
- TI-2026-60078 Angular: SSR XSS via Unescaped Processing Instruction (<?...?>) Nodes in Fallback Raw-Content Elements CVSS 4.0HIGH 8.6
- TI-2025-37971 A reflected cross-site scripting (XSS) vulnerability in CKeditor v46.1.0 & Angular… CVSS 3.1MEDIUM 5.4
- TI-2026-36931 Angular: URL Parser Differential in @angular/platform-server leading to SSRF Allowlist Bypass CVSS 4.0HIGH 8.8
- TI-2026-34131 Angular: SSRF via Hostname Hijacking in @angular/platform-server CVSS 4.0HIGH 8.8
Sources
- CVE-2026-41423 · CVE Program
- CVE-2026-41423 · NVD
- FIRST EPSS
- GHSA-45q2-gjvg-7973 · GitHub Advisory Database · CC BY 4.0
- CVE-2026-41423 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences