Angular i18n Flaw Lets Hackers Execute Malicious Code via Critical XSS Vulnerability
2026/03/03 gbhackers — 広く利用されている Web アプリケーション・フレームワーク Angular に、高深刻度のセキュリティ脆弱性が発見された。この脆弱性 CVE-2026-27970 (CVSS:7.6) は、フレームワークの国際化 (i18n) パイプラインに影響を及ぼすものだ。この脆弱性の悪用に成功した攻撃者は、アプリケーション内部で悪意のコード実行を可能にし、ユーザー・データおよびアプリケーション整合性に重大なリスクをもたらす。

脆弱性の中核
この脆弱性は、Angular が International Components for Unicode (ICU) メッセージを処理する方法に存在する。ICU メッセージとは、複数形の処理や性別に関連する固有の表現などの複雑な翻訳管理に使用されるものだ。
これらメッセージを Angular が処理する際に、翻訳テキスト内の HTML コンテンツが適切にサニタイズされていない。
Angular における通常の i18n プロセスでは、ソースメッセージを抽出し、サードパーティ・コントラクターなどの外に対して翻訳が依頼され、その後に、翻訳済みファイルがアプリケーションにマージされる。
したがって、”.xliff”/”.xtb” ファイルなどの翻訳ファイルを侵害した攻撃者は、悪意の JavaScript を注入できてしまう。その後に、侵害された翻訳が Angular アプリケーションでレンダリングされると、ユーザーのブラウザ内で悪意コードが実行される。
この Cross-Site Scripting (XSS) 脆弱性は、深刻度 High と評価されている。一般的な XSS と異なり、任意のユーザー入力に原因があるのではなく、攻撃者による翻訳ファイルの侵害が前提になるという、サプライチェーン侵害の性質に分類される。
この脆弱性の悪用に成功した攻撃者は、アプリケーションのオリジン内で制御可能な JavaScript を実行できる。主な影響は以下である。
- Credential Exfiltration:ブラウザメモリ/LocalStorage/IndexedDB/Cookie に保存される機密ユーザー情報の窃取と、外部サーバへの送信が可能になる。
- Page Vandalism:アプリケーションの表示や挙動が改変され、意図されたユーザー・エクスペリエンスが破壊される。
脆弱性の詳細
| Detail | Information |
|---|---|
| CVE ID | CVE-2026-27970 |
| Component | @angular/core |
| Vulnerability Type | Cross-Site Scripting (XSS) (CWE-79) |
| Severity | High |
| CVSS v4 Score Metrics | CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N |
| Affected Versions | <= 18.2.14; >= 19.0.0-next.0 <= 19.2.18; >= 20.0.0-next.0 <= 20.3.16; >= 21.0.0-next.0 <= 21.1.5; >= 21.2.0-next.0 <= 21.2.0-rc.0 |
| Patched Versions | 19.2.19, 20.3.17, 21.1.6, 21.2.0 |
開発者として実施すべき対策は、Angular アプリケーションの修正版へのアップデートである。また、迅速なアップデートが困難な場合には、以下の回避策が有効である。
- サードパーティから受領した翻訳コンテンツに対する、統合前の厳密なレビューと検証。
- 厳格な Content-Security Policy (CSP) の実装による、未承認の JavaScript 実行のブロック。
- ブラウザ上で Trusted Types を有効化し、適切な HTML サニタイズを強制。
これらの対策により、翻訳ファイルに悪意のコードが含まれている場合でも、XSS 攻撃に対する強力な防御が施される。
Angular フレームワークにおいて、深刻な脆弱性 CVE-2026-27970 (CVSS 7.6) が発見され、多言語対応 (i18n) の仕組みが悪用される恐れが生じています。この問題の原因は、複雑な翻訳メッセージを扱う ICU メッセージ形式の処理プロセスにおいて、翻訳テキストに含まれる HTML コンテンツのサニタイズ (無害化) が不十分だったことにあります。通常、Angular アプリの開発では翻訳作業を外部の業者などに依頼し、戻ってきた翻訳ファイルをシステムに組み込みますが、このファイルを侵害できる攻撃者は、悪意の JavaScript を注入できてしまいます。ユーザー入力ではなく、信頼しているはずの翻訳ファイルを起点として、ブラウザ上で不正なコードが実行され、Cookie や ローカル・ストレージに保存される機密情報の窃取などに対するサプライチェーン攻撃を許してしまいます。ご利用のチームは、ご注意ください。よろしければ、Angular での検索結果も、ご参照ください。
You must be logged in to post a comment.