Angular プラットフォームの脆弱性 CVE-2025-66412:SVG 属性の悪用とコード実行の恐れ

Angular Platform Vulnerability Lets Attackers Execute Code Through Malicious SVG Animations

2025/12/03 gbhackers — Angular チームがリリースしたのは、Angular テンプレート・コンパイラの深刻な脆弱性に対処するためのセキュリティ・アップデートである。この脆弱性 CVE-2025-66412 を悪用する攻撃者は、組み込みのセキュリティ保護を回避してユーザーのブラウザで悪意のコードを実行できる。その原因の根本は、Angular コンパイラのセキュリティ・モデルの不備に起因する、蓄積型クロスサイト・スクリプティング (XSS) の問題である。

Angular はデフォルトでは、信頼できないデータが自動的にサニタイズされるため、悪意のスクリプト挿入は防止される設計となっている。しかし、この脆弱性で露呈したのは、Angular の SVG (Scalable Vector Graphics) アニメーションおよび MathML アトリビュートに対する不十分な処理である。

MetricDetails
CVE IDCVE-2025-66412
SeverityHigh (CVSS 8.5)
Vulnerability TypeStored XSS via SVG Animation
攻撃の仕組み

問題の核心は、<animate> や <set> といった SVG アニメーション要素にある。これらの要素は attributeName を用いることで、アニメーション化するプロパティを指定する。この脆弱性 CVE-2025-66412 の原因は、attributeName フィールドをコンパイラが正しく検証していなかったことにある。

この脆弱性を悪用する攻撃者は、attributeName を href (リンクを指定する属性) といったセキュリティ上の影響が大きい属性へのバインドを可能にする。その結果として攻撃者は、アニメーションが href 属性をターゲットとする場合に、JavaScript URL をアニメーション値として挿入できるようになる。

この種の危険な組み合わせをコンパイラが認識しないため、通常において実行されるセキュリティ・サニタイズ処理がスキップされてしまう。それにより、ユーザーが対象となる要素をクリックしたケースや、アニメーションの自動実行が設定されているケースにおいて、それらの要素を介した悪意の JavaScript 実行が引き起こされる恐れがある。

この脆弱性の悪用に成功した攻撃者は、被害者のセッション内で広範なユーザー操作を制御できる。その被害は極めて深刻であり、以下の影響が生じる可能性がある。

  • セッション・ハイジャック:認証トークンや Cookie を盗み、正規ユーザーをアカウントから締め出すことが可能となる。
  • データ窃取:ページに表示されるユーザーの機密データが不正に取得され、外部サーバへ送信される恐れがある。
  • 不正操作:ユーザー本人になりすましたスクリプトが、Web サイト上で各種の操作を実行する。
影響範囲と対策

この脆弱性が影響を及ぼす範囲は、@angular/compiler パッケージの複数の主要バージョンである。すでに Angular チームは、バージョン 19/20/21 向けのパッチをリリースし、この問題に対処している。ユーザーに対して強く推奨されるのは、最新のパッチ適用バージョン v19.2.17/v20.3.15/v21.0.2 へと速やかに更新することである。

注意すべき点は、バージョン 18 以前に対してパッチが提供されないことである。したがって、古いブランチを使用しているユーザーにとって、アップグレード以外の選択肢は存在しない。

迅速なアップグレードが困難なチームに対しては、厳格な回避策が求められる。具体的には、API やデータベースから取得した信頼できないデータを、SVG アニメーション属性にバインドしないことが重要となる。

さらに、”javascript: URL (JavaScript URL)” を厳格にブロックする堅牢なコンテンツ・セキュリティポリシー (CSP:Content Security Policy) を実装すれば、コードに脆弱性が残存している場合であっても、この攻撃ベクターを実質的に無効化できる。