Read the docs

Angular SSR: Path Traversal to Sibling Directories in CommonEngine on Windows

Priority LOW 28CWE-22Published · Updated

Key facts

Attack vector
Network
Privileges required
None
User interaction
None
Attack complexity
Low
Attack requirements
Present
Impact type
Information disclosure
Confidentiality · integrity · availability
Low · None · None
Fix status
Fixed

Attack profile from CVSS 4.0 · CNA. Fix status from CNA and GitHub. Impact type from CWE-22 and the CVSS impact.

Summary

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.

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00421 36th percentileScored 2026-11-07
Fix Fixed angular-cli (angular): 20.3.36, 21.2.23, 22.1.7@angular/ssr (npm): 22.1.7, 21.2.23, 20.3.36

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
None
Automatable
No
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
angularangular-clibefore 20.3.36; 21.0.0 to before 21.2.23; 22.0.0 to before 22.1.720.3.36, 21.2.23, 22.1.7Patch availableCNA
—@angular/ssr (npm)22.0.0 to before 22.1.722.1.7Patch availableGHSA-7g7c-h8rr-7p6q
—@angular/ssr (npm)21.0.0 to before 21.2.2321.2.23Patch availableGHSA-7g7c-h8rr-7p6q
—@angular/ssr (npm)20.0.0 to before 20.3.3620.3.36Patch availableGHSA-7g7c-h8rr-7p6q
—@angular/ssr (npm)up to 19.2.27—No fix listedGHSA-7g7c-h8rr-7p6q
  • angular-cli Vendorangular Affected before 20.3.36; 21.0.0 to before 21.2.23; 22.0.0 to before 22.1.7 Fixed in 20.3.36, 21.2.23, 22.1.7 Patch available CNA
  • @angular/ssr (npm) Vendor— Affected 22.0.0 to before 22.1.7 Fixed in 22.1.7 Patch available GHSA-7g7c-h8rr-7p6q
  • @angular/ssr (npm) Vendor— Affected 21.0.0 to before 21.2.23 Fixed in 21.2.23 Patch available GHSA-7g7c-h8rr-7p6q
  • @angular/ssr (npm) Vendor— Affected 20.0.0 to before 20.3.36 Fixed in 20.3.36 Patch available GHSA-7g7c-h8rr-7p6q
  • @angular/ssr (npm) Vendor— Affected up to 19.2.27 Fixed in — No fix listed GHSA-7g7c-h8rr-7p6q

Remediation

  • Fix · CNA angular-cli (angular) Fixed in 20.3.36, 21.2.23, 22.1.7
  • Fix · GHSA-7g7c-h8rr-7p6q @angular/ssr (npm) Fixed in 22.1.7 Advisory →
  • Fix · GHSA-7g7c-h8rr-7p6q @angular/ssr (npm) Fixed in 21.2.23 Advisory →
  • Fix · GHSA-7g7c-h8rr-7p6q @angular/ssr (npm) Fixed in 20.3.36 Advisory →

Timeline

  1. 2026-10-02 Threatist record created from CVE-2026-104871
  2. 2026-10-06 Alias added: GHSA-7g7c-h8rr-7p6q
  3. 2026-10-06 Fix available: npm/@angular/[email protected], npm/@angular/[email protected], npm/@angular/[email protected] · GHSA-7g7c-h8rr-7p6q
  4. 2026-10-06 CVSS score added · GHSA-7g7c-h8rr-7p6q
  5. 2026-10-06 Weakness changed · GHSA-7g7c-h8rr-7p6q
  6. 2026-10-06 10 new references · GHSA-7g7c-h8rr-7p6q

References

  • TI-2026-74069 Infinite loop in Angular SSR HTML parser allows denial of service CVSS 4.0HIGH 8.7
  • 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-38694 Server-Side Request Forgery (SSRF) in Angular SSR CVSS 4.0HIGH 8.7
  • TI-2026-22098 Angular SSR has an Open Redirect via X-Forwarded-Prefix CVSS 4.0MEDIUM 6.9
See all 46 →

Sources