# CVE-2025-62427: Server-Side Request Forgery (SSRF) in Angular SSR

> Attackers can force Angular SSR servers to make requests to arbitrary external domains by manipulating URL paths, potentially exposing internal data or bypassing security controls.

- **Severity:** High 8.7 (`CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N`)
- **Exploited in the wild:** Not known
- **Login needed:** Not needed
- **Attackable:** Over the internet
- **Victim action needed:** Not needed
- **Fix available:** Yes
- **Published:** 16 Oct 2025
- **Updated:** 17 Oct 2025
- **Also known as:** GHSA-q63q-pgmf-mxhr

## What is CVE-2025-62427?

CVE-2025-62427 is a high-severity server-side request forgery vulnerability in angular-cli, published on 16 Oct 2025. An attacker can exploit it over the internet without logging in, with no action from the victim.

### Official description

The Angular SSR is a server-rise rendering tool for Angular applications. The vulnerability is a Server-Side Request Forgery (SSRF) flaw within the URL resolution mechanism of Angular's Server-Side Rendering package (@angular/ssr) before 19.2.18, 20.3.6, and 21.0.0-next.8. The function createRequestUrl uses the native URL constructor. When an incoming request path (e.g., originalUrl or url) begins with a double forward slash (//) or backslash (\\), the URL constructor treats it as a schema-relative URL. This behavior overrides the security-intended base URL (protocol, host, and port) supplied as the second argument, instead resolving the URL against the scheme of the base URL but adopting the attacker-controlled hostname. This allows an attacker to specify an external domain in the URL path, tricking the Angular SSR environment into setting the page's virtual location (accessible via DOCUMENT or PlatformLocation tokens) to this attacker-controlled domain. Any subsequent relative HTTP requests made during the SSR process (e.g., using HttpClient.get('assets/data.json')) will be incorrectly resolved against the attacker's domain, forcing the server to communicate with an arbitrary external endpoint. This vulnerability is fixed in 19.2.18, 20.3.6, and 21.0.0-next.8.

Weakness: CWE-918 (Server-Side Request Forgery)

## Which versions are affected by CVE-2025-62427?

6 open source packages ship an affected version, including @angular/ssr.


| Package | Ecosystem | Affected | Fixed in |
| --- | --- | --- | --- |
| `@angular/ssr` | npm | From 19.0.0-next.0 | 19.2.18 |
| `@angular/ssr` | npm | From 19.0.0-next.0 | 19.2.18 |
| `@angular/ssr` | npm | From 20.0.0-next.0 | 20.3.6 |
| `@angular/ssr` | npm | From 20.0.0-next.0 | 20.3.6 |
| `@angular/ssr` | npm | From 21.0.0-next.0 | 21.0.0-next.8 |
| `@angular/ssr` | npm | From 21.0.0-next.0 | 21.0.0-next.8 |

## How do I fix CVE-2025-62427?

Upgrade @angular/ssr to a fixed version for your release line: 19.2.18, 20.3.6 or 21.0.0-next.8.

## Is CVE-2025-62427 being exploited?

It is not confirmed as exploited in the wild, but public exploit code for CVE-2025-62427 exists.

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2025-62427 and fix it if it is affected.

What it is: CVE-2025-62427 is a high-severity server-side request forgery vulnerability in angular-cli, published on 16 Oct 2025. An attacker can exploit it over the internet without logging in, with no action from the victim.
Exploitation: It is not confirmed as exploited in the wild, but public exploit code for CVE-2025-62427 exists.

Affected packages and fixed versions:
- @angular/ssr (npm): affected from 19.0.0-next.0; fixed in 19.2.18
- @angular/ssr (npm): affected from 19.0.0-next.0; fixed in 19.2.18
- @angular/ssr (npm): affected from 20.0.0-next.0; fixed in 20.3.6
- @angular/ssr (npm): affected from 20.0.0-next.0; fixed in 20.3.6
- @angular/ssr (npm): affected from 21.0.0-next.0; fixed in 21.0.0-next.8
- @angular/ssr (npm): affected from 21.0.0-next.0; fixed in 21.0.0-next.8

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2025-62427/ (Markdown: https://insights.sbomify.com/CVE-2025-62427/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2025-62427
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2025-62427
- OSV: https://osv.dev/vulnerability/CVE-2025-62427

---
From sbomify Insights: https://insights.sbomify.com/CVE-2025-62427/
Summaries are generated and may contain mistakes; the official description above is the record.
