VSCodeの拡張機能クイズ:本物?それともケーキ?

またしても私です。かなりの反響をいただいた前回のブログ記事「偽のVSCode拡張機能を使い、30分で数十億ドル規模の企業をハッキングした方法」から数か月が経ちました。ここまで読んでくださっている読者の皆さんなら、今回もまた何か気の滅入るような話を持ってきたのだろうと察しがついているはずです。ええ、その通りです。

Microsoft Visual Studio Codeは、当然のことながら世界で最も人気のあるIDEです。素晴らしい製品ですし、Microsoftがこれまで積み重ねてきた開発努力には脱帽します。ただし、これほどの人気を誇る以上、良い面だけでなく悪い面もついて回ります。

前回のリサーチブログ以降のここ数か月、私たちはVSCode Marketplaceを標的とした複数の継続的なキャンペーンを検知しており、すでに数千の組織に影響が及んでいます。

最も巧妙な最初のキャンペーンは、こんな問いから始まります。これは本物か、それともケーキか?

ゲームを始めよう

ここでひとつゲームをしましょう。以下は、VSCode MarketplaceにおけるZoom拡張機能のリスティングページのスクリーンショットです。

さて、これは本物でしょうか、それともケーキでしょうか?

よく見ると、本物であることを示す好材料が揃っているように見えます。インストール数の多さ、公式のZoom GitHubリポジトリ、好意的なレビューの数々です。発行元(パブリッシャー)のページを開いても、さらに安心材料が重なります。

ドメイン名も申し分なく、公式サポート用メールアドレスもあり、公式のSNSアカウントもすべて揃っています。何もかもが問題なさそうに見えます。

しかし実際には、これはここ2か月間VSCode Marketplaceを悩ませ続けている情報窃取キャンペーンの一つです。つまり、これは「ケーキ」だったのです。

難読化を解除し、コードを調査・分析していくと、この拡張機能がロシア拠点のエンドポイントから.cmdファイルをダウンロードし、端末上で子プロセスを生成してこの.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を開発したのは、まさにこの課題を解決するためであり、実務担当者にも企業にも役立つツールを目指しました。

Fortune 100企業、Fortune 500企業、防衛関連テクノロジー企業からも信頼を得ているExtensionTotalは、セキュリティプロセスを自動化し、可視性・ガバナンス・予防的なリスク管理を提供することで、この攻撃対象領域を縮小し、バランスを取ることを可能にします。

お話ししたいことがあれば、こちらまでお気軽にご連絡ください 🤙

— Amit Assaraf、CEO

翻訳元: https://www.koi.ai/blog/vscode-extension-trivia-real-or-cake

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