マルチビリオンダラー企業を偽のVSCode拡張機能でハッキングした方法

30分。私たちが偽のVisual Studio Code(月間ユーザー数1,500万人を超える、この惑星で最も人気のあるIDE)拡張機能を開発し、公開し、仕上げるまでにかかった時間です。この拡張機能はIDEの配色を変える一方で、ソースコードをすべてリモートサーバーに漏洩させるというものでした。コードを書き、素材をデザインし、ドメインを登録し、拡張機能を公開し、偽のレビューを生成し、最初の被害者を得て、VSCodeマーケットプレイス(月間450万ビューを誇るページ)でトレンド入りを果たし、さらに複数のマルチビリオンダラー規模の時価総額を持つ企業内にインストールされていることまで確認できました。これらすべてが、わずか30分の作業で完了したのです。

私たちはセキュアなアプリケーションと環境の頂点に立っているはずなのに、最も洗練されたセキュリティ環境を突破するのに必要な時間はわずか30分でした。

これは、開発者向け拡張機能にまつわる、これまで語られてこなかった物語です。

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

VSCodeマーケットプレイスをハッキングする

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

30分後、ソースコードをダウンロードし、コードを追加し、マーケティング素材をすべてコピーし終えると、次のようなものが出来上がりました。

さらに公式のdraculatheme.comによく似たdarculatheme.comというドメイン名まで取得しました。驚いたことに、VSCodeマーケットプレイスで「検証済み」パブリッシャーになるために必要なのは、ドメインを認証することだけでした。そのため、数分後には私たちの信頼性は大きく向上しました。

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

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

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

驚くべきことに、拡張機能を公開してからわずか数分後、それはVSCodeマーケットプレイスに掲載され、私たちは最初の被害者を得ました。

DESKTOP-97KBB6Hさん、はじめまして。

それからわずか1日後には、拡張機能を宣伝したり開発者にインストールを促すような特別なことを何もしていないにもかかわらず、すでに100件を超える被害者が発生していました(「Darcula Theme」で検索すると、私たちは1ページ目に表示され、しかも唯一の「検証済み」パブリッシャーでした)。

数日後、大きな出来事が起こりました。時価総額4,830億ドルを誇る上場企業のドメインおよびネットワーク内にあるWindowsマシンが被害者として確認できたのです。さらにその後、広く知られている数十社ものマルチビリオンダラー企業、世界有数のセキュリティ企業のひとつ、そしてある国の司法裁判所のネットワーク内にまで及んでいることを確認しました(各社への配慮から社名は伏せます)。これにより、この攻撃ベクトルの危険性が計り知れないものであることが証明されました。

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

悪意ある拡張機能を作成・公開することがいかに容易かを身をもって体験したことで、VSCode拡張機能のリスクを評価する際に何に着目すべきかが分かるようになりました。

では、これからどうするか

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

今回の実験の重大さを実感した私たちは、VSCodeマーケットプレイスにおける悪意ある拡張機能の現状について、さらに深く掘り下げることにしました。

次のブログ記事、2/6 | 悪意ある拡張機能の実態を暴く: VS Codeマーケットプレイスに関する衝撃的な統計データで調査結果を公開していますので、ぜひご覧ください。

追記: この問題の解決を支援する無料のコミュニティツールを公開しました。ぜひ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