Skip to main content

Angular SSR EUVDEUVD-2026-91778

| CVE-2026-104871 MEDIUM
Path Traversal (CWE-22)
2026-10-02 GitHub_M GHSA-7g7c-h8rr-7p6q
6.3
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Send request with backslash parent-traversal URL
  2. Exploit
    resolve:// base preserves backslash, path.join treats it as Windows separator
  3. Execution
    startsWith(publicPath) check wrongly accepts sibling directory
  4. Impact
    Retrieve sibling prerendered HTML containing SSG marker

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK

2 techniques across 2 tactics: Discovery, Collection

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation is strictly limited to Windows deployments of @angular/ssr/node (or @angular/ssr for v17-18) that (1) use CommonEngine server-side rendering and pass RELATIVE request URLs to CommonEngine.render, (2) have a sibling output directory on disk whose name shares the configured public-directory prefix, and (3) contain a qualifying prerendered Angular HTML page bearing the Angular SSG marker in that sibling directory. The backslash-as-separator behavior only manifests on Windows path handling, so Linux/macOS hosts are not affected. No authentication or user interaction is required (PR:N/UI:N), but these stacked configuration and platform prerequisites (reflected as AT:P in the CVSS 4.0 vector) substantially limit real-world exploitability; the flaw does NOT permit arbitrary file read, only disclosure of an adjacent prerendered SSG HTML page.

Impact

This is a genuinely low-to-moderate risk issue despite the CVSS 4.0 base score of 6.3. The CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N) indicates a network-reachable, unauthenticated flaw, but the AT:P (Attack Requirements: Present) metric and the vulnerable-system impact of VC:L/VI:N/VA:N are the key signals: exploitation depends on several non-attacker-controlled preconditions and yields only limited confidentiality disclosure (one sibling prerendered HTML page), with no integrity or availability impact and explicitly NO arbitrary file read. No EPSS score was provided in the input, and there is no CISA KEV listing and no public exploit code identified - only the upstream fix commits are available, which are patch artifacts, not weaponized exploits. The combination of narrow impact, Windows-only applicability, and the requirement for a prefix-sharing sibling output directory containing qualifying Angular SSG-marked HTML makes this a lower real-world priority than the 6.3 score suggests in isolation. It should be patched during normal cycles by affected Windows SSR operators rather than treated as an emergency.

Exploit ScenarioDerived

An organization runs an Angular application with @angular/ssr CommonEngine server-side rendering on a Windows host, passing relative request URLs to CommonEngine.render, and has a sibling output directory whose name shares the configured public-directory prefix. A remote unauthenticated user sends a request whose relative URL contains a backslash parent-traversal segment, causing the retrieveSSGPage logic to resolve into the sibling directory and return a prerendered HTML page that was not intended to be served from the public path. No public exploit code was identified at time of analysis; only vendor fix commits exist.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 02, 2026

Angular SSR's CommonEngine (in @angular/ssr/node, and in @angular/ssr for versions 17 through 18) can disclose a sibling prerendered HTML page on Windows when a relative request URL containing a backslash parent-traversal segment is passed to CommonEngine.render, affecting versions prior to 20.3.36, 21.2.23, and 22.1.7. Exploitation is unauthenticated and requires no user interaction (PR:N/UI:N) but is restricted to Windows deployments that pass relative request URLs, have a sibling output directory whose name shares the configured public-directory prefix, and hold a qualifying prerendered Angular page bearing the SSG marker; no public exploit code and no confirmed active exploitation were identified at time of analysis. Independent assessment rates the real-world risk low-to-moderate despite the 6.3 CVSS 4.0 base score, because these stacked platform and directory-layout prerequisites (captured as AT:P) sharply narrow exposure, and the flaw does not permit arbitrary file read - only disclosure of the adjacent prerendered SSG HTML page.

RemediationAI

Apply the vendor fix: upgrade to Angular CLI/@angular/ssr 20.3.36, 21.2.23, or 22.1.7 (or later on the respective branches) as documented in advisory GHSA-7g7c-h8rr-7p6q; the patches replace the startsWith prefix check with a path.relative/isAbsolute containment test. If immediate upgrade is not possible, mitigate by avoiding prefix-sharing sibling output directories: rename the SSG output directory (or the configured public directory) so no sibling path extends the public-path string prefix, which defeats the flawed prefix comparison and eliminates the traversal target. Additionally, sanitize or reject request URLs containing backslashes before they reach CommonEngine.render, or pass fully normalized absolute URLs instead of relative ones, since the backslash-as-separator behavior only manifests with relative URL input on Windows; both controls carry the trade-off of potential breakage for legitimate clients that send unusual but valid paths, so validate against real traffic before enforcing. Removing the Angular SSG marker from non-public prerendered pages and ensuring only intended public directories exist on disk further reduces impact. Note that the flaw is Windows-specific and provides no arbitrary file read, so general defense-in-depth measures such as filesystem least privilege for the Node process remain worthwhile but are secondary to upgrading.

Affected VersionsENISA

angular-cli 22.0.0, < 22.1.7
angular-cli 21.0.0, < 21.2.23
angular-cli < 20.3.36

