複数の高度な脆弱性がAngular Language Service VS Code拡張機能(Angular.ng-template)で発見されました。これらは悪意のあるプロジェクトファイルと依存関係を通じて開発者をリモートコード実行(RCE)攻撃に晒します。
GitHub勧告GHSA-ccq4-xmxr-8hcqで追跡されているこれらの問題は、21.2.4より前のすべてのバージョンに影響し、最新リリースでパッチが適用されています。
これらの欠陥はAngularプロジェクトで作業する開発者、特にリポジトリを頻繁にクローンしたりサードパーティパッケージをインストールする開発者に重大なリスクをもたらします。
Angularの言語サービス拡張機能の欠陥
脆弱性は拡張機能内での不適切な入力処理と不安全な構成慣行に由来し、攻撃者が開発者のマシン上で任意のコマンドを実行できるようにします。
主な攻撃ベクトルの1つはJSDocホバーマークダウンコマンドインジェクション問題です。拡張機能はマークダウンレンダラーを信頼できるモードで構成し、ツールチップに埋め込まれたコマンドURIの実行を許可します。
ただし、Angular Language Serverはレンダリング前にJSDocコンテンツを適切にサニタイズできません。これにより、攻撃者はTypeScriptまたはJavaScriptファイルのJSDocコメント内に悪意のあるリンクを埋め込むことができます。開発者がシンボルをホバーしてレンダリングされたリンクをクリックすると、ホストシステム上で任意のコマンドを実行できます。
2番目の重大な欠陥は、ワークスペース設定内でのTypeScript SDK(tsdk)構成の不安全な処理です。拡張機能はワークスペーストラストを検証したりユーザーの同意を求めることなく、.vscode/settings.jsonファイルからtsdk関連のパスを直接読み込みます。
これらのパスはバックグラウンドNode.js言語サーバーに渡されます。このサーバーは指定されたディレクトリからtsserverlibrary.jsファイルを動的にロードします。
攻撃者はプロジェクト内に悪意のあるtsserverlibrary.jsファイルを埋め込み、設定を指すよう構成することでこの動作を悪用できます。ワークスペースがオープンすると、拡張機能はユーザーの操作なしに自動的に悪意のあるコードをロードして実行します。
これらの脆弱性の複合的な影響は深刻で、開発者環境の完全な侵害を許可します。特に、tsdkベースの攻撃はワークスペース初期化中に静かに実行され、JSDocベースの攻撃は最小限のユーザー操作が必要です。
両方のメカニズムはVS CodeのWorkspace Trustモデルを効果的にバイパスし、その中核的なセキュリティ保証を損なわせます。これにより、コードレビュー、依存関係のインストール、リポジトリのクローンなどのルーチン開発者活動が潜在的な攻撃ベクトルになります。
脆弱性は複数のCWEに分類されます。これにはCWE-79(クロスサイトスクリプティング)、CWE-94(コードインジェクション)、CWE-427(制御不可能な検索パス)、およびCWE-494(整合性検証なしのコードダウンロード)が含まれます。CVSS v4スコアは高い深刻度を示し、ネットワークベースの攻撃ベクトル、低い複雑さ、および必要な権限がありません。
開発者はAngular Language Service拡張機能をバージョン21.2.4以降に直ちにアップグレードすることを強く推奨されています。さらに、ワークスペース設定のレビュー、信頼できないリポジトリの回避、厳密なワークスペーストラストポリシーの有効化などのセキュリティベストプラクティスを実行する必要があります。
組織はまた、開発者環境の疑わしい活動を監視し、同様なサプライチェーン型攻撃への露出を減らすために信頼されていない拡張機能とスクリプトの実行を制限することを検討する必要があります。
Googleニュース、LinkedIn、およびXでフォローして、最新情報を取得し、GoogleでGBHを推奨ソースとして設定してください。
翻訳元: https://gbhackers.com/angular-language-service-extension-flaws/