9月2日、The Next Webが「Claude Code can be hijacked by a web page」と題した記事を公開した。セキュリティ研究者のJohann Rehberger(ハンドルネーム:wunderwuzzi)が、AnthropicのコーディングエージェントClaude Codeに対するプロンプトインジェクション攻撃を実証した。**成功率は最大80%**。Anthropicへの報告に対し、同社は「設計通りの動作だ」と回答している。
攻撃の仕組み:安全機能そのものが突破口になる
攻撃の起点は、一見無害なWebサイトだ。ユーザーがClaude Codeに「このページを要約して」と頼むだけで、攻撃チェーンが始動する。
- Claude CodeはまずWebFetchツールでページを読もうとする
- サーバーが「415 Unsupported Media Type」を返すと、Claudeは自分の判断でBashの
curlコマンドにフォールバックする - サーバーはZIPアーカイブへの303リダイレクトを返し、Claudeはそれをダウンロードする
- ZIP内には、カタログデータ、README、エンコードされたノートブック7件、macOS用デコーダーバイナリ、そして
struct.pyというPythonファイルが入っている
ここからが巧妙だ。Claudeは安全上の理由から、同梱されたバイナリの実行を拒否する。これは意図通りの動作であり、Rehbergerはそれを織り込み済みだった。
「バイナリの実行を拒否することが、まさに攻撃者の望む展開だ」とRehbergerは自身のブログに書いている。
バイナリを実行できないClaudeは、自分でデコーダーコードを書く。そのコードはbase64モジュールをインポートする。Pythonはモジュール検索時にカレントディレクトリを最初に参照する仕様のため、Claudeが書いたデコーダーがbase64やstructを参照した際、システムの標準ライブラリではなく攻撃者がZIP内に仕込んだstruct.pyが読み込まれる。
これはモジュールシャドウイング(module shadowing)と呼ばれる古典的な手法だ。Pythonに限らず数十年前から知られている技術である。
Rehbergerは悪意あるstruct.pyをChatGPTで難読化し、Claudeの安全チェックをすり抜けさせた。最終的にこのファイルは別のPythonプロセスを起動し、リモートからペイロードをダウンロード、C2(コマンド&コントロール)サーバーへの通信を確立した。ペイロードはCalculator(電卓)アプリを起動した。これは研究者が任意コード実行を安全に示す際の慣例的な手法だ。
Rehbergerは「安全に関するその判断が、皮肉にも攻撃経路になっている」と表現している。
エージェントが別のエージェントを生む
別の攻撃バリアントでは、struct.pyがclaude -pコマンドで新しいヘッドレスのClaude Codeセッションを起動する。リモートコード実行にとどまらず、入れ子になったAIエージェントが誕生する形だ。
「子エージェントは独自のツールアクセスとコンテキストを持つ」とRehbergerは書いている。実験では子エージェントがwhoami、uname、idを実行し、電卓を開き、ホームフォルダにファイルを書き込んだ。
3種類のバリアントを各5回テストした結果、**成功率は60〜80%**だった。Rehbergerは「モチベーションのある攻撃者にとっての代表値であり、網羅的な数字ではない」と留保を付けている。
Anthropicの回答:「設計通り」
Rehbergerがこの攻撃チェーンをAnthropicに報告したところ、同社の回答は「設計通りの動作だ」というものだった。Rehbergerによると、追加の説明はこうだ。「Auto Modeはベストエフォートの分類器に基づく利便機能であり、セキュリティ保証ではない」。
Auto Modeとは、Claude Codeがどのツールを使うかを自律的に判断し、ユーザーへの確認なしに実行するモードで、8月中旬からデフォルト設定になっている。今回の攻撃チェーン全体——WebFetchの試行、curlへのフォールバック、リダイレクトの追跡、ZIPの展開、バイナリの拒否、デコーダーの自作——は、Claudeが自分で下した一連の判断の積み重ねだ。個々の判断はいずれも合理的に見える。誰もチェーン全体を承認していない。
Rehbergerの結論は明快だ。「モデルの出力を信頼するな。コーディングエージェントはサンドボックス内で実行しろ。」
The Registerが独自にAnthropicへコメントを求めたが、回答はなかった。
繰り返されるパターン——業界全体の課題として
Rehbergerはこれまでも複数のAIエージェントを解析し、同種の問題を繰り返し報告してきた研究者だ。昨年10月にはClaude がプライベートデータを外部に送出させられる手法を実証しており、今回の発見はその延長線上にある。
彼が繰り返し辿り着くパターンは一貫している。「ツールを持つモデルは、自分が書いていないものを読まされると、読んだ内容に従う」。この性質はモデルの賢さや安全フィルターの精度とは独立した構造的な問題であり、エージェントが外部コンテンツを取得・処理する設計を持つ限り根本的に解消しにくい。
業界全体でも対策の動きは出始めている。今年6月にはOpenAIがChatGPTに同種の攻撃に対抗するためのロックダウンモードを追加した。AnthropicもClaude CodeのGitHub Actionに存在したプロンプトインジェクションの欠陥を6月に対応した経緯がある。しかし今回Anthropicが「設計通り」と回答したことは、ユーザー側がAuto Modeのリスクを自覚した上で運用する必要があることを示している。エージェントが自律的に判断する範囲が広がるほど、外部入力を信頼しない設計原則——いわゆる最小権限の原則——の重要性が増す。
詳細はClaude Code can be hijacked by a web pageを参照していただきたい。