Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend request with backslash parent-traversal URL
-
Exploitresolve:// base preserves backslash, path.join treats it as Windows separator
-
ExecutionstartsWith(publicPath) check wrongly accepts sibling directory
-
ImpactRetrieve 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
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
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.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
Cross-site scripting via Angular's server-side rendering package (@angular/platform-server) allows arbitrary JavaScript
Cross-site scripting in Angular's server-side rendering engine (`@angular/platform-server`) allows arbitrary JavaScript
Server-Side Rendering in Angular's @angular/platform-server leaks server-side credentials to attacker-controlled origins
Stored XSS in the Angular Template Compiler (npm package @angular/compiler) allows an authenticated attacker who can per
Cross-site scripting in Angular's Template Compiler allows attackers to inject arbitrary JavaScript through unsanitized
An unauthenticated remote attacker can lock up an Angular server-side rendering process by submitting HTML that contains
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
Command injection via untrusted Markdown rendering in the Angular Language Service VS Code extension (versions prior to
Arbitrary code execution in the Angular Language Service VS Code extension prior to 21.2.4 allows attackers to silently
Server-Side Request Forgery in Angular's @angular/platform-server (SSR) lets remote unauthenticated attackers hijack the
Denial of service in the npm package @angular/router when Server-Side Rendering (SSR) is enabled on Node.js allows an un
Cross-site scripting in Angular's internationalization (i18n) pipeline allows attacker-controlled JavaScript to execute
EUVD-2026-91778
GHSA-7g7c-h8rr-7p6q
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB