Monitor vulnerabilities like this one.
Sign up free to get alerted when software you use is affected.
8.7
Angular SSR: Attacker Can Hijack Internal APIs with Malicious URLs
GHSA-45q2-gjvg-7973
Summary
A vulnerability in Angular's Server-Side Rendering (SSR) feature allows an attacker to trick the application into thinking a malicious website is the local origin, potentially exposing internal APIs or metadata services. This can happen if an attacker sends a specially crafted URL to the server, which is then used to make internal requests. To fix this issue, update to Angular version 22.0.0-next.8 or later.
What to do
- Update angular platform-server to version 22.0.0-next.8.
- Update angular platform-server to version 21.2.9.
- Update angular platform-server to version 20.3.19.
- Update angular platform-server to version 19.2.21.
Affected software
| Ecosystem | Vendor | Product | Affected versions |
|---|---|---|---|
| npm | angular | platform-server |
>= 22.0.0-next.0, < 22.0.0-next.8 >= 21.0.0-next.0, < 21.2.9 >= 20.0.0-next.0, < 20.3.19 >= 19.0.0-next.0, < 19.2.21 <= 18.2.14 Fix: upgrade to 22.0.0-next.8
|
Original title
Angular: SSRF via protocol-relative and backslash URLs in Angular Platform-Server
Original description
### Impact
A [Server-Side Request Forgery (SSRF)](https://developer.mozilla.org/en-US/docs/Web/Security/Attacks/SSRF) vulnerability exists in `@angular/platform-server` due to improper handling of URLs during Server-Side Rendering (SSR).
When an attacker sends a request such as `GET /\evil.com/ HTTP/1.1` the server engine (Express, etc.) passes the URL string to Angular’s rendering functions.
Because the URL parser normalizes the backslash to a forward slash for HTTP/HTTPS schemes, the internal state of the application is hijacked to believe the current origin is `evil.com`. This misinterpretation tricks the application into treating the attacker’s domain as the local origin. Consequently, any relative `HttpClient` requests or `PlatformLocation.hostname` references are redirected to the attacker controlled server, potentially exposing internal APIs or metadata services.
**Affected APIs:**
- `renderModule`
- `renderApplication`
- `CommonEngine` (from `@angular/ssr`)
**Non-Affected APIs:**
- `AngularAppEngine` (from `@angular/ssr`)
- `AngularNodeAppEngine` (from `@angular/ssr`)
### Attack Preconditions
- The server has outbound network access.
- The application uses Angular SSR via the affected APIs.
- A pathname is passed as URL to the rendering method (e.g. using `req.url`).
- The server-side code performs HTTP requests using `HttpClient` with relative URLs or uses `PlatformLocation.hostname` to build URLs.
### Patches
- 22.0.0-next.8
- 21.2.9
- 20.3.19
- 19.2.21
### Workarounds
Developers should implement a middleware to sanitize the request URL before it reaches Angular. This involves stripping or normalizing leading slashes:
```js
app.use((req, res, next) => {
// Sanitize the URL to ensure it starts with a single forward slash
if (req.url.startsWith('//') || req.url.startsWith('/\\') || req.url.startsWith('\\')) {
req.url = '/' + req.url.replace(/^[/\\]+/, '');
}
next();
});
```
### References
- [Fix](https://github.com/angular/angular/pull/68194)
A [Server-Side Request Forgery (SSRF)](https://developer.mozilla.org/en-US/docs/Web/Security/Attacks/SSRF) vulnerability exists in `@angular/platform-server` due to improper handling of URLs during Server-Side Rendering (SSR).
When an attacker sends a request such as `GET /\evil.com/ HTTP/1.1` the server engine (Express, etc.) passes the URL string to Angular’s rendering functions.
Because the URL parser normalizes the backslash to a forward slash for HTTP/HTTPS schemes, the internal state of the application is hijacked to believe the current origin is `evil.com`. This misinterpretation tricks the application into treating the attacker’s domain as the local origin. Consequently, any relative `HttpClient` requests or `PlatformLocation.hostname` references are redirected to the attacker controlled server, potentially exposing internal APIs or metadata services.
**Affected APIs:**
- `renderModule`
- `renderApplication`
- `CommonEngine` (from `@angular/ssr`)
**Non-Affected APIs:**
- `AngularAppEngine` (from `@angular/ssr`)
- `AngularNodeAppEngine` (from `@angular/ssr`)
### Attack Preconditions
- The server has outbound network access.
- The application uses Angular SSR via the affected APIs.
- A pathname is passed as URL to the rendering method (e.g. using `req.url`).
- The server-side code performs HTTP requests using `HttpClient` with relative URLs or uses `PlatformLocation.hostname` to build URLs.
### Patches
- 22.0.0-next.8
- 21.2.9
- 20.3.19
- 19.2.21
### Workarounds
Developers should implement a middleware to sanitize the request URL before it reaches Angular. This involves stripping or normalizing leading slashes:
```js
app.use((req, res, next) => {
// Sanitize the URL to ensure it starts with a single forward slash
if (req.url.startsWith('//') || req.url.startsWith('/\\') || req.url.startsWith('\\')) {
req.url = '/' + req.url.replace(/^[/\\]+/, '');
}
next();
});
```
### References
- [Fix](https://github.com/angular/angular/pull/68194)
ghsa CVSS4.0
8.7
Vulnerability type
CWE-918
Server-Side Request Forgery (SSRF)
Published: 16 Apr 2026 · Updated: 16 Apr 2026 · First seen: 16 Apr 2026