
あるセキュリティ研究者が、Visual Studio Code(VS Code)のゼロデイ脆弱性に対するエクスプロイトコードを公開しました。この脆弱性を悪用すると、攻撃者はユーザーにリンクをクリックさせるだけでGitHub認証トークンを窃取できます。
Microsoftは、公式パッチが存在しない状態で公開または積極的に悪用されているソフトウェアの欠陥を「ゼロデイ」と分類しています。
研究者のAmmar Askar氏が火曜日に公開したブログ記事によると、このVS Codeの脆弱性を利用すると、攻撃者はVS Codeのサンドボックス化されたWebviewメッセージパッシングシステムを悪用し、GitHubリポジトリを操作するためのブラウザベースのVisual Studio Codeであるgithub.devにOAuthトークンが渡される際に、そのトークンを窃取する悪意のある拡張機能をインストールできます。
同日に公開された概念実証(PoC)エクスプロイトは、Webview内で悪意のあるJavaScriptを実行してメインエディタでのキー入力を模擬し、github.devに送信されたGitHub OAuthトークンを抽出してGitHub APIに問い合わせることで、被害者がアクセス可能なすべてのプライベートリポジトリを列挙する拡張機能をインストールするものです。
「この機能は、github.comがgithub.devにOAuthトークンをPOSTし、そのトークンを使ってGitHubをユーザーの代わりに操作できるようにすることで実現されています」とAskar氏は述べています。「このトークンは特定のリポジトリに限定されたものではないため、ユーザーがアクセス可能な他のすべてのリポジトリへのフルアクセスが可能になります。」
この脆弱性はまだパッチが適用されておらず、CVE IDも割り当てられていませんが、VS Codeユーザーはブラウザでgithub.devのCookieとローカルサイトデータを削除することで自衛できます。URLバーの設定アイコンをクリックし、「Cookieとサイトデータ」→「デバイス上のサイトデータを管理」から削除してください。
この対処を施しておくことで、この脆弱性を悪用しようとするリンクをクリックした際に「拡張機能『GitHub Repositories』がGitHubを使用してサインインしようとしています。」という警告が表示されるようになります。

Askar氏はバグを開示する1時間前にGitHubへ通知したと述べています。即時の公開開示を選択した理由については、過去にVS Codeのバグを報告した際、Microsoftがクレジットや影響の説明なしにサイレント修正を行ったという否定的な経験があったためと説明しています。
「GitHubへの通知はあくまで礼儀的なものであり、意図は完全な公開開示でした。過去にgithub.devのバグをGitHubに報告した経験では、スコープ外だからMSRCに報告するよう言われるだけです。記事でも述べたとおり、VSCodeのバグについてMSRCとやり取りするつもりは全くありません」と同氏は付け加えています。
「VSCodeのバグ報告でMSRCと最後にやり取りした際を振り返ると、それは非常に不快な経験でした。私が指摘したバグをクレジットなしでサイレント修正され、しかもセキュリティ上の影響はないとマークされたのです。
「その投稿でも述べたとおり、今後はVSCodeで発見したセキュリティバグはすべて完全公開する方針です。」
この件に先立ち、「Nightmare Eclipse」というハンドルネームを使う匿名のセキュリティ研究者も、Microsoftセキュリティ レスポンス センター(MSRC)の開示プロセスへの不満を表明しながら、Microsoftの各種製品に存在する一連のゼロデイ脆弱性を公開していました。
過去数カ月間に、Nightmare Eclipse氏はBlueHammer、RedSun、GreenPlasma、MiniPlasmaの権限昇格ゼロデイ脆弱性(最初の2件はすでに攻撃に悪用中)、YellowKey(保護されたドライブへのアクセスを可能にするWindows BitLockerのゼロデイ)、そしてUnDefend(Microsoft Defenderの定義ファイル更新をブロックするゼロデイ)を公開しています。
当初、MicrosoftはNightmare Eclipse氏によるゼロデイ漏洩に対して法的措置をちらつかせ、続いて「個人が法律を破り、顧客に実害をもたらす悪意ある行為に及んだ場合」には「必要に応じて法執行機関と連携する」とツイートしました。
BleepingComputerはAskar氏が公開したVS Codeのゼロデイ脆弱性についてMicrosoftにコメントを求めましたが、回答はすぐには得られませんでした。
検証のギャップ:自動ペンテストが答えるのは1つの問い。本当に必要なのは6つ。
自動ペンテストツールは確かな価値を提供しますが、それらが答えるように設計された問いは「攻撃者はネットワーク内を移動できるか?」という一点だけです。脅威をコントロールがブロックするか、検知ルールが発動するか、クラウド設定が堅牢かどうかをテストする目的では設計されていません。
本ガイドでは、実際に検証すべき6つの領域を解説しています。