AI 開発者を狙う npm サプライチェーン攻撃:gemini-ai-checker に潜むバックドア

Hackers Use Fake Gemini npm Package to Steal Tokens From Claude, Cursor, and Other AI Tools

2026/04/07 CyberSecurityNews — AI コーディング・ツールを利用するソフトウェア開発者を標的とする、新たなサプライチェーン攻撃が確認された。2026年3月20日の時点で、この攻撃者は gemini-check アカウントを用いて、悪意の npm パッケージ “gemini-ai-checker” を公開した。このパッケージは、Google Gemini AI トークン検証用のシンプルなユーティリティを装い、信頼性が高く見える整然とした構造を持っている。 しかし、その内部に組み込まれたマルウェアにより、AI コーディング環境から認証情報/ファイル/トークンなどが窃取されていく。 

インストール後に、このパッケージは “server-check-genimi.vercel.app” 上の Vercel でホストされるステージング・サーバに密かに接続し、JavaScript ペイロードをダウンロードして被害端末上で直接実行する。 

Cyber and Ramen のアナリストによると、このペイロードを解析したところ、Contagious Interview キャンペーンに関連する JavaScript バックドア OtterCookie に到達したという。この攻撃は、北朝鮮由来の脅威アクターによるものとされる。 

このバリアントは、Microsoft が 2026年3月に報告したものと極めて類似しており、2025年10月以降にも活動していると評価されている。それらの攻撃者は、2 つのパッケージ express-flowlimit/chai-extensions-extras も公開しており、いずれも同一の Vercel インフラを共有している。この記事の公開時点で、これら 3 つのパッケージは、合計で 500 回を超えるダウンロード数を記録している。 

2026年4月1日に “gemini-ai-checker” は削除されたが、他の 2 つのパッケージは依然として公開されており、ダウンロードが継続している。 

このキャンペーンの特徴は、AI 開発ツールを明確に標的としている点である。このマルウェアは、ブラウザの認証情報や暗号資産ウォレットを窃取するが、それに加えて、Cursor/Claude/Windsurf/PearAI/Gemini CLI/Eigent AI のディレクトリへアクセスするよう設計されており、API キー/会話ログ/ソースコードの流出リスクを高めている。

感染メカニズム

感染プロセスの解析により、検知回避を前提として精密に設計されていることが判明した。”gemini-ai-checker” は 44 個のファイルで構成され、271kB のサイズを持ち、4 つの依存関係を含んでいる。一般的なトークン・チェッカーと比べて大規模であるが、SECURITY Markdown ファイルを取り込むといった、正規プロジェクトを模倣する構造を採用している。 

パッケージ内部の “libconfig.js” により、C2 コンフィグ を分割して保持する構造となっている。ステージング・ドメイン/認証トークン/パス/Bearer トークンを個別変数として分離することで、完全な URL 文字列の検出を回避する設計である。 

インストール時に、これらの情報が “libcaller.js” により再構成され、Vercel エンドポイントへ向けて HTTP GET リクエストが送信される。この処理は、有効なレスポンスが得られるまで最大 5 回再試行される。 

Snippet of the obfuscated JavaScript code (Source - Cyber and Ramen)
Snippet of the obfuscated JavaScript code (Source – Cyber and Ramen)

サーバがトークン・フィールドを含む 404 レスポンスを返した場合に、このペイロードは Function.constructor を介して、メモリ上で直接実行される。”eval” を回避することで、静的解析ツールによる検知を逃れる意図を持ち、ディスクへの書き込みは行われないため検出は困難となる。 

De-obfuscated code snippet (Source - Cyber and Ramen)
De-obfuscated code snippet (Source – Cyber and Ramen)

復号後のペイロードは、独立した Node.js プロセスとして動作する 4 つのモジュールで構成され、専用ポートを介して C2 サーバ “216.126.237.71” と通信する。

  • Module 0:Socket.IO を用いてリモート・アクセスを確立する。
  • Module 1:ブラウザ・データベースおよび MetaMask/Exodus を含む 25 以上の暗号資産ウォレットを標的とする。
  • Module 2:ホーム・ディレクトリを走査して機密ファイルを収集し、AI ツール・ディレクトリを明示的に列挙する。
  • Module 3:500 ミリ秒間隔でクリップボードを監視し、3,000 ミリ秒の初期遅延によりサンドボックス検知を回避する。
防御策

防御側として重要なことは、Vercel へのアウトバウンド通信を、可能な限り監視/ブロックすることである。また、Microsoft が公開した KQL クエリを用いて、Node.js プロセスの異常動作を検出することも推奨される。 

開発者にとって必要なことは、npm パッケージ導入前に内容を検証し、パッケージ名と README の不一致を確認することである。さらに、.cursor/.claude などの AI ツール・ディレクトリについては、.ssh/.aws と同等の機密性で管理すべきである。 

既存のブランドを偽装する、新規のパッケージを発見した場合は迅速に報告し、コミュニティ全体で被害拡大を防ぐことが重要である。