Angular XSS脆弱性が数千のWebアプリケーションを脅威に
Angular、世界で最も広く使用されているWebアプリケーションフレームワークの一つに、深刻度が高レベルのCross-Site Scripting (XSS)脆弱性が見つかりました。この脆弱性は、CVE-2026-32635として追跡されており、Angularのランタイムとコンパイラに存在します。この脆弱性は、国際化(i18n)属性バインディングに影響を及ぼします。
この脆弱性が悪用された場合、攻撃者は組み込みのセーニタイゼーションメカニズムをバイパスし、悪意のあるスクリプトをWebアプリケーションにクリーンに挿入することができます。
XSS脆弱性の詳細
このセキュリティ上の問題は、開発者が敏感なHTML属性とAngularの国際化機能を組み合わせたときに発生します。通常、Angularは自動的に入力をセーニタイズして、ユーザーのブラウザで悪意のあるコードが実行されるのを防ぎます。
しかし、hrefやsrcなどの敏感な属性にi18n-attributeタグを追加すると、Angularのセーニタイゼーションプロセスが完全にバイパスされ、危険な盲点が生じます。不審なユーザー生成データがこの国際化された属性にバインドされた場合、Angularのセーニタイゼーションプロセスは完全にバイパスされます。
攻撃が成功するには、アプリケーションが脆弱な属性に非セーニタイズされた入力をバインドし、同時に国際化をマークする必要があります。確認された脆弱な属性には、href、src、action、background、data、およびformactionなどの一般的に使用される属性が含まれます。
脆弱性の影響と対策
この脆弱性は、攻撃の複雑さが低く、ネットワークベースの攻撃ベクターを持つため、高レベルの深刻度を評価されています。攻撃者は、脆弱なアプリケーションのドメイン内で任意のコードを実行することにより、以下の攻撃を達成することができます:
- セッションハイジャック:脅威アクターは、静かにセッションクッキーと認証トークンを盗むことができ、完全なアカウント乗っ取りを引き起こす可能性があります。
- データの漏洩:注入されたスクリプトは、ユーザーの機密情報をキャプチャし、外部の攻撃者制御サーバーに秘密裏に送信することができます。
- 非承認の操作:ハッカーは、ユーザーの同意なしにアプリケーションを操作し、ユーザーの代わりに重要な操作を実行することができます。
この脆弱性は、@angular/compilerと@angular/coreパッケージの複数の主要なリリースブランチで影響を受けています。アプリケーションは、17.0.0から22.0.0-next.2までのフレームワークバージョンを実行している場合、主にリスクにさらされています。
Angular開発チームは、このバイパスを解決するための重要なセキュリティパッチをリリースしました。開発者は、以下の安全なバージョンにインフラを更新することを強く推奨されます:
- バージョン 22.0.0-next.3
- バージョン 21.2.4
- バージョン 20.3.18
- バージョン 19.2.20
現在、バージョン17と18のAngularはパッチが適用されていません。これらのレガシービルドを実行している組織は、環境を保護するために即時対策を講じる必要があります。
対策と緩和策
公式パッチをすぐに適用できないチームには、CVE-2026-32635の悪用を防ぐ効果的な対策があります:
- 不審な入力をブロック:脆弱な属性にバインドされるデータが、データベース、API応答、またはURLパラメータなどの不審なユーザー入力から決してソース化されないようにします。
- 国際化タグを削除:不審なデータがこれらの特定の属性内で使用される場合、それらが国際化のためにマークされていないことを確認します。
- 明示的なセーニタイゼーションを強制:敏感な属性を明示的にセーニタイズするために、AngularのDomSanitizerユーティリティを経由して不審なデータをルーティングします。
これらの対策を講じることで、Angularアプリケーションのセキュリティを強化し、XSS攻撃から保護することができます。
