Visual Studio の RCE 脆弱性 CVE-2023-36742:PoC エクスプロイトが公開

PoC Exploit Published for Visual Studio Code RCE Vulnerability (CVE-2023-36742)

2023/11/21 SecurityOnline — Visual Studio Code のリモート・コード実行の脆弱性 CVE-2023-36742 (CVSS:7.8) の、技術的詳細および PoC エクスプロイトが、セキュリティ研究者たちにより公表された。この、VS Code 1.82.0 以下に存在する脆弱性は、悪意を持って細工された package.json ファイルで作業する際に発生するものであり、ローカルでのコマンド実行につながるものだ。悪用のシナリオは、VS Code ユーザーに悪意のプロジェクトを開かせ、package.json ファイルの依存関係セクションにある、不正なエントリを操作させることで展開される。


VS Code は、ローカルにインストールされた npm コマンドを利用して、パッケージの依存性に関する情報を取得する。この脆弱性により、npm ツールが誤って悪意のスクリプトを実行するように、パッケージの依存関係を操作することが可能となる。

この憂慮すべき問題に対して、VS Code 1.82.1 以降において修正プログラム (e7b3397) が提供されている。この修正は、信頼されていないワークスペースでの npm の使用を無効にし、npm コマンドの実行時に追加の入力検証を実装することで、この種の攻撃に対抗するものだ。また、信頼できないソースから得られた package.json ファイルの 、dependencies セクションを使用しないように推奨している。

SonarSource の2人のセキュリティ研究者である Thomas Chauchefoin/Paul Gerste は、CVE-2023-36742 の技術的詳細と、PoC エクスプロイトを公表した。この PoC は、この脆弱性を悪用する攻撃者が、脆弱なシステム上で任意のコードを実行する方法を示している。

研究者たちは、技術レポートの中で、「攻撃者にとって最も魅力的な点は、NPM のグローバル・コンフィグレーションを変更するオプション “-globalconfig” を悪用することだった」と語っている。

彼らは、ロードされた悪意のプロジェクトの一部である、description という名前のローカル・ファイルから、任意のコンフィギュレーションを読み込むシナリオについて次のように示している:

npm view -json -globalconfig description dist-tags.latest homepage version time

この方法は、最近の NPM のバージョンなどの、プラットフォームによる制約を反映していないが、このような脆弱性を悪用することで、信頼されていないワークスペースで任意のコマンド実行が可能だと示唆している。

この脆弱性の深刻さと実用性を強調するために、また、この Visual Studio Code の脆弱性の悪用方法を示すために、研究者たちはビデオを共有している。この視覚的な表現により、脆弱性 CVE-2023-36742 の深刻さが説明されるだけではなく、強い警告が開発コミュニティに対して発せられている。

この脆弱性について、最新のバージョンの NPM などのプラットフォームでは、悪用できない可能性があると、研究者たちは認めている。しかし、信頼されていないワークスペースにおける、リモート・コード実行攻撃の可能性が生じることも強調している。

ユーザーに対して強く推奨されるのは、VS Code の最新のバージョンである 1.82.1以降にアップデートすること、そして、信頼できないソースからプロジェクトを開く際には十分に注意することである。