CVE-2026-104871
Received
Received - Intake
Path Traversal in Angular SSR
Vulnerability report for CVE-2026-104871, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.
Publication date: 2026-10-02
Last updated on: 2026-10-02
Assigner: GitHub, Inc.
Description
Description
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.
CVSS Scores
EPSS Scores
| Probability: | |
| Percentile: |
Meta Information
Affected Vendors & Products
| Vendor | Product | Version / Range |
|---|---|---|
| angular | angular_ssr | From 20.3.36 (exc) to 22.1.7 (exc) |
| angular | angular_ssr | From 21.2.23 (exc) to 21.2.23 (exc) |
| angular | angular_ssr | From 20.3.36 (exc) to 20.3.36 (exc) |
| angular | angular_ssr | to 19.2.27 (exc) |
| angular | angular_cli | 22.1.7 |
| angular | angular_cli | 21.2.23 |
| angular | angular_cli | 20.3.36 |
| angular | angular_ssr | to 22.1.7 (exc) |
| angular | angular_ssr | From 17 (inc) to 18 (inc) |
Helpful Resources
Exploitability
| CWE ID | Description |
|---|---|
| CWE-22 | The product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory. |