Angularプラットフォームの脆弱性:悪意あるSVGアニメーションを介したコード実行の危険性

概要:Angularコンパイラの高深刻度脆弱性

Angularチームは、Angular Template Compilerにおける高深刻度(CVSSスコア8.5)の脆弱性「CVE-2025-66412」に対処するためのセキュリティアップデートをリリースしました。この脆弱性は保存型クロスサイトスクリプティング(XSS)に分類され、攻撃者が組み込みのセキュリティ保護を回避し、ユーザーのブラウザ内で悪意のあるコードを実行することを可能にします。

脆弱性の詳細と攻撃手法

この問題は、Angularコンパイラのセキュリティスキーマが不完全であることに起因します。具体的には、SVG(Scalable Vector Graphics)のアニメーション要素、特に<animate><set>が持つattributeName属性の処理に盲点がありました。

通常、Angularは信頼できないデータを自動的に「サニタイズ」して悪意のあるスクリプトの挿入を防ぎます。しかし、この脆弱性では、コンパイラがSVGアニメーションやMathML属性の特定の組み合わせを危険であると認識できず、通常のセキュリティサニタイズがスキップされます。

攻撃者は、attributeNameを「href」のような機密性の高いフィールドにバインドし、アニメーションの値としてJavaScriptのURLを注入することで、この脆弱性を悪用します。ユーザーがこの改ざんされた要素とやり取りする(例えばクリックする、またはアニメーションが自動的にトリガーされる)と、悪意のあるJavaScriptが実行されてしまいます。

潜在的な影響と対策

この脆弱性が悪用された場合、攻撃者は被害者のセッション内で完全な制御権を得る可能性があります。これにより、以下のような深刻な結果が引き起こされる恐れがあります:

  • セッションハイジャック: 認証トークンやクッキーが盗まれ、ユーザーがアカウントから締め出される可能性があります。
  • データ窃盗: ページに表示されている機密性の高いユーザーデータがキャプチャされ、外部サーバーに送信される可能性があります。
  • 不正な操作: 実際のユーザーが操作しているかのように、スクリプトがウェブサイト上で任意のアクションを実行できます。

この脆弱性は、@angular/compilerパッケージの複数の主要バージョンに影響を与えます。Angularチームは迅速に対応し、バージョン19、20、21向けのパッチをリリースしました。

推奨される対応

  • 即座のアップデート: 開発者は、v19.2.17、v20.3.15、またはv21.0.2のいずれかの最新パッチ適用済みバージョンに直ちにアップデートすることが強く推奨されます。
  • 旧バージョン(18以前)のユーザー: バージョン18以前のユーザーは、パッチが提供されていないため、速やかなアップグレードが必須です。
  • 一時的な回避策: 即座のアップグレードが難しいチームは、以下の回避策を厳格に実施する必要があります。
    • 信頼できないデータ(APIやデータベースからのデータ)をSVGアニメーション属性にバインドしないことを徹底する。
    • javascript: URLを厳格にブロックする堅牢なコンテンツセキュリティポリシー(CSP)を実装する。これにより、コード内に脆弱性が残っていたとしても、攻撃ベクトルを効果的に無力化できます。

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