6月29日、Matthias Bastianが「Claude Code runs a GitHub repo's hidden malware without verification, giving attackers full control」と題した記事を公開した。MozillaのGenAIバグバウンティプラットフォーム「0DIN」の研究者が実証したPoCによれば、AIにリポジトリを開かせるだけで、開発者のマシンが完全に乗っ取られる。AIコーディングツールの「善意の自動化」そのものが攻撃経路になるという、従来のマルウェア対策の常識を覆す内容だ。
普通に見えるGitHubリポジトリが攻撃の起点になる
攻撃の手口はシンプルだ。悪意のあるコードはリポジトリ本体には一切存在しない。セットアップスクリプトが実行時にDNSエントリからコマンドを取得し、それを実行する仕組みになっている。
これが意味することは大きい。スタティックなコードスキャナー、コードレビュー、そしてClaudeのようなAIエージェント自身も、リポジトリを見ただけでは脅威を検出できない。悪意のあるペイロードはDNS越しに動的に供給されるため、静的解析が無効化される。
この手法のポイントは、DNS TXTレコードをC2(Command & Control)通信路として悪用している点にある。通常のC2通信はHTTPSエンドポイントへの接続として検出されることが多いが、DNS問い合わせは多くの環境でファイアウォールを素通りし、かつ通信ログに残りにくい。セットアップスクリプトがビルド時にDNSを参照する動作自体は正常なネットワーク挙動と区別がつかないため、静的解析ツールはもちろん、実行時のヒューリスティック検知もバイパスしやすい。
攻撃の流れ
- 攻撃者は一見無害なGitHubリポジトリを用意する
- セットアップスクリプトに、実行時にDNSエントリを参照してコマンドを取得するロジックを仕込む
- 開発者がClaude Codeでそのリポジトリを開く
- セットアップ中にClaudeが意図的に用意されたエラーに遭遇し、自動的にスクリプトを実行する
- リバースシェル(攻撃者がターゲットのマシンに対して遠隔操作セッションを確立する手法)が開く
- 攻撃者はAPIキー・ログイン認証情報を取得し、持続的なアクセスを維持する
求人票、チュートリアル、Slackのメッセージに貼られたリポジトリリンク1つで、AIコーディングツールでそれを開いた開発者は即座に被害を受ける。
なぜAIコーディングツールが標的になるか
間接プロンプトインジェクション(Indirect Prompt Injection)とは、AIエージェントが処理する外部データ(今回はリポジトリの内容)に悪意のある指示を埋め込み、エージェントに意図しない動作をさせる攻撃手法だ。OWASP LLM Top 10でもLLM01: Prompt Injectionとして最上位リスクに分類されており、エージェント型AIが外部入力を処理する際の根本的な脆弱性として広く認識されている。Claude Codeのようなエージェント型AIツールは、開発者の代わりにコマンドを実行する権限を持っているため、一度騙されると被害が直接システムに及ぶ。
従来のマルウェアであれば開発者自身が「このスクリプトを実行する」という判断を介在させる。しかしAIエージェントが自律的に動作する環境では、その判断ステップがバイパスされる。
研究者が示した対策
0DINの研究者が提示した改善策は2点だ。
- AIエージェントはセットアップスクリプトの内容を実行前にユーザーに提示すべき
- 開発者はサードパーティリポジトリのセットアップ手順を信頼できないコードとして扱うべき
前者はAIツール側の実装の問題、後者は開発者のセキュリティ意識の問題だ。現状、Claude Codeはスクリプト内容を確認せずに実行するため、この種の攻撃に対して無防備な状態にある。
背景:AIコーディングツールのセキュリティリスクが本格的に問われ始めた
GitHub CopilotやCursor、Claude Codeといったエージェント型AIコーディングツールの普及に伴い、こうした攻撃ベクターへの懸念は業界全体で高まっている。間接プロンプトインジェクションによる実害は研究レベルにとどまらず、メール・カレンダー・ブラウザを操作するAIエージェントを対象とした類似の攻撃手法がすでに複数の研究グループによって報告されている。MozillaがGenAI専門のバグバウンティプラットフォーム「0DIN」を立ち上げ、AIシステム固有の脆弱性の発見に報奨金を設けていること自体、この問題の深刻さを示している。
今回の脆弱性のポイントは、攻撃者がAIエージェントそのものをハックするのではなく、エージェントの「善意の自動化」を武器として利用している点にある。エラー回復のために自動的にスクリプトを走らせるという動作が、そのまま攻撃経路になった。AIツールの利便性と安全性のトレードオフは、エージェント型AIが開発現場に深く組み込まれるにつれて、より根本的な設計上の問いとして浮上してくるだろう。
詳細はClaude Code runs a GitHub repo's hidden malware without verification, giving attackers full controlを参照していただきたい。