Angular Language Service Extension Flaws Allow Remote Code Execution
2026/05/26 gbhackers — Angular Language Service の VS Code エクステンション (Angular.ng-template) において、複数の高深刻度の脆弱性が発見された。アドバイザリ GHSA-ccq4-xmxr-8hcq として追跡されている、一連の脆弱性を悪用する攻撃者は、悪意のプロジェクト・ファイルや依存関係を通じてリモートコード実行 (RCE) 攻撃を可能にする。これらの脆弱性が影響を及ぼす範囲は、バージョン 21.2.4 未満であり、最新リリース 21.2.4 で修正されている。

Angular を用いる開発の中でも、リポジトリのクローンやサードパーティ・パッケージのインストールを頻繁に行うケースにおいて、これらの脆弱性は深刻なリスクをもたらす。
Angular Language Service エクステンションの脆弱性
これらの脆弱性を悪用する攻撃者は、エクステンション内の不適切な入力処理および安全でないコンフィグを突き、開発者のマシン上での任意のコマンド実行を可能にする。
主要な攻撃ベクターの 1 つは、JSDoc ホバーにおける Markdown コマンド・インジェクションである。このエクステンションは、Markdown レンダラを信頼モードでコンフィグされており、ツールチップ内に埋め込まれたコマンド URI の実行を許可している。
しかし Angular Language Server は、レンダリング前に JSDoc コンテンツを適切にサニタイズしていない。この脆弱性を悪用する攻撃者は、TypeScript や JavaScript ファイル内の JSDoc コメントに悪意のリンクを埋め込むことが可能となる。開発者がシンボルにホバーし、そのリンクをクリックすると、ホストシステム上で任意コマンドが実行される。
第 2の重大な脆弱性は、workspace 設定における TypeScript SDK (tsdk) コンフィグの安全ではない処理である。このエクステンションは、”.vscode/settings.json” から tsdk 関連のパスを直接読み込み、ワークスペース信頼の検証やユーザー同意の確認を行わない。
これらのパスは、バックグラウンドの Node.js 言語サーバに渡され、指定ディレクトリから “tsserverlibrary.js” を動的にロードする。
攻撃者は、プロジェクト内に悪意の “tsserverlibrary.js” を配置し、そのパスを設定ファイルに指定することで、この挙動を悪用できる。それにより、ワークスペースを開いた際に、エクステンションはユーザー操作を必要とすることなく、自動的に悪意のコードをロード/実行する。
tsdk ベースの攻撃は、ワークスペース初期化時に静かに実行される一方で、JSDoc ベースの攻撃も最小限のユーザー操作で成立する。これらの脆弱性を組み合わせた影響は、きわめて深刻なものとなり、開発者環境の完全な侵害を引き起こす可能性がある。
いずれの手法も、VS Code の Workspace Trust モデルを実質的に回避し、その中核的なセキュリティ保証を無効化する。これにより、コードレビュー/依存関係の導入/リポジトリのクローンといった、日常的な開発作業が攻撃ベクターとなる。
これらの脆弱性の深刻度は、CVSS v4 において 8.7 と評価されており、ネットワーク経由/低攻撃難易度/権限不要という特徴を持つ。また、CWE に関しては、CWE-79 (クロスサイトスクリプティング)/CWE-94 (コードインジェクション)/CWE-427 (制御されていない検索パス)/CWE-494 (完全性検証なしのコードダウンロード) などに分類される。
開発者にとって必要なことは、Angular Language Service エクステンションのバージョンを、21.2.4 以降へとアップグレードすることである。それに加えて、ワークスペース設定の精査/信頼できないリポジトリの回避/厳格な ワークスペース信頼ポリシーの有効化といった、セキュリティ対策を徹底すべきである。
ユーザー組織に求められるのは、開発環境の異常動作の監視/信頼されていないエクステンションやスクリプトの実行制限の検討である。それにより、同様のサプライチェーン型攻撃に対するリスクを低減すべきである。
訳者後書:今回の Angular Language Service の拡張機能に関する問題は、ツール・チップ表示時の不適切な入力サニタイズ処理と、設定ファイルから読み込まれるパスの検証不備が原因となっています。特定のバグに割り当てられる CVE 番号は明記されていませんが、GHSA-ccq4-xmxr-8hcq として追跡されており、信頼モードの不備によって Markdown 内の悪意あるコマンド実行を許す状態でした。さらに、ワークスペース内の設定ファイルに記載されたパスを信用して、Node.js の言語サーバに渡してしまい、 悪意の JavaScript ファイルを自動でロードするという弱点もありました。ご利用のチームは、ご注意ください。よろしければ、Angular での検索結果も、ご参照ください。
You must be logged in to post a comment.