Affected Packages

npm @angular/ssr fix: 20.3.36, 21.2.23, 22.1.7
euvd angular_cli fix: 20.3.36, 21.2.23, 22.1.7

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in npm, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The issue is a CWE-22 path traversal rooted in how @angular/ssr's CommonEngine.retrieveSSGPage resolves prerendered output paths on Windows. The rendering engine uses a non-special 'resolve://' URL base, so a backslash in a relative request URL is preserved rather than normalized away; Node's path.join then interprets that backslash as a Windows directory separator, letting a '../'-style traversal escape the intended prerendered page directory. The original guard, pagePath.startsWith(normalize(publicPath)), is a naive string-prefix check that fails against a sibling output directory whose name shares the configured public-directory prefix (for example, 'dist/browser' versus 'dist/browser-extra'), so the sibling path is incorrectly treated as legitimate. The upstream fix replaces the prefix string comparison with path.relative(publicPath, pagePath) plus an isAbsolute(relativePath) check and explicit rejection of '..', '../' and '..\' prefixes, which correctly confines retrieval to descendants of the configured public path. Because the separator confusion depends on Windows path semantics, Linux and macOS hosts are not affected, and the disclosure surface is limited to prerendered Angular HTML files that carry the SSG marker - it is not an arbitrary file read primitive.

Know when Angular gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 6.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 3.7 LOW

AV:N and PR:N/UI:N since it is remote and unauthenticated, but AC:H reflects the Windows-only, relative-URL and prefix-sharing-sibling preconditions; only limited HTML disclosure so C:L, I:N, A:N.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 02, 2026 - 20:03 EUVD
CVE Published
Oct 02, 2026 - 19:43 cve.org
MEDIUM 6.3

DescriptionCVE.org

The Angular SSR is a server-rise rendering tool for Angular applications. Prior to versions 20.3.36, 21.2.23, and 22.1.7, the CommonEngine retrieveSSGPage prerendered-page retrieval logic in @angular/ssr/node, and in @angular/ssr for versions 17 through 18, accepts a relative request URL containing a backslash parent-traversal segment on Windows. The non-special resolve:// URL base preserves the backslash, path.join interprets it as a Windows separator, and the pagePath.startsWith(normalize(publicPath)) check incorrectly accepts a sibling output directory whose name shares the configured public-directory prefix. An unauthenticated requester can therefore retrieve a sibling prerendered HTML page when that page contains the Angular SSG marker. The issue is limited to Windows deployments that pass relative request URLs to CommonEngine.render, have a prefix-sharing sibling output directory, and contain qualifying prerendered Angular HTML; it does not provide arbitrary file read. This issue is fixed in versions 20.3.36, 21.2.23, and 22.1.7.

Threat Intelligence Overview

EPSS Score
0.4%
Top 66% exploitable
Prevalence
Medium
Angular is widely used, but server-rendered SSR node deployments are a narrower subset
Threat Intel
1
1 source
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.

CVE-2026-88060 HIGH POC
8.6 Sep 10

Cross-site scripting via Angular's server-side rendering package (@angular/platform-server) allows arbitrary JavaScript

CVE-2026-88058 HIGH POC
8.6 Sep 10

Cross-site scripting in Angular's server-side rendering engine (`@angular/platform-server`) allows arbitrary JavaScript

CVE-2026-88056 HIGH POC
8.6 Sep 10

Server-Side Rendering in Angular's @angular/platform-server leaks server-side credentials to attacker-controlled origins

CVE-2025-66412 HIGH
8.5 Dec 01

Stored XSS in the Angular Template Compiler (npm package @angular/compiler) allows an authenticated attacker who can per

CVE-2026-22610 HIGH
8.5 Jan 10

Cross-site scripting in Angular's Template Compiler allows attackers to inject arbitrary JavaScript through unsanitized

CVE-2026-101895 HIGH
8.7 Sep 28

An unauthenticated remote attacker can lock up an Angular server-side rendering process by submitting HTML that contains

CVE-2025-62427 HIGH
8.7 Oct 16

Server-side request forgery in Angular's @angular/ssr package (all versions from 19.0.0-next.0 before 19.2.18, 20.0.0-ne

CVE-2026-50178 HIGH
8.7 Jun 22

Command injection via untrusted Markdown rendering in the Angular Language Service VS Code extension (versions prior to

CVE-2026-49241 HIGH
8.7 Jun 22

Arbitrary code execution in the Angular Language Service VS Code extension prior to 21.2.4 allows attackers to silently

CVE-2026-41423 HIGH
8.7 May 08

Server-Side Request Forgery in Angular's @angular/platform-server (SSR) lets remote unauthenticated attackers hijack the

CVE-2026-101896 HIGH
8.2 Sep 30

Denial of service in the npm package @angular/router when Server-Side Rendering (SSR) is enabled on Node.js allows an un

CVE-2026-27970 HIGH
7.6 Feb 26

Cross-site scripting in Angular's internationalization (i18n) pipeline allows attacker-controlled JavaScript to execute

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy