またお会いしましたね。前回のブログ記事「How We Hacked Multi-Billion Dollar Companies in 30 Minutes Using a Fake VSCode Extension」が大きな反響を呼んでから、数か月が経ちました。この記事を読んでいるということは、私たちがまた何か気の滅入るようなネタを見つけたのだろうと、もうお察しかもしれません。その通りです。
Microsoft Visual Studio Codeは、世界で最も人気のあるIDEと言って差し支えないでしょう。素晴らしい製品ですし、Microsoftがこれまで積み重ねてきた開発努力には脱帽します。しかし、人気があるところには、必ず良い面と悪い面の両方が存在するものです。
前回の調査ブログ以降のここ数か月、私たちはVSCode Marketplaceを標的とした複数の継続的なキャンペーンを検出しました。これらはすでに数千の組織に影響を及ぼしています。
その中でも最も巧妙な最初のキャンペーンは、次の問いかけから始まります。「これは本物か、それともケーキか?」
ゲームの始まり
ひとつゲームをしましょう。以下は、VSCode MarketplaceにおけるZoom拡張機能の掲載ページのスクリーンショットです。
さて、これは本物でしょうか、それともケーキでしょうか?
よく見ると、本物であることを示す好材料がいくつも見つかります。インストール数の多さ、公式のZoom GitHubリポジトリ、好意的なレビューなどです。発行元(パブリッシャー)のページを開いても、やはり好印象を裏付ける情報が続きます。
ドメイン名も申し分なく、公式のサポートメールアドレスや公式SNSアカウントもすべて揃っています。あらゆる点で「本物」に見えるのです。
ところが実際には、ここ2か月にわたってVSCode Marketplaceを悩ませてきた情報窃取キャンペーンの一つでした。つまり、これは「ケーキ」だったのです。
難読化を解除して拡張機能のコードを調査すると、ロシアを拠点とするエンドポイントから.cmdファイルをダウンロードし、端末上でこのファイルを実行する子プロセスを生成していることが分かりました。非常に悪質です。
残念なことに、Marketplaceの掲載情報だけを見た場合、この拡張機能が正規のものではない可能性を示す唯一の手がかりは、発行元のドメインが未検証であるという点だけでした。さらに厄介なのは、VSCode Marketplaceに登録されている拡張機能のうち、発行元が検証済みのものは7%未満しかないという実情です。最も人気があり広く使われている拡張機能でさえ、多くの場合は未検証のままです。したがって、この指標だけを頼りに、その拡張機能が本物かケーキかを判断することはできません。
これはキャンペーンだとおっしゃいましたが、実際に何が起きているのでしょうか?
残念ながら、Zoomの事例は唯一のケースではありません。過去2か月の間に、同様の事例が6件以上確認されています。いずれも拡張機能が完全に本物であるかのように見え、脅威アクターがインストール数やレビューを偽装しながら、感染した端末上でリモートコードを実行していました。
総インストール数: 7,727,820件(一部のインストールは偽装された可能性がありますが、インストール率から見て、少なくとも数千件は実際に感染したと考えられます)
初観測日: 9月30日
同一キャンペーンに属する、特に人気の高い拡張機能の一部を以下に挙げます。
Solidity for Ethereum Language — ExtensionTotalのリスク評価ページへのリンク
Solidity (Ethereum) — ExtensionTotalのリスク評価ページへのリンク
Zoom Workspace — ExtensionTotalのリスク評価ページへのリンク
Zoom — ExtensionTotalのリスク評価ページへのリンク
Blockchain-Toolkit — ExtensionTotalのリスク評価ページへのリンク
いずれも共通した特徴を持っており、私たちExtensionTotalでは、独自のリスクモデルにより、これらの「ケーキ」拡張機能をMarketplaceに公開された時点で100%の検出率で捕捉してきました。
ケーキ以外には、どんなものがあるのでしょうか?
ケーキだけがすべてではありません。Marketplaceに影響を及ぼしているキャンペーンは他にもいくつか存在し、これらは人気拡張機能になりすますのではなく、単に開発者が欲しがりそうな機能を持っているふりをするタイプのものです。
「498」という名前の発行元は、Marketplace上に4種類の悪質な拡張機能を公開しており、わずか10日間で4,500人以上の開発者にインストールされました。残念ながら、これはExtensionTotalが日々検出している非常によくあるパターンです。悪質な拡張機能は、通報された後もMicrosoftによって最終的に削除されるまでに数週間、Marketplaceに残り続けることが少なくありません。これが、私たちが自社製品を利用するすべてのエンタープライズ顧客に対し、エンタープライズファイアウォール機能を通じてインストール数の少ない拡張機能のインストールを禁止するポリシーを設定するよう推奨している理由の一つです。
今回および類似のキャンペーンで検出された悪質な拡張機能の一部を以下に挙げます。
VoiceMod — ExtensionTotalのリスク評価ページへのリンク
Python Format + Lint: Formatter and … — ExtensionTotalのリスク評価ページへのリンク
C++ Playground: Inline REPL, Compil… — ExtensionTotalのリスク評価ページへのリンク
C/C++ Format: Astyle Code Formatter — ExtensionTotalのリスク評価ページへのリンク
HTTP Format — Formatter for plaint … — ExtensionTotalのリスク評価ページへのリンク
Better Psalm Docker VS Code — ExtensionTotalのリスク評価ページへのリンク
総インストール数: 47,253件
結局のところ、何ができるのでしょうか?
ケーキを食べるのをきっぱりやめて、すべての拡張機能をブロックするという手もあるでしょう。しかし問題は、誰もがケーキを愛しているということです。すべての拡張機能をブロックすれば、組織の生産性を確実に殺してしまいます。これは、私たちが大企業の現場で日々直面している、ソフトウェアサプライチェーンにまつわる典型的な課題です。VSCodeに限らず、ブラウザ、OSパッケージ、コードパッケージといった他のソフトウェア提供チャネルでも同様に、セキュリティと生産性をどう両立させるかという問いが突きつけられます。私たちがExtensionTotalを開発したのは、まさにこの課題に応えるためです。現場の実務者にも、企業全体にも役立つツールを目指しています。
ExtensionTotalは、Fortune 100やFortune 500企業、防衛関連のテクノロジー企業からも信頼を得ており、セキュリティプロセスを自動化することで可視性とガバナンスを提供し、この攻撃対象領域を先回りして低減・バランスさせます。
もしお話ししたい方がいらっしゃれば、こちらからお気軽にご連絡ください 🤙
— Amit Assaraf(CEO)
翻訳元: https://www.koi.ai/blog/vscode-extension-trivia-real-or-cake