悪意ある拡張機能の実態を暴く:VS Codeマーケットプレイスの衝撃的な統計データ

前回のブログ記事「1/6 | 私たちが偽のVSCode拡張機能で数十億ドル規模の企業を30分でハッキングした方法」では、わずか30分の作業で作成したVisual Studio Code拡張機能が、後に複数の時価総額数十億ドル規模の企業(世界最大級のセキュリティ企業の一社を含む)や、ある国の司法裁判所ネットワークにまでインストールされていたことが判明した経緯をお伝えしました。

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

Visual Studio Codeマーケットプレイスの統計データ

まず基本的な数字を押さえておきましょう。VSCodeマーケットプレイスには約45,000の異なる発行者による約60,000の拡張機能がホストされていますが、そのうち検証済みなのはわずか1,800件です(これについては後ほど触れます)。

マーケットプレイスがホストする拡張機能は60,000件ですが、インストール総数は33億件に達しており、平均的な開発者はIDEに40個の拡張機能をインストールしています。

60,000件の拡張機能のうち、1拡張機能あたりの平均インストール数は約55,000件ですが、中央値はわずか500件にとどまります。

直近1年間(2023年)だけで、VSCodeマーケットプレイスがホストする拡張機能の数は25%増加しました。

これらの統計は総じてMicrosoftにとっては喜ばしい話ですが、組織にとっては懸念材料です。拡張機能の人気が爆発的に高まる一方で、拡張機能の数が増え続けることは、脅威アクターが群衆に紛れ込んで組織に侵入する機会をますます増やすことにもつながるからです。

では、Visual Studio Codeは成長を続け、あらゆる場所に普及していますが、なぜセキュリティリスクとなるのでしょうか?

Visual Studio Codeは、「必要最小限の状態から自分好みにIDEを組み立てる」というアプローチを採用した最初の統合開発環境(IDE)です。これは、すべての開発者のあらゆる課題を解決しようとする機能満載の巨大なIDEを提供する代わりに、VSCodeを誰もが拡張できるプラットフォームとし、開発者が自分の作業に必要なツールを自由に選んで使えるようにするという発想の転換でした。この新しいアプローチは大きな成功を収め、月間アクティブユーザー数において当時の市場リーダーだったJetbrainsをまたたく間に追い抜きました。

その性質上、Microsoftは開発者同士が作業効率を高めるためのツールを共有できるマーケットプレイス、すなわちVSCodeマーケットプレイスを構築する必要がありました。そして、まさにここにセキュリティリスクが入り込む余地が生まれます。

IDEは組織内で最もセンシティブなセキュリティ上の要衝の一つであり、組織のコードベースやバージョン管理へのアクセス権を持ち、しばしば本番環境の機密情報や鍵にもアクセスできます。それだけでなく、IDEはホストマシン上で管理者権限を要するコードや操作を実行するため、多くの場合高い権限を持っています。

拡張機能をインストールするということは、つまりその拡張機能の発行者にホスト環境へのフルアクセスを与えることを意味します。

Visual Studio Codeの拡張機能はサンドボックス化されておらず、IDE内のあらゆるものにアクセスでき、開発者に何のフィードバックもないままホストマシン上であらゆる操作を実行できます。これらの問題については、下記リンクのシリーズ次回のブログ記事でさらに詳しく解説します。

さて、詳細と背景の説明はここまでにして、実際に何が見つかったのでしょうか?

それでは、現在(2024年6月時点)VSCodeマーケットプレイスにホストされている、悪意ある拡張機能や高リスクな拡張機能の驚くべき世界をご紹介しましょう。

まずは数字から見ていきましょう。今回の初期調査で判明したのは以下の通りです。

既知の悪意あるパッケージ依存関係を含む拡張機能が1,283件あり、合計インストール数は2億2,900万件に上ります(Google OSV Scannerに基づく)。

ホストシステム上の/etc/passwdファイルの読み取りを試みる拡張機能が87件

JSコード内にハードコードされたIPアドレスと通信する拡張機能が8,161件

ホストマシン上で正体不明の実行可能バイナリまたはDLLを実行する拡張機能が1,452件

ハードコードされた機密情報の埋め込みが確認された拡張機能が267件

コードおよびリソースがVirusTotalによって高い信頼度でフラグ付けされた拡張機能が145件

公式リポジトリとして別の発行者のGithubリポジトリを流用しており、模倣拡張機能である可能性を示す拡張機能が2,304件

組織内にAI利用に関する真新しいポリシーがある方はご注意を。機能の一部としてサードパーティ製AIモデルを使用していることが判明した拡張機能は783件ありました。

補足編集:これらの指標のいずれも、その拡張機能が悪意あるものであることを保証するものではなく、実際にはほとんどが悪意あるものではない可能性が高いという点は重要な注意点です。ただし、これらの指標は組織が直面している状況を可視化する一助となるものです。各組織はこれらの数値や指標をもとに、自らのリスク許容度を調整・選択し、それぞれにとって適切な判断を下すことができます。私たちには、無害な拡張機能を悪意あるものと呼んだり、逆に悪意ある拡張機能を無害と呼んだりする意図は一切ありません。

仮に実際に悪意ある拡張機能の数がこの初期数値のわずか5%だったとしても、私たちは非常に厳しい状況に置かれています。まだ悪意あるものではないものの高リスクな拡張機能についても言及しておく必要があります。これも組織にとって大きなリスクです。次回のブログ記事で述べるセキュリティ設計上の欠陥により、悪意あるコードはいつでも後から埋め込まれる可能性があるからです。さらに他にも多くの事例があります。今回の悪意ある拡張機能・高リスク拡張機能の調査で見つかった見事なコードスニペットをブログ記事の末尾に掲載しています。これらはすべてMicrosoftに報告済みです。

これらの数字からもわかる通り、Visual Studio Codeマーケットプレイスには組織にリスクをもたらす拡張機能が数多く存在しています。VSCode拡張機能は悪用されやすく、露出した攻撃経路でありながら、可視性がほぼゼロで、影響度もリスクも高いという特徴を持っています。この問題は組織に対する直接的な脅威であり、セキュリティコミュニティの注目に値します。

この調査と前回のブログ記事での実験を終えた私たちは、拡張機能とVSCodeマーケットプレイスに存在するこの攻撃経路を可能にしている重大なセキュリティ設計上の欠陥について、Microsoftに書簡を送ることにしました。この著しく欠陥のあるマーケットプレイスについて論じた次回のブログ記事が公開されています——3/6 | Microsoftへの書簡:Visual Studio Code拡張機能の設計上の欠陥を暴くです。

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

悪意ある拡張機能・高リスク拡張機能の殿堂

以下は、今回の調査中に見つかった、VSCodeマーケットプレイス上で現在(2024年6月時点)公開されている興味深い悪意あるコードスニペットの一部です——

明確に悪意あると判断される拡張機能が見つかり次第、このリストは今後も追加・更新していく予定です。

翻訳元: https://www.koi.ai/blog/2-6-exposing-malicious-extensions-shocking-statistics-from-the-vs-code-marketplace

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