30分です。30分。世界で最も人気のあるIDE(月間ユーザー数1500万以上のVisual Studio Code)の拡張機能を開発、公開、完成させるのにかかった時間です。この拡張機能はIDEの色を変更しながら、すべてのソースコードをリモートサーバーにリークします。コードを作成し、アセットをデザインし、ドメインを登録し、拡張機能を公開し、偽のレビューを生成し、最初の被害者を獲得し、VSCodeマーケットプレイス(月間450万ビューを獲得するページ)でトレンドステータスに到達し、複数の数十億ドル規模の時価総額を持つ企業内にインストールされていることを確認しました。すべてが30分の作業でした。
私たちは最も安全なアプリケーションと環境の頂点にいますが、最も洗練されたセキュリティ環境を回避するのに30分しかかかりません。
これは開発者拡張機能の語られていないストーリーです。
サイバーセキュリティ分野のアイデアを模索していた際、Visual Studio Code拡張機能で発見された脆弱性について論じているミディアム記事に出くわしました。このストーリーでは、開発者のマシンについての情報を盗みながら、単なるテーマのふりをしていた、よく知られた広く使用されているVSCode拡張機能について説明されていました。その件について調査した後、VSCode拡張機能や他のIDEで見つかった脆弱性について言及する数多くの記事に出くわしましたが、この明らかな問題の解決策を見つけることができませんでした。そこで私たちはそれを構築することにしました。
VSCodeマーケットプレイスのハッキング
少し戻りましょう。構築を開始する前に、ソースコードを盗んでリモートサーバーに送信する悪意のあるVSCode拡張機能を作成するのがどれほど難しいかをテストすることにしました。開始するために、何を構築するかを選択する必要があり、有名なVSCode拡張機能「Prettier — Code formatter」のアセットと名前を盗んだ悪意のあるコピーキャット拡張機能で見つかったコードについて言及した記事に出くわしたことを思い出しました。インスピレーションを感じて、人気のあるDraculaテーマ「Dracula Official」(600万以上のインストール数)を取得し、独自のコピーキャット「Darcula Official」を作成することにしました。
30分後、ソースコードをダウンロードしてコードを追加し、すべてのマーケティングリソースをコピーしました。これが結果です—
公式のdraculatheme.comに似たdarculatheme.comというドメイン名も取得しました。驚くべきことに、VSCodeマーケットプレイスで検証済みパブリッシャーになるために必要な唯一のことはドメインを確認することです。数分後、私たちの信頼性は大幅に向上しました—
私たちが見つけたもう1つの興味深い特徴は、package.jsonに任意のGithubリポジトリを追加することだけで、Microsoftがリポジトリを所有していなくても、拡張機能ページに公式リポジトリとしてリストするのに十分だということです。そこで私たちは、信頼性をさらに高めるために公式Draculaテーマリポジトリを追加することにしました。
信頼性が確立された現在、興味深い部分を追加しました。テーマ拡張機能に追加したコードの一部は次のとおりです—
簡潔に言うと、被害者がエディタでドキュメントを開くたびに、コードを読んで私たちのRetoolサーバーに送信し、さらにホスト名、ドメイン、プラットフォーム、拡張機能の数などのホストマシンに関する情報を含むビーコンをサーバーに送信します。
拡張機能を公開してからほんの数分後、VSCodeマーケットプレイスで公開されました。私たちは最初の被害者を獲得しました。
氏名、DESKTOP-97KBB6H。
1日後、拡張機能を宣伝したり、開発者にインストールさせるために何か特別なことをしたりしなくても、すでに100人以上の異なる被害者がいました(「Darcula Theme」を検索すると、最初のページに表示され、唯一の検証済みパブリッシャーでした)。
数日後、何か大きなことが起こりました。時価総額が4830億ドルの上場企業のドメインとネットワーク内のWindowsマシンと特定された被害者がいることに気付きました。その後、世界的に有名な複数の数十億ドル規模の企業、世界最大のセキュリティ企業の1つ、特定の国の司法裁判所ネットワーク内にいることを確認しました(会社名は企業のために自分たちのために保管しています)。この攻撃ベクトルの計り知れない危険性を私たちに証明しました。
そして最後に、私たちはこれを見て目が覚めました。マーケットプレイスでトレンド化していました—
悪意のある拡張機能を作成および公開するのがどれほど簡単かを直接経験したので、VSCode拡張機能のリスクを評価する際に何を探すべきかを知っています。
では、これからどうするのか?
私たちの旅を始めたとき、それが私たちを導く道を想像したことはありませんでした。後から考えると、この攻撃ベクトルのリスクと高い影響力の可能性は明確であり、脅威行為者にとってその計り知れない価値を強調しています。
この実験の重要性を認識して、私たちはVSCodeマーケットプレイスでの悪意のある拡張機能の現在の状態をさらに深く掘り下げることにしました。
次のブログ投稿である“2/6 | 悪意のある拡張機能の露出:VS Codeマーケットプレイスからの衝撃的な統計“は私たちの調査結果を明らかにしており、今すぐ公開されています。
編集:この問題を解決するのに役立つ無料のコミュニティツールをリリースしました。チェックアウトExtensionTotal
注:この記事を作成した後、10以上の複数の数十億ドル規模の企業との責任ある開示プロセスを開始して、組織内のセキュリティリスクの軽減を支援しました。
免責事項:誰にも害を与えないために、実際のソースコードはリークされませんでした。
編集:それは私たちの注意に持ってこられました同様の研究は昨年earlier VSCode拡張機能に関して行われ、同様の調査結果を持っていました(1年後何も変わっていないのを見るのは悲しいことです)。私たちの調査では、おそらくより悪い調査結果を見つけました(数値と私たちが到達した組織の規模による、RCEデモンストレーション、およびより多くの潜在的に悪意のある拡張機能の調査結果)。さらに、私たちはこの問題の解決策を自分たちの上に置くことにしました。「ExtensionTotal」と呼ばれるまもなくリリースします。