広く利用されているMicrosoft Visual Studio Code(VS Code)拡張機能のXSS(クロスサイトスクリプティング)脆弱性により、数百万人の開発者がローカルファイルを外部に窃取されるリスクにさらされていた。
この問題は、1100万回以上ダウンロードされている公式のLive Preview拡張機能に影響し、悪意のあるWebサイトが開発者のlocalhost環境とやり取りできる状態になっていた。
「…悪意のあるWebサイトから認証なしで送信されたリクエストにより、Live Previewサーバーを実行している開発者のマシン上にある内部のルートファイルを列挙できる」と述べたOX Securityの研究者ら。
VS CodeのXSS脆弱性
Live Previewは、IDEを離れることなくWebアプリケーションをローカルでレンダリングしてテストできる、Microsoft公式のVS Code拡張機能だ。
この機能を実現するため、拡張機能は開発者のマシン上で組み込みHTTPサーバーを実行し、通常はlocalhostアドレスからアクセスできる。
このアーキテクチャは開発ワークフローを効率化する一方で、拡張機能がWebリクエストを処理し、ローカルファイルシステムと直接やり取りすることも意味するため、安全な入力処理が不可欠になる。
この問題は、Live Previewサーバー内で信頼できない入力を不適切に処理していたことに起因する。
具体的には、「ページが存在しない」場合、relativePathFormattedというパラメーターが適切にサニタイズされないままブラウザーに返されていた。
この値はエスケープされていなかったため、攻撃者は細工したJavaScriptペイロードをレスポンスに注入でき、反射型XSS脆弱性につながった。
実際、開発者がLive Previewを実行した状態で悪意のある、または侵害されたWebサイトにアクセスすると、そのサイトは認証なしのHTTPリクエストをローカルのLive Previewサーバーに送信できた。
XSSの状態により、注入されたスクリプトは信頼されたlocalhostサービスのコンテキスト内で実行可能だった。これにより、外部のWebコンテンツが内部の開発リソースとやり取りできる状態になっていた。
研究者らは、この挙動によって攻撃者が内部のルートディレクトリを列挙し、.env設定ファイルなどの機密性の高いローカルファイルにアクセスして、APIキーやパスワードを抜き出し、専有のソースコードを取得できることを実証した。
Live Previewのバージョン0.4.16以前はすべて、この脆弱性の影響を受ける。
Microsoftはその後、最新のパッチで影響を受ける入力を適切にサニタイズしてこの問題に対処したが、古いバージョンを実行しているシステムは依然として潜在的なデータ流出のリスクにさらされている。
開発環境におけるリスクの軽減
組織は、更新を適用し、追加のハードニング対策を実施することで開発環境を保護し、リスクへの露出を減らすべきだ。
開発用ワークステーションにはソースコードや認証情報が保存されていることが多いため、ローカルのセキュリティ制御を強化すれば、同様の脆弱性による影響を抑えられる。
- Live Preview拡張機能を最新バージョンに更新し、規律あるパッチ管理プログラムを実施して、IDE、拡張機能、OS、依存関係を管理する。
- 攻撃対象領域を縮小するため、不要なVS Code拡張機能を無効化またはアンインストールし、積極的に使用していないときはローカル開発サーバーを停止する。
- localhostベースのサービスへのアクセスをホストファイアウォールで制限し、ネットワークの分離や、ローカルリソースへのクロスオリジンリクエストを制限する制御を行う。
- ネットワークの出口フィルタリングとDNS監視を実装し、開発用ワークステーションからの不審な外向き接続を検知またはブロックする。
- エンドポイントセキュリティを強化するため、EDRツールを導入し、異常なlocalhostアクティビティ、予期しないファイルアクセス、通常とは異なるスクリプト実行を監視する。
- 機密データを保護するため、安全なシークレット管理ソリューションを使用し、認証情報を.envなどの平文ファイルに保存しない。
- 定期的にインシデント対応計画をテストして更新し、開発環境が侵害された場合に迅速な検知、封じ込め、認証情報のローテーションを確実に行えるようにする。
これらの対策を組み合わせることで、侵害された開発環境による潜在的な被害範囲を抑えながら、同様の脅威に対する長期的なレジリエンスを構築できる。
ローカル開発ツールとセキュリティリスク
今回のインシデントは、特に組み込みのローカルサーバーなどの機能がローカルファイルシステムとやり取りする場合に、現代の開発ツールに伴うセキュリティ上の考慮事項を浮き彫りにした。
IDE拡張機能が新たな機能を追加し続ける中、組織は他の機密性の高いシステムで用いているものと同様、一貫したセキュリティ制御を開発用ワークステーションにも適用すべきだ。
デジタルエコシステム全体でリスクが高まる中、組織はゼロトラストソリューションを導入し、アプリケーション、ユーザー、ローカルリソース間の暗黙の信頼を減らしている。





