前のブログ投稿 「1/6 | 偽のVSCode拡張機能を使用して300億ドル規模の企業を30分でハッキングした方法」では、30分の作業で作成したVisual Studio Code拡張機能が、世界最大級のセキュリティ企業を含む複数の300億ドル規模の時価総額を持つ企業の内部にインストールされていることが後に確認されたこと、そしてある国の司法裁判所ネットワークにインストールされていることが確認されたという物語を紹介しました。
我々の実験の重要性を認識し、VSCodeマーケットプレイスの悪質な拡張機能の現在の状態をさらに掘り下げることを決定しました。
Visual Studio Code マーケットプレイス統計
基本的なことから説明します。VSCode マーケットプレイスは約60,000の拡張機能を約45,000の異なるパブリッシャーからホストしており、そのうち1,800個のみが認証されています(これについては後で説明します)。
マーケットプレイスが60,000の拡張機能をホストしている一方で、総インストール数は33億件であり、平均的な開発者はIDE内に40個の拡張機能をインストールしています。
60,000個の拡張機能のうち、拡張機能あたりの平均インストール数は約55,000件ですが、中央値は500件に過ぎません。
昨年だけ(2023年)でVSCode マーケットプレイスはホストしている拡張機能の数で25%成長しました。
これらの統計はマイクロソフトにとって全体的には素晴らしいものですが、拡張機能の人気が急速に成長しており、拡張機能の数の増加は脅威者が群衆の中に同化し、組織に浸透する機会をますます提示しているため、組織にとっては懸念事項です。
では、Visual Studio Code は成長しており、ほぼどこにでもありますが、なぜそれはセキュリティリスクなのでしょうか?
Visual Studio Code は「ベアボーン構成IDEを自分で作成する」アプローチを採用した最初のIDE(統合開発環境)です。すべての開発者のすべての問題を解決しようとする大規模で機能が豊富なIDEを提供する代わりに、VSCodeは誰でも拡張できるプラットフォームであり、開発者が彼らの仕事を完了するために必要なツールを選択して選ぶことができます。この新しいアプローチは大成功を収め、月単位のアクティブユーザーで当時の市場リーダーであるJetbrainsを迅速に上回りました。
本来的に、これはマイクロソフトが、同志の開発者がツールを共有して彼らの仕事をより効率的にすることができるマーケットプレイスであるVSCode マーケットプレイスを作成する必要があることを意味していました。そしてここがセキュリティリスクが生じる場所です。
IDE は組織内で最も機密性の高いセキュリティの瓶首の1つであり、組織のコードベース、バージョン管理、および本番環境へのシークレットとキーへのアクセスを持っています。それだけでなく、しばしば IDE はホストマシン上でコードとアクションを実行する場合が多く、管理者レベルの権限が必要です。
拡張機能をインストールすることで、これは拡張機能パブリッシャーにホスト環境への完全なアクセス権を与えることを意味します。
Visual Studio Code の拡張機能はサンドボックス化されていません。IDE内のあらゆるものにアクセスでき、開発者がフィードバックを受けることなくホストマシン上であらゆるものを実行できます。これらの問題についてはより詳しく、以下にリンクされているシリーズの次のブログ投稿で説明しています。
さて、詳細と背景は十分です。我々は何を見つけたのでしょうか?
現在(2024年6月)VSCode マーケットプレイスにホストされている、我々が見つけた悪質で非常にリスクの高い拡張機能の素晴らしい世界を紹介させてください。
数字について話しましょう。初期の研究では以下を見つけました —
1,283個の拡張機能には既知の悪質な依存関係が含まれており、合計229百万インストール数を持っています(Google OSV Scannerベース)。
87個の拡張機能がホストシステム上の/etc/passwdファイルを読み込もうとします。
8161個の拡張機能がJS コードからハードコードされたIPアドレスと通信します。
1,452個の拡張機能がホストマシン上で未知の実行可能バイナリまたはDLLを実行します。
267個の拡張機能には検証されたハードコードされたシークレットが埋め込まれています。
145個の拡張機能のコードとリソースはVirusTotalによって高い信頼度でフラグが付けられました。
2,304個が別のパブリッシャーの Github リポジトリを公式にリストされたリポジトリとして使用しており、模倣拡張機能を示唆しています。
あなたの組織に新しいAIポリシーがありますか?783個の拡張機能は機能の一部としてサードパーティのAIモデルを使用していることが判明しました。
説明編集: これらのインジケータのいずれも拡張機能が悪質であることを保証するわけではなく、実際にはそうではない可能性が最も高いことに言及することが重要です。しかし、これらのインジケータは、組織が直面していることを示すのに役立つようになっています。各組織はこれらの数値とインジケータに関する独自のリスク許容度を調整して選択し、自分たちにとって何が正しいかを決定することができます。我々は無実の拡張機能を悪質と呼ぶまたはその逆の目標を持っていません。
実際の悪質な拡張機能の数が我々の初期数のわずか5%であっても、我々は本当に悪い状況にあります。次のブログ投稿で言及するセキュリティ設計の欠陥のため、悪質なコードが常に導入される可能性があるため、高リスクではあるが悪質ではない拡張機能も組織にとって大きなリスクです。そしてさらに多くあります。ブログ投稿の最後で悪質でリスクの高い拡張機能の研究中に見つけた素晴らしいコードスニペットを添付しました。それらはすべてマイクロソフトに報告されています。
数字からわかるように、Visual Studio Code マーケットプレイスには組織にリスクをもたらす多くの拡張機能があります。VSCode拡張機能は悪用され、露出した攻撃ベクトルであり、可視性がなく、影響が大きく、リスクが高い。この問題は組織に対する直接的な脅威であり、セキュリティコミュニティの注目に値する。
この研究と前のブログ投稿での実験を完了した後、このアタックベクトルを可能にするエクステンションとVSCode マーケットプレイスの膨大なセキュリティ設計の欠陥に対処するマイクロソフトへの手紙を書くことにしました。非常に欠陥のあるマーケットプレイスについて話す次のブログ投稿が発表されました — 「3/6 | マイクロソフトへの手紙: Visual Studio Code エクステンションの設計の欠陥を明らかにする」。
編集: この問題を解決するのに役立つ無料コミュニティツールをリリースしました。ExtensionTotalをチェックアウトしてください
悪質でリスクの高い拡張機能の殿堂
以下は、研究中にVSCode マーケットプレイスでライブ(2024年6月)で見つけた興味深い悪質なコードスニペットのいくつかです —
明らかに悪質な拡張機能を見つけたので、さらに追加してこのリストを更新します。