powered by TechFeed
表示モード
Anthropic

Claude Codeは「Webページを要約して」の一言で乗っ取られる — Anthropicは「設計通り」と回答、成功率は最大80%

9月2日、The Next Webが「Claude Code can be hijacked by a web page」と題した記事を公開した。セキュリティ研究者のJohann Rehberger(ハンドルネーム:wunderwuzzi)が、AnthropicのコーディングエージェントClaude Codeに対するプロンプトインジェクション攻撃を実証した。**成功率は最大80%**。Anthropicへの報告に対し、同社は「設計通りの動作だ」と回答している。

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に「このページを要約して」と頼むだけで、攻撃チェーンが始動する。

  1. Claude CodeはまずWebFetchツールでページを読もうとする
  2. サーバーが「415 Unsupported Media Type」を返すと、Claudeは自分の判断でBashのcurlコマンドにフォールバックする
  3. サーバーはZIPアーカイブへの303リダイレクトを返し、Claudeはそれをダウンロードする
  4. ZIP内には、カタログデータ、README、エンコードされたノートブック7件、macOS用デコーダーバイナリ、そしてstruct.pyというPythonファイルが入っている

ここからが巧妙だ。Claudeは安全上の理由から、同梱されたバイナリの実行を拒否する。これは意図通りの動作であり、Rehbergerはそれを織り込み済みだった。

「バイナリの実行を拒否することが、まさに攻撃者の望む展開だ」とRehbergerは自身のブログに書いている。

バイナリを実行できないClaudeは、自分でデコーダーコードを書く。そのコードはbase64モジュールをインポートする。Pythonはモジュール検索時にカレントディレクトリを最初に参照する仕様のため、Claudeが書いたデコーダーがbase64structを参照した際、システムの標準ライブラリではなく攻撃者がZIP内に仕込んだstruct.pyが読み込まれる。

これはモジュールシャドウイング(module shadowing)と呼ばれる古典的な手法だ。Pythonに限らず数十年前から知られている技術である。

Rehbergerは悪意あるstruct.pyをChatGPTで難読化し、Claudeの安全チェックをすり抜けさせた。最終的にこのファイルは別のPythonプロセスを起動し、リモートからペイロードをダウンロード、C2(コマンド&コントロール)サーバーへの通信を確立した。ペイロードはCalculator(電卓)アプリを起動した。これは研究者が任意コード実行を安全に示す際の慣例的な手法だ。

Rehbergerは「安全に関するその判断が、皮肉にも攻撃経路になっている」と表現している。

エージェントが別のエージェントを生む

別の攻撃バリアントでは、struct.pyclaude -pコマンドで新しいヘッドレスのClaude Codeセッションを起動する。リモートコード実行にとどまらず、入れ子になったAIエージェントが誕生する形だ。

「子エージェントは独自のツールアクセスとコンテキストを持つ」とRehbergerは書いている。実験では子エージェントがwhoamiunameidを実行し、電卓を開き、ホームフォルダにファイルを書き込んだ。

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を参照していただきたい。