powered by TechFeed
表示モード
Deep Dive

Claude CodeがDNSレコードに隠した攻撃コードを「親切心」で自動実行 — 静的スキャンを完全に素通りするプロンプトインジェクションの手口

7月5日、Efosa Udinmwenが「Agentic coding tools have access to everything they need for this security experts warn — Claude Code can be exploited simply by trying to be helpful」と題した記事を公開した。この記事では、Claude CodeがDNSレコードに隠された悪意あるコマンドを実行させられ、開発者のマシンにリバースシェルを開かれてしまう攻撃手法について詳しく紹介されている。

7月5日、Efosa Udinmwenが「Agentic coding tools have access to everything they need for this security experts warn — Claude Code can be exploited simply by trying to be helpful」と題した記事を公開した。この記事では、Claude CodeがDNSレコードに隠された悪意あるコマンドを実行させられ、開発者のマシンにリバースシェルを開かれてしまう攻撃手法について詳しく紹介されている。


DNSレコードに攻撃コードを隠す——静的スキャンが完全に素通りした手口

Mozillaのセキュリティリサーチチーム「0din」が公開した調査結果が、AIコーディングツールのセキュリティを議論するうえで見逃せない事例となっている。

攻撃の起点は、一見何の問題もないMarkdownファイルだ。そこには「Axiom」(一般的な監視ツール)のインストール手順が書かれているだけで、悪意あるコードはリポジトリのどこにも存在しない。ファイルを普通にレビューしても何も引っかからない。

問題は実行時(ランタイム)に発生する。Axiomを初期化せずに実行すると、特定のセットアップコマンドを実行するよう促すエラーメッセージが表示される。このパターンは通常の開発トラブルシューティングと見分けがつかない。

Claude Codeは「親切に振る舞おうとして」このコマンドを自動実行した。ここで言う「親切心」とは、AIが文脈上「正しそうな回復手順」と判断した操作を、ユーザーに確認を取らずに先回りして実行しようとする性質を指す(AIに意図や感情があるわけではなく、こうした自律的な補完動作が攻撃に悪用された、という意味だ)。そのコマンドが裏で何をしていたか——攻撃者が管理するDNSのTXTレコードをクエリし、そこに格納されたBase64エンコードのリバースシェルコマンドを取得・実行した

ここで言うリバースシェルとは、被害者のマシンから攻撃者のサーバーに向けて接続を開始し、攻撃者がそのマシンをリモート操作できるようにする手法だ。ファイアウォールが「外から内」への通信を遮断していても、「内から外」への通信として偽装できるため、検出が難しい。結果、開発者のマシンから攻撃者のリモートサーバーへの接続が静かに確立された。

攻撃チェーンをまとめると以下の通りだ:

  1. 無害に見えるMarkdownのインストール手順をリポジトリに配置
  2. Axiomを実行 → エラーメッセージが「セットアップコマンド」の実行を指示
  3. Claude Codeがそのコマンドを「通常の回復手順」として自動実行
  4. コマンドがDNS TXTレコードをクエリ
  5. TXTレコードからBase64エンコードされたリバースシェルコマンドを取得・実行
  6. 攻撃者のサーバーへの接続が確立。SSH鍵の埋め込みやcronジョブによる永続化も可能

なぜ既存のセキュリティツールが見逃したか

この攻撃が厄介なのは、個々のステップが単独では全く無害に見える点だ。

  • 静的コードスキャナー(SAST):ソースコードを実行せずに解析し、脆弱なコードパターンを検出するツール全般を指す。リポジトリ内に悪意あるコードが存在しないため、何も検出しない
  • ファイアウォール・ネットワーク監視:DNSクエリは通常の名前解決と区別がつかない
  • Claude Code自身:ドキュメントに書かれたコマンドを「事前承認済みのセットアップ手順」として解釈する

攻撃コードがDNSレコードという、コードレビューもSASTツールも決して見ない場所に隠されていることが、このアプローチの核心だ。

「間接プロンプトインジェクション」の典型事例

0dinはこの攻撃をインダイレクト・プロンプトインジェクション(間接的な指示挿入)の一形態と位置付けている。AIエージェントが外部から取得したデータを信頼しすぎることで、意図しない操作を実行させられる攻撃手法全般を指す概念だ。プロンプトインジェクション自体は、ユーザーが直接AIへの入力に悪意ある指示を混入させる「直接型」が古くから知られているが、外部データ(今回はDNSレコード)経由で間接的に攻撃する「間接型」は、エージェント型AIの普及に伴い近年注目度が増している。OWASPのLLMセキュリティトップ10でも最重要リスクの一つとして挙げられており、業界全体で対策の模索が続く領域だ。

研究チームは以下の点を強調している:

  • コーディングエージェントは、セットアップスクリプトを実行する前に実際に何が実行されるかを検査すべき
  • 開発者は、セットアップファイルが普通に見えても未知のリポジトリを安易に信頼すべきではない
  • ジョブ投稿やチャットで共有された単一のリポジトリリンクだけで、それを開いた全開発者が被害を受ける可能性がある

0dinが明確に述べているのは、この問題はClaude Code固有ではないという点だ。大規模言語モデルベースのほとんどのエージェント型AIシステムは、同様の間接攻撃に対する盲点を共有している。GitHub CopilotやCursorなど、コードベースへのアクセス権を持つ他のAIコーディングツールにも同様の攻撃面が存在しうる点は、開発者として意識しておく必要がある。

現時点では、未知のリポジトリを扱う際に自動実行を信頼しないことが、個々の開発者が取れる最も確実な対策だとされている。


詳細はAgentic coding tools have access to everything they need for this security experts warn — Claude Code can be exploited simply by trying to be helpfulを参照していただきたい。