Angular XSS脆弱性が数千のWebアプリケーションを脅威に

Angular XSS脆弱性が数千のWebアプリケーションを脅威に

Angular、世界で最も広く使用されているWebアプリケーションフレームワークの一つに、深刻度が高レベルのCross-Site Scripting (XSS)脆弱性が見つかりました。この脆弱性は、CVE-2026-32635として追跡されており、Angularのランタイムとコンパイラに存在します。この脆弱性は、国際化(i18n)属性バインディングに影響を及ぼします。

この脆弱性が悪用された場合、攻撃者は組み込みのセーニタイゼーションメカニズムをバイパスし、悪意のあるスクリプトをWebアプリケーションにクリーンに挿入することができます。

XSS脆弱性の詳細

このセキュリティ上の問題は、開発者が敏感なHTML属性とAngularの国際化機能を組み合わせたときに発生します。通常、Angularは自動的に入力をセーニタイズして、ユーザーのブラウザで悪意のあるコードが実行されるのを防ぎます。

しかし、hrefsrcなどの敏感な属性にi18n-attributeタグを追加すると、Angularのセーニタイゼーションプロセスが完全にバイパスされ、危険な盲点が生じます。不審なユーザー生成データがこの国際化された属性にバインドされた場合、Angularのセーニタイゼーションプロセスは完全にバイパスされます。

攻撃が成功するには、アプリケーションが脆弱な属性に非セーニタイズされた入力をバインドし、同時に国際化をマークする必要があります。確認された脆弱な属性には、hrefsrcactionbackgrounddata、および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攻撃から保護することができます。


元記事: https://gbhackers.com/angular-xss-vulnerability/