Claude Code がリポジトリの隠れマルウェアを検証なしで実行――DNS 経由の巧妙な供給チェーン攻撃
Mozilla の 0DIN バグバウンティプラットフォームのセキュリティ研究者が、GitHub リポジトリを使った新しい攻撃ベクトルを発見。AI コーディングツールが setup スクリプトを自動実行する際に、DNS クエリ経由で取得した悪意あるコマンドを実行し、開発者マシン全体を乗っ取られる脅威。
何が起きたのか
Mozilla 傘下の AI セキュリティ bug bounty プラットフォーム「0DIN」の研究者が、Claude Code を含む AI コーディングツールに対する新しい攻撃手法を発見しました。通常に見えるGitHub リポジトリを通じて、開発者のマシン全体を乗っ取られる脅威です。
攻撃の仕組み
攻撃は以下のステップで実行されます。
1. リポジトリ内の悪意あるセットアップスクリプト
リポジトリに含まれるセットアップスクリプト(通常は setup.sh など)が、実行時に DNS クエリを通じてコマンドを取得する仕組みが埋め込まれています。
2. スキャナと AI エージェントの目をくぐる
重要なのは、悪意あるコードがリポジトリ内には存在しないということです。DNS 経由で動的に取得されるため:
- ソースコード検査ツール(SAST など)には検出されない
- セキュリティ研究者のコード審査でも見えない
- Claude Code を含む AI エージェント自体も、その危険性を認識できない
3. Claude Code が自動実行
Claude Code がリポジトリを開いてセットアップを実行する際、通常のエラーが発生します。ツールは習慣的にこうしたエラーメッセージに従い、スクリプトを自動実行してしまいます。その瞬間、隠されたコマンドが DNS から取得され実行されます。
4. リバースシェルと完全な支配
実行されたコマンドは攻撃者へのリバースシェルを開きます。そこから攻撃者は:
- API キーや認証情報の盗出
- 開発環境の乗っ取り
- 組織のコードレポジトリへのアクセス
- 永続的なバックドアの設置
5. 最小限の接触面
リポジトリへのリンクを 1 つ送信すれば十分です。ジョブポスティング、チュートリアル、Slack メッセージ、何か GitHub リンクをクリックするだけで、AI コーディングツールを使っているチーム全体が危険にさらされる可能性があります。
なぜこれが危険なのか
従来のマルウェア検出は、ファイルシステムに存在するコードを調べます。しかし、この攻撃は DNS 経由で動的にペイロードを取得するため:
- 静的分析では検出不可能
- リポジトリのスナップショスキャンでも検出不可能
- Git 履歴にも痕跡が残らない
特に、新しいオープンソースプロジェクトやテンプレートリポジトリを使うチームにとって、supply chain attack の新しい脅威になります。
推奨される対策
0DIN の研究者が提案している対策は以下の通りです:
AI エージェント側の対策
- セットアップスクリプトを実行する前に、その内容を開発者に表示する
- 実行許可を明示的に求める(デフォルト実行ではなく)
開発者側の対策
- サードパーティリポジトリのセットアップ指示は、信頼できないコードとして扱う
- 未知のリポジトリでの自動セットアップ実行を避ける
- セットアップスクリプトは実行前に内容を確認する習慣
AIコーディングツールのセキュリティ境界
この脆弱性は、AI コーディングツールの利便性と安全性のトレードオフを浮き彫りにします。Claude Code など AI エージェントは開発スピード向上のため、ユーザーの指示に自動的に従うよう設計されています。一方、その自動実行能力そのものが、新しい攻撃面になるということです。
開発チームは今後、AI コーディングツールを使う際には、それが実行する操作を意識的に監視し、見知らぬリポジトリの自動セットアップを避けることが重要になります。