Angularの開発チームは2026年5月14日(GitHub Advisory Database登録は5月19日)、Angularのサーバーサイドレンダリング(SSR)パッケージ「@angular/platform-server」にCVSS v4スコア8.8(High)のサーバーサイドリクエストフォージェリ(SSRF)脆弱性が存在するとして、公式のGitHub Security Advisory(GHSA-rfh7-fxqc-q52v)を公開しました。
本脆弱性は「ホスト名ハイジャック(Hostname Hijacking)」と呼ばれる手法によるSSRFであり、攻撃者がSSRエンジンのレンダリングエントリーポイントに絶対形式のURL(例:http://evil.com)を渡すことで、ServerPlatformLocationが攻撃者の管理するドメインをアプリケーションの「現在のホスト名」として採用してしまいます。その結果、すべての相対的なHttpClientリクエストやPlatformLocation.hostnameの参照が攻撃者のサーバーにリダイレクトされ、内部APIやクラウドメタデータサービス(AWS IMDSv2等)への不正アクセスが可能となります。
本件は、2026年に発生したAngular SSRのSSRF脆弱性の第3弾に相当するものであり、Angularを使用したSSRアプリケーションに対する継続的な攻撃面の拡大が確認されています。
目次
この記事のサマリー
- CVE:CVE-2026-46417
- GitHub Advisory:GHSA-rfh7-fxqc-q52v
- CVSS v4スコア:8.8(High)(Attack Vector:Network/Attack Complexity:Low/Privileges Required:None/User Interaction:None)
- 脆弱性の種類:サーバーサイドリクエストフォージェリ(SSRF)——ホスト名ハイジャック
- 影響を受けるパッケージ:npm
@angular/platform-server - 影響を受けるバージョン:≤18.2.14(EOL)・19.x(19.2.22未満)・20.x(20.3.21未満)・21.x(21.2.13未満)・22.x(22.0.0-next.12未満)
- 修正済みバージョン:19.2.22・20.3.21・21.2.13・22.0.0-next.12
- Angular v18以前:EOL(サポート終了)のため公式パッチなし。HeroDevs NES(商用サポート)での対応が必要。
- 攻撃の条件:認証不要・ユーザー操作不要。ただしSSRを有効化した@angular/platform-serverを使用していること。
- 主な影響:内部APIへの不正リクエスト・クラウドメタデータサービス(AWS/GCP/Azure IMDSなど)への不正アクセス・内部ネットワークスキャン・機密認証情報の窃取。
- 修正内容:
renderModuleおよびrenderApplicationにallowedHosts設定オプションを追加。ホスト名のホワイトリスト検証を実装。
影響を受けるバージョンと修正版
| バージョン系列 | 影響を受けるバージョン | 修正済みバージョン | 備考 |
|---|---|---|---|
| v18以前 | ≤18.2.14(すべて) | なし(EOL) | 2025年11月にサポート終了。公式パッチなし。 |
| v19 | ≥19.0.0-next.0〜19.2.22未満 | 19.2.22 | 即時更新を推奨 |
| v20 | ≥20.0.0-next.0〜20.3.21未満 | 20.3.21 | 即時更新を推奨 |
| v21 | ≥21.0.0-next.0〜21.2.13未満 | 21.2.13 | 即時更新を推奨 |
| v22(next) | ≥22.0.0-next.0〜next.12未満 | 22.0.0-next.12 | next版(開発中) |
Angular v18以前をお使いの方へ
Angular v18は2025年11月にEnd of Life(EOL)を迎えており、Angularの公式プロジェクトはEOL版へのセキュリティパッチを提供しません。v18以前をお使いの組織は以下の対応が必要です。
最優先:v19以降へのアップグレード(Angular移行ガイドに従い最新のサポート版へ移行)、またはHeroDevs NES(Never-Ending Support)の利用(商用サポートとして、EOL Angular版へのセキュリティパッチを提供するサービスから修正版を入手)のいずれかが推奨されます。
脆弱性の詳細—「ホスト名ハイジャック」の仕組み
SSRエンジンがホスト名を信頼してしまうという根本的な問題
GitHub Security Advisory(GHSA-rfh7-fxqc-q52v)の公式説明によれば、本脆弱性はAngularのSSRエンジンがレンダリングエントリーポイントに渡されるリクエストURLを処理する方法に起因しています。
Angularのサーバーサイドレンダリングでは、renderApplicationまたはrenderModule関数にリクエストURLを渡し、そのURLを基にアプリケーションをレンダリングします。この際、ServerPlatformLocationがURLからホスト名を抽出して「現在の接続元ホスト」として内部に保持します。
問題は、このホスト名の抽出・採用プロセスにバリデーション(検証)が存在しなかったことです。攻撃者がhttp://evil.com/legitimate-pathのような絶対形式のURLをSSRエンジンに渡すことに成功した場合、ServerPlatformLocationはevil.comを「現在のホスト名」として採用してしまいます。
その結果、SSRプロセス中に行われる相対的なHttpClientリクエスト(例:httpClient.get('/api/data'))はすべて攻撃者が管理するevil.comへの完全なURLとして解決されます。つまりhttp://evil.com/api/dataにリクエストが送信され、サーバーの応答が攻撃者の手に渡ることになります。
クラウドメタデータサービスへの悪用シナリオ
本脆弱性が特に危険な理由の一つは、AWS・GCP・AzureなどのクラウドプロバイダーがVMインスタンス内部から169.254.169.254等の特定アドレスでアクセスできるインスタンスメタデータサービス(IMDS)との組み合わせにあります。
AWSの環境でSSRアプリケーションが実行されている場合、攻撃者はhttp://169.254.169.254/latest/meta-data/iam/security-credentials/のようなURLをSSRエンジンに注入することで、IAMロールに付与されたAWSの一時的な認証情報を窃取できる可能性があります。この種の攻撃はIMDSv1が有効な環境で特に深刻であり、IMDSv2を強制している場合でも一部のSSR実装では悪用が可能な場合があります。
CVSSスコアの詳細
GitHub Security Advisoryが示すCVSS v4のスコア内訳は以下の通りです。
| メトリクス | 値 | 意味 |
|---|---|---|
| Attack Vector | Network | ネットワーク経由での悪用が可能 |
| Attack Complexity | Low | 特殊な条件は不要 |
| Attack Requirements | None | 追加の前提条件なし |
| Privileges Required | None | 認証不要 |
| User Interaction | None | ユーザーの操作不要 |
| Confidentiality Impact (VS) | High | 機密情報への重大な影響 |
| Integrity Impact (VS) | Low | 整合性への限定的な影響 |
| Availability Impact (VS) | None | 可用性への影響なし |
| Subsequent Confidentiality | Low | 後続システムの機密性への影響 |
| Subsequent Integrity | Low | 後続システムの整合性への影響 |
公式パッチの内容——allowedHostsによるホスト名ホワイトリスト
GitHub Advisory(GHSA-rfh7-fxqc-q52v)によれば、本脆弱性の修正はrenderModuleおよびrenderApplication関数にallowedHosts設定オプションを追加することで実装されました。
修正後のSSRエンジンはリクエストURLからホスト名を抽出した後、このallowedHostsリストに対して照合を行います。ホスト名がリスト内の許可エントリに一致しない場合、エンジンはホスト名の採用をブロックし、HttpClientのリクエストが信頼されたドメインに限定されるよう保護します。
即時適用可能な暫定緩和策
修正版にすぐにアップデートできない場合は、サーバーエントリーポイント(server.ts)でリクエストのURLを検証する処理を追加してください。GitHub Advisory(GHSA-rfh7-fxqc-q52v)が示す暫定対応例は以下の通りです。
// Express使用時の緩和策例(server.ts)
app.get('*', (req, res, next) => {
const trustedHost = 'localhost:4000'; // 信頼するホスト名に変更
// リクエストのHostヘッダーが期待するホストと一致しているか確認
if (req.headers.host !== trustedHost) {
return res.status(403).send('Forbidden');
}
next();
});
この緩和策はreq.urlがrenderApplicationまたはrenderModuleに渡される前に、絶対形式のURLが混入しないよう正規化・検証するものです。
Angular SSRを狙った2026年のSSRF脆弱性の波
本件は2026年に確認されたAngular SSRに対するSSRF脆弱性の系列的な発見の一部です。HeroDevsの分析によれば、根本的な問題は「Angular Platform-Serverがreq.urlをホストフレームワークからそのまま受け取り、バリデーションや検証なしにアプリケーションのオリジンを直接解決している」という設計上の脆弱性パターンにあります。
CVE-2026-27739(2026年2〜3月)はAngular SSRのHTTPヘッダー(HostおよびX-Forwarded-*ヘッダー)の不適切な処理によるSSRFです。攻撃者がこれらのヘッダーを操作してアプリケーションのベースオリジンを書き換え、HttpClientを悪意あるドメインに誘導できます。
CVE-2026-41423(2026年4月)はバックスラッシュURLの正規化を通じたSSRFです。バックスラッシュ(\)を含むURLを処理した際の正規化処理のバグにより、攻撃者が制御するオリジンが採用されてしまいます。Angular 18はEOLのため公式パッチなし。
CVE-2026-46417(2026年5月・今回)は絶対形式URLによるホスト名ハイジャックです。上記2件と同一の根本的なパターン(入力URLの不十分な検証)に基づく第3の変形です。
影響を受けるシステムの確認方法
# @angular/platform-serverのバージョンを確認
npm list @angular/platform-server
# または package.json の dependencies を確認
cat package.json | grep platform-server
# 最新の修正済みバージョンに更新
npm install @angular/platform-server@latest
SSRを使用していない純粋なクライアントサイドレンダリング(CSR)のAngularアプリケーション、または@angular/platform-serverを使用していない場合は本脆弱性の影響を受けません。
FAQ
Q. この脆弱性はAngularのすべてのアプリケーションに影響しますか? A. いいえ。影響を受けるのは@angular/platform-serverパッケージを使用してサーバーサイドレンダリング(SSR)を実装しているアプリケーションのみです。クライアントサイドレンダリングのみのAngularアプリケーションは影響を受けません。
Q. allowedHostsオプションの設定方法を教えてください。 A. 修正済みバージョンにアップデートした後、renderApplicationの呼び出しでallowedHostsオプションを追加してください。具体的な設定例はAngularの公式マイグレーションガイドまたはCHANGELOGを参照してください。
Q. Angular 18を使っています。どうすればいいですか? A. Angular 18は2025年11月にEOLを迎えており、公式のセキュリティパッチはありません。v19以降への移行が最優先です。すぐに移行できない場合は上記の暫定緩和策を適用し、HeroDevs NESの利用を検討してください。
参考情報(1次ソース)
- @angular/platform-server: SSRF via Hostname Hijacking(GitHub Security Advisory GHSA-rfh7-fxqc-q52v・2026年5月14日公開・19日にGitHub Advisory Databaseへ登録)
- angular/angular Pull Request #68570(パッチ実装)
- angular/angular Security Advisories(angular/angular公式)
- Angular hostname hijacking vulnerability(SecurityOnline・2026年5月)
- CVE-2026-46417: @angular/platform-server: SSRF via Hostname Hijacking(GitLab Advisory Database)
- CVE-2026-41423: SSRF in Angular Platform-Server via Backslash URL Normalization(HeroDevs Blog・2026年4月)
- CVE-2026-27739: Angular SSR SSRF via Headers(Miggo Research)
- 【関連記事(当サイト)】GitHubの5,561リポジトリが6時間で侵害——SafeDepが自動化サプライチェーン攻撃「Megalodon」を公開
- 【関連記事(当サイト)】LaravelのPHP多言語パッケージ「laravel-lang」4種がサプライチェーン攻撃で侵害——233バージョン以上に影響
- 【関連記事(当サイト)】2025〜2026年 サイバー攻撃・情報漏洩の最新事例まとめ








