Malicious extensions can abuse VS Code flaw to steal auth tokens
2023/08/08 BleepingComputer — Microsoft のコード・エディターおよび開発環境である、VS Code (Visual Studio Code) に脆弱性により、Windows/Linux/macOS のクレデンシャル・マネージャーに保存されている認証トークンの取得を、悪意のエクステンションに許す可能性があることが発見された。これらのトークンは、Git/GitHub などのコーディング・プラットフォームや、各種のサードパーティ・サービスおよび API との統合に使用されるものだ。そのため、これらのトークンの窃取により、組織のデータ・セキュリティに深刻な影響が生じ、不正なシステム・アクセスやデータ侵害などにいたる可能性があるという。

この脆弱性を発見した Cycode の研究者たちは、その詳細な内容と作成された PoC (Proof-of-Concept) を Microsoft に提供した。しかし Microsoft は、他の環境からエクステンションがサンドボックス化されることを想定していないため、この脆弱性を修正しないことを決定した。
機密情報を窃取するエクステンション
この Cycode が発見した脆弱性は、VS Code の認証トークンを OS に保存するための、エクステンション用 API である Secret Storage で、認証トークンが分離されていないことに起因している。この処理は、Windows クレデンシャル・マネージャー (Windows) /キーチェーン (macOS)/キーリング (Linux) と通信するための、VS Code のラッパーである Keytar を使用して行われる。
したがって、悪意のものであっても、VS Code で実行されているエクステンションであれば、シークレット・ストレージにアクセスし、Keytar を悪用して、保存されているトークンを取得できることを意味する。

Source: Cycode
この問題を発見した Cycode の研究者は、人気のコーディング・プラットフォームである CircleCI の、VS Code ののトークンを盗むための悪意のエクステンションを作成し、実験を開始した。彼らは、CircleCI のエクステンションを修正し、セキュア・トークンを公開するコマンドを実行し、さらに、それを研究者のサーバへ向けてダイレクトに送信することのに成功した。
その後に彼らは、ターゲットのエクステンション・コードを改ざんすることなく、それらの機密情報を抽出するための、より汎用性の高い攻撃方法を考案した。
このプロセスにおける重要な点は、すでに OS によりキーチェーンへのアクセスが許可されているアプリケーション内で実行される、VS Code のエクステンションにもキーチェーンへのアクセスが許可されていることだった。
Cycode は、「我々は他のエクステンションからだけでなく、VS Code に組み込まれた GitHub や Microsoft アカウントのログインと同期の機能からも、トークンを取得する悪意のエクステンションの PoC を開発し、トークン窃盗攻撃に成功した」と述べている。
続いて、取得したトークンを復号化する必要があるが、トークンの暗号化に使用されたアルゴリズムが、一般的に安全とされる AES-256-GCM であることを、Cycode は発見した。さらに、トークンの暗号化で使用されたキーは、現在の実行可能パスとマシン ID から導き出されたものであり、キーの再作成は容易だったという。
不正に取得されたトークンは、VS Code の Electron で実行されるカスタム JS スクリプトにより復号化され、ローカルにインストールされたエクステンションの、すべてのパスワードを解読して出力する。

Source: Cycode
Cycode の研究者たちが発見した2つ目の脆弱性は、エクステンションの名前と発行者から派生する特定の extensionId から、getFullKey 関数が機密情報を取得するというものだ。
この脆弱性により、誰もがフィールドを変更でき、VS Code を騙して別のエクステンションのセキュア・トークンへのアクセスを許可できるようになる。
Cycode は、再び CircleCI を模倣した PoC エクステンションを用いて、この不正アクセスをテストした。そして、彼らは、他のエクステンションを複製し、そのシークレットにアクセスすることは容易だと指摘している。
報告されても修正はできない?
Cycode のアナリストたちは、この脆弱性を2ヶ月前に Microsoft に報告し、彼らの PoC エクスプロイトを提供し、エクステンション・トークンを盗む能力のデモまで行った。
それにもかかわらず、Microsoft のエンジニアは、この件をセキュリティ上の懸念とは見なさず、VS Code の機密情報記憶管理フレームワークにおける、これまでの設計を維持することにした。
BleepingComputer は上記について、Microsoft にコメントを求めたが、質問に対する回答は得られていない。
なんというか、Microsoft が固まってしまうのも理解できます。この記事を読む限り、VS Code のエクステンションからのキーチェーンへのアクセス許可に、根本的な問題がるように思えます。よろしければ、Visual Studio で検索も、ご利用ください。


You must be logged in to post a comment.