偽のVSCode拡張機能で数十億ドル規模の企業をハッキングした方法

30分。これが、リモートサーバーにソースコードを丸ごと流出させながらIDEの配色を変更するVisual Studio Code(月間1,500万人以上が利用する、地球上で最も人気のあるIDE)拡張機能を開発し、公開し、仕上げるまでにかかった時間です。私たちはコードを書き、素材をデザインし、ドメインを登録し、拡張機能を公開し、偽レビューを生成し、最初の被害者を獲得し、VSCode Marketplace(月間450万ビューを誇るページ)でトレンド入りを果たし、さらに数十億ドル規模の時価総額を持つ複数の企業内でのインストールを確認するところまで、すべてわずか30分の作業で完了させました。

私たちはセキュアなアプリケーションと環境の頂点にいるはずなのに、最も高度なセキュリティ環境ですら、突破するのにたった30分あれば十分なのです。

これは、開発者向け拡張機能にまつわる知られざる物語です。

サイバーセキュリティ分野でアイデアを探していたところ、Visual Studio Code拡張機能に見つかった脆弱性について書かれたMediumの記事に偶然出会いました。その記事は、広く使われている有名なVSCode拡張機能が、単なる別のテーマを装いながら開発者のマシン情報を盗んでいたという話を扱っていました。この件を調べていくうちに、VSCodeの拡張機能や他のIDEに見つかった脆弱性に言及する記事が数え切れないほどあることに気づきましたが、この明白な問題に対する解決策はどこにも見当たりませんでした。そこで、私たちは自分たちでそれを作ることにしました。

VSCode Marketplaceをハッキングする

少し話を戻します。実際に構築を始める前に、ソースコードを盗んでリモートサーバーに送信する悪意のあるVSCode拡張機能を作るのがどれほど難しいかを検証してみることにしました。まず何を作るかを決める必要がありましたが、私たちは以前、「Prettier — Code formatter」という人気のVSCode拡張機能の素材と名前を盗用したコピーキャット拡張機能に悪意のあるコードが見つかったという記事を思い出しました。そこで着想を得て、600万件以上のインストール数を誇る人気のDraculaテーマ「Dracula Official」を選び、自分たち版のコピーキャット「Darcula Official」を作成することにしました。

ソースコードをダウンロードし、自分たちのコードを追加し、マーケティング素材をすべてコピーしてから30分後、出来上がったのがこちらです。

公式のdraculatheme.comによく似たdarculatheme.comというドメイン名まで用意しました。驚くべきことに、VSCode Marketplaceで「検証済み発行者」になるために必要なのは、ドメインを確認することだけでした。そのため、数分後には私たちの信頼性は大きく高まっていました。

もう一つ興味深い抜け穴を見つけました。package.jsonに任意のGitHubリポジトリを追加するだけで、そのリポジトリを所有していなくても、Microsoftはそれを拡張機能ページ上の公式リポジトリとして表示してしまうのです。そこで、私たちは公式Draculaテーマのリポジトリを設定し、信頼性をさらに高めました。

信頼性を確保したところで、いよいよ本題の部分を追加しました。以下は、テーマ拡張機能に追加したコードの一部です。

簡単に言えば、被害者がエディタでドキュメントを開くたびに、私たちはそのコードを読み取ってRetoolサーバーに送信し、さらにホスト名、ドメイン、プラットフォーム、拡張機能の数など、ホストマシンの情報をビーコンとして自分たちのサーバーに送信していました。

そして驚くべきことに、拡張機能を公開してからわずか数分後には、それはVSCode Marketplace上で公開状態となり、私たちは最初の被害者を獲得していました。

DESKTOP-97KBB6Hさん、あなたのことです。

その翌日には、拡張機能の宣伝も、開発者にインストールさせるための特別な工作も一切していないにもかかわらず、すでに100件以上の異なる被害者を確認していました(「Darcula Theme」で検索すると、私たちは1ページ目に表示され、しかも唯一の検証済み発行者でした)。

数日後、大きな出来事が起こりました。あるドメインとネットワーク内のWindowsマシンが被害者として特定されたのですが、それは時価総額4,830億ドルの上場企業に属するものでした。さらにその後、世界的に広く知られる数十億ドル規模の企業数十社の内部、世界有数のセキュリティ企業の一つの内部、そしてある国の司法裁判所ネットワークの内部にまで侵入が及んでいたことを確認しました(各社のためにも、社名は伏せておきます)。これにより、この攻撃ベクトルが持つ計り知れない危険性を痛感させられました。

そして最後には、目を覚ますとこの光景が待っていました。私たちはマーケットプレイスでトレンド入りしていたのです。

悪意のある拡張機能を作成し公開することがいかに簡単かを身をもって経験した今、私たちはVSCode拡張機能のリスクを評価する際に何を確認すべきかを理解しています。

それで、これからどうするのか

この取り組みを始めたとき、それがどのような道へと私たちを導くのか、まったく想像していませんでした。今振り返ってみると、この攻撃ベクトルが持つリスクと高い影響力は明白であり、脅威アクターにとっての価値の大きさを浮き彫りにしています。

この実験の重要性を実感した私たちは、VSCode Marketplaceにおける悪意のある拡張機能の現状をさらに深く掘り下げることにしました。

次のブログ記事、2/6 | 悪意のある拡張機能を暴く:VS Code Marketplaceの衝撃的な統計データで、私たちの調査結果を公開していますので、ぜひご覧ください。

追記:この問題の解決を支援する無料のコミュニティツールを公開しました。ExtensionTotalをぜひご確認ください。

注記:この記事の執筆後、私たちは10社を超える数十億ドル規模の企業に対し、組織内のこのセキュリティリスクを軽減するための責任ある情報開示(レスポンシブル・ディスクロージャー)のプロセスを開始しました。

免責事項:誰にも被害が及ばないよう、実際のソースコードは流出させていません。

追記:昨年、VSCode拡張機能に関して同様の調査がすでに行われており、似たような結果が報告されていたことをご指摘いただきました(1年が経った今も何も変わっていないというのは残念なことです)。私たちの調査では、到達できた組織の数や規模、RCE(リモートコード実行)の実証、さらに潜在的に悪意のある拡張機能の追加発見といった点において、より深刻とも言える結果が得られました。加えて、私たちはこの問題を解決するためのソリューションの構築に自ら着手しており、「ExtensionTotal」という名称で近日公開予定です。

翻訳元: https://www.koi.ai/blog/1-6-how-we-hacked-multi-billion-dollar-companies-in-30-minutes-using-a-fake-vscode-extension

本記事は koi.ai の記事を翻訳・要約したものです。