Cursor、Windsurf、Google Antigravityがマルウェアを推奨してしまう事態をどう防いだか

継承された1つの設定ファイルが、あらゆる主要AI IDEを通じて数百万人の開発者をリスクにさらしていました

私たちは、最も人気のあるAI IDEが、実在しない拡張機能や、誰でも取得してマルウェアをアップロードできる名前空間を公式に推奨していたことを発見しました。そこで私たちは、悪意ある者に先んじてそれらを先に取得しました。

Image

AI IDEのゴールドラッシュに潜む盲点

Cursor、Windsurf、Google Antigravity、Trae——これらは現在、ソフトウェア開発における最も注目度の高いツールです。Cursorだけでも1日あたりのアクティブユーザーは100万人を超え、評価額は99億ドルに達しています。Windsurfはローンチから数カ月でユーザー数100万人を突破しました。Google Antigravityは、Windsurfのチームと技術を24億ドルで買収したことを背景に、わずか数週間前にローンチされたばかりです。

これらのツールにはある共通点があります。いずれもVSCodeからフォークされているという点です。

そしてどのツールにも共通する問題があります。それは、Microsoftの拡張機能マーケットプレイスを利用できないということです。ライセンス上、Microsoft以外の製品によるアクセスが明示的に禁止されているためです。そこで各社は、Eclipse Foundationが運営するオープンソースの代替サービス、OpenVSXを利用しています。

しかし、VSCodeをフォークした際に、各IDEは拡張機能の推奨リストもそのまま継承してしまいました。このリストはMicrosoftのマーケットプレイス上の拡張機能を指すものであり、そこに含まれる拡張機能のすべてがOpenVSXに存在しているわけではありません。

問題点:実在しない拡張機能を推奨していた

これらのIDEには、ハードコードされた公式のプロアクティブ推奨機能が組み込まれています。検索結果ではありません。ユーザーが求めた提案でもありません。IDE自身が能動的にユーザーへ「これをインストールすべきです」と伝えてくるのです。

推奨には2種類あります。

ファイルベースの推奨: azure-pipelines.yamlのようなファイルを開くと、Azure Pipelines拡張機能を推奨するトースト通知がポップアップします。

Image

ソフトウェアベースの推奨: マシンにPostgreSQLがインストールされているとどうなるでしょうか。IDEは、ユーザーが一度も検索していないにもかかわらず、サイドバーに自動的にPostgreSQL拡張機能を推奨してきます。

Image

問題は、これらの推奨拡張機能がOpenVSX上に存在していなかったことです。名前空間は未登録のままであり、誰でも登録し、任意の内容をアップロードできる状態でした。

起こりえた事態

次のような状況を想像してみてください。攻撃者がOpenVSX上でms-ossdata.vscode-postgresqlを登録し、悪意あるエクステンションをアップロードします。

すると、PostgreSQLをインストールしている開発者全員が、Cursor、Windsurf、あるいはAntigravityを開いた際に「推奨:PostgreSQL拡張機能」という表示を目にすることになります。彼らはそれを信頼します——自分のIDEが推奨しているのですから。そしてインストールをクリックします。

その拡張機能はシステムへの完全なアクセス権を持って実行されます。SSHキー、AWS認証情報、ソースコード——これらすべてが窃取されます。フィッシングは不要です。不審なダウンロードもありません。ただIDEをいつも通り使っただけの、普通の一日です。

Image

私たちが用意したプレースホルダー版のPostgreSQL拡張機能は、アイコンもなく「これはVS Code拡張機能のプレースホルダーです」と明記しているにもかかわらず、500件を超えるインストール数を記録しています。IDEがそう推奨したというだけの理由で、人々はそれでもインストールしてしまうのです。

私たちが行ったこと

私たちは、悪意ある攻撃者に先を越されることを防ぐため、脆弱な名前空間を自ら取得し、プレースホルダーの拡張機能をアップロードしました。

Image

