AI 安全
Claude Code Auto Mode、マルチホップ・プロンプトインジェクションで回避される――小規模サンプルでの攻撃成功率は最大80%
研究者は Python のモジュールシャドーイングを悪用し、Claude Code が自ら作成した安全なデコーダーに悪意ある `struct.py` を読み込ませ、最終的にリモートコード実行を実現した。この事例は、ツール呼び出しごとの分類器が OS レベルの隔離の代替にはならず、公式評価で成功率がゼロでも、未知の攻撃チェーンにまでその結果を一般化できないことを示している。

セキュリティ研究者の Johann Rehberger は、Claude Code Opus 5 Auto Mode を標的とした間接プロンプトインジェクションの攻撃チェーンを公開した。Auto Mode は Pro、Max、Team における新規セッションのデフォルトモードとなっている。ツール呼び出しのたびにユーザーの承認を求める代わりに、分類器を用いて、その呼び出しが破壊的、不可逆、または環境の範囲外に及ぶものかを判定する。
攻撃は「あるWebサイトを要約する」という指示から始まる。そのサイトは WebFetch に HTTP 415 を返し、エージェントが代わりに `curl` を使用するよう誘導したうえで、HTTP 303 リダイレクトを介して ZIP ファイルをダウンロードさせる。アーカイブには、もっともらしいディレクトリデータ、Base85/zlib でエンコードされた記録、ネイティブデコーダー、そして悪意ある `struct.py` が含まれている。Claude は未知のバイナリの実行を拒否し、代わりに展開先ディレクトリ内で Python デコーダーを自ら作成する。しかし、Python 標準ライブラリの `base64` は `struct` をインポートするため、Python のモジュール検索パスによって攻撃者が用意した同名ファイルが優先的に読み込まれる。悪意あるモジュールは本物の `_struct` API への呼び出しも転送するため、デコード処理は正常に完了する一方、バックグラウンドでは次段階の payload がダウンロードされ、攻撃者が制御する C2 接続が確立される。さらに、ツール権限を持つ別の `claude -p` サブプロセスまで起動される可能性がある。
3種類の変種について、実施されたテストはそれぞれわずか5回だった。C2 チェーンとサブエージェントチェーンの1種は3回成功し、ワークスペースへの書き込みが可能な別の変種は4回成功した。60~80%という数値を一般的な攻撃成功率と見なすことはできないが、「固定された評価で成功率がゼロなら、現実の回避手法も存在しない」という推論を否定するには十分だ。さらに注目すべき点として、Claude は感染を事後に検知してプロセスの終了を試みる場合があったものの、Auto Mode がそのクリーンアップコマンドをブロックした。
エンジニアリング上の結論は、すべての分類器を無効化すべきだということではなく、分類器をセキュリティ境界として扱うべきではないということだ。Webページ、文書、パッケージなどの信頼できないコンテンツを処理するエージェントは、引き続きコンテナ、仮想マシン、または OS sandbox 内で動作させ、外向きのネットワーク通信とプロセス生成を制限し、ホームディレクトリ、SSH キー、クラウド認証情報をマウントしないようにする必要がある。今後は、Anthropic がツールをまたぐ因果チェーン、アーカイブ展開後の実行、言語ランタイムのモジュール検索パスを評価に組み込むか、また再現可能な第三者テストセットを提供するかが注目される。