Angular の SSR 脆弱性 CVE-2025-59052 が FIX:機密データ漏洩の恐れ

Angular SSR Vulnerability Lets Attackers Access Sensitive Data

2025/09/11 CyberSecurityNews — Angular の SSR (server-side rendering) 実装に、深刻な脆弱性 CVE-2025-59052 が発見された。この脆弱性を悪用する攻撃者は、機密性の高いユーザー・データにアクセスする可能性を手にする。この欠陥の原因は、Angular におけるコンカレント・リクエスト処理の方法にあり、あるユーザーのセッション・データが、別のユーザーへと漏洩する可能性がある。

すでに Angular チームは、すべてのサポート対象バージョン用にパッチをリリースし、この問題に対処している。

この脆弱性が影響を及ぼす範囲は、@angular/platform-server/@angular/ssr/@nguniversal/common などを使用するアプリケーションである。

この問題のコアは、SSR のプロセス処理中に、Angular の DI (dependency injection) コンテナで発生する、プラットフォーム・インジェクタと呼ばれる競合状態にある。

Angular SSRの脆弱性

このインジェクタは、リクエスト固有の情報を保持するものだが、その情報自体は、 JavaScript モジュール・スコープのグローバル変数として保存されている。この設計により、複数のリクエストが同時に処理されると、グローバル・インジェクタの状態が誤って共有/上書され、異なるセッション間でデータ汚染が生じ得る。実際のシナリオとして挙げられるのは、あるユーザーのデータを含むページが、別のユーザーのリクエストへのレスポンスとして、アプリケーションから誤って提供されてしまう可能性である。

つまり、レンダリングされたページやレスポンス・ヘッダ内に含まれる機密情報や認証トークンが、このデータ汚染により漏洩する恐れがある。そして、ネットワークにアクセスできる攻撃者であれば、サーバに大量のリクエストを送信し、この脆弱性を悪用できる。具体的に言うと、サーバからのレスポンスを検査することで、他のユーザーのアクティブ・セッションから漏洩したデータを探索する可能性を、攻撃者は手にすることになる。

この脆弱性が懸念されるのは、特権レベルを必要とせずに、任意のレンダリング・リクエストを情報抽出に悪用できる点である。bootstrapApplication/getPlatform/destroyPlatform などの API は、この共有状態に依存しており、脆弱と特定されている。

緩和策

すでに Angular チームは、すべてのアクティブ・バージョン 18/19/20 と、プレリリース・バージョンである v21 へ向けてパッチを提供し、この問題に対処している。

ただし、この修正により、bootstrapApplication 関数に互換性のない変更が導入された。したがって、サーバ環境での暗黙的な状態共有を回避するために、明示的なコンテキストを渡す必要が生じている。

Angular は、必要なコード変更を自動的に処理する Schematic を提供し、この更新プロセスを簡素化している。開発者に対して推奨されるのは、それぞれのバージョンに対応する “ng update” コマンドを実行して、アプリケーションを更新することだ。

なお、迅速なパッチ適用が不可能な場合には、いくつかの回避策として提示されている、SSR の無効化/カスタム bootstrap 関数からの非同期動作の削除/サーバ・ビルドでの Angular JIT モードの明示的な無効化などが利用できる。