私たちが確保した拡張機能:

  • ms-ossdata.vscode-postgresql:マシンにPostgreSQLがインストールされている場合にトリガー
  • ms-azure-devops.azure-pipelines:azure-pipelines.yamlを開いた場合にトリガー
  • msazurermtools.azurerm-vscode-tools:azuredeploy.jsonを開いた場合にトリガー
  • usqlextpublisher.usql-vscode-ext:*.usqlファイルを開いた場合にトリガー
  • cake-build.cake-vscode:build.cakeを開いた場合にトリガー
  • pkosta2005.heroku-command:マシンにHeroku CLIがインストールされている場合にトリガー

1,000人を超える開発者が私たちのプレースホルダー拡張機能をインストールしました。機能もアイコンもなく、プレースホルダーであることを明記した説明文が付いているだけの拡張機能です。それでもインストールされたのは、IDEがそれを推奨したからにほかなりません。それほどまでに、ユーザーはこうした推奨機能を信頼しているのです。

その後、私たちはOpenVSXを運営するEclipse Foundationと協力し、これらのIDEの設定に残っている参照先の名前空間・拡張機能がすべて安全であることを検証するとともに、非公式な貢献者を名前空間から排除する作業を行いました。

情報開示の経緯

  • 2025年11月23日:Googleへ報告
  • 2025年11月24日:Cursorへ報告([email protected])
  • 2025年11月24日:Windsurfへ報告([email protected])
  • 2025年11月25日:Googleが報告を「Won’t Fix(対応不可能)」としてクローズ
  • 2025年11月25日:私たちが攻撃ベクトルを明確化——アカウント侵害は不要であることを説明
  • 2025年11月25日:Googleが再度「Won’t Fix」としてクローズ
  • 2025年11月25日:私たちが再度説明——攻撃者は自身のアカウントを使うだけで、全ユーザーが影響を受けることを明確化
  • 2025年11月26日:Googleが報告を再オープンし、脆弱性として受理
  • 2025年11月26日:残りの名前空間を検証するためOpenVSXに連絡
  • 2025年12月1日: Cursorが問題を認識し修正
  • 2025年12月26日:Googleが部分的な修正を提供(13件の拡張機能を削除)
  • 2025年12月26日:私たちが設定に残る脆弱な拡張機能を指摘
  • 2026年1月1日:Googleが修正済みとマーク
  • 本日:一般公開による情報開示

Windsurfからの応答は一度もありませんでした。

Image

OpenVSXを運営するEclipse Foundationとの協業は非常に良好なものでした。彼らは迅速に対応し、私たちが指摘した名前空間を検証したうえで、レジストリ全体にわたって自主的にさらなるセキュリティ対策を講じてくれました。彼らの協力のおかげで、応答のないベンダーの対応を待つことなく、責任ある形での情報開示が可能になりました。

まとめ

拡張機能マーケットプレイスは、新たなソフトウェアサプライチェーンとなっています。今回の調査結果は、それがいかに容易に悪用されうるかを示しています。

私たちがKoiを開発したのは、まさにこうした脅威——拡張機能マーケットプレイスの防御の隙を突く攻撃者——を捕捉するためです。IDEの推奨機能が侵害されている可能性がある中でも、私たちのリスクエンジンは、拡張機能が実際にインストール時に何を行うかを監視します。ネットワークリクエスト、ファイルシステムへのアクセス、スクリプトの実行——コードがどのような経路で入り込んだかにかかわらず、悪意ある意図を示す挙動パターンを見抜きます。

Koiは、フォーチュン50企業や世界有数のテクノロジー企業に信頼されており、セキュリティチームが自社の環境に流れ込むサードパーティコードに対する可視性とガバナンスを確保する支援を行っています。

デモを予約することで、従来の防御をすり抜けてしまう脅威を、私たちのエージェント型AIリスクエンジンがどのように捕捉するかをご確認いただけます。

どうか安全にお過ごしください。

翻訳元: https://www.koi.ai/blog/how-we-prevented-cursor-windsurf-google-antigravity-from-recommending-malware

ソース: koi.ai