11月12日、Help Net Securityが「Stolen Claude API keys can turn Claude Code into a remote-controlled implant」と題した記事を公開した。Darktraceの研究者が実証したのは、開発者のマシンからClaude APIキーを盗むだけで、日常的に使われているAIコーディングエージェントがそのまま攻撃者のリモートコントロール端末に変わるという手法だ。しかも攻撃者のトラフィックはAnthropicの正規エンドポイントに完全に溶け込むため、従来のセキュリティ監視では検知が極めて難しい。Claude Codeを業務で利用しているチームにとって、「APIキーを適切に管理しているか」という問いの重みが根本から変わる内容だ。
Claude Codeがコマンド&コントロール基盤に変わる
Darktraceの研究者が、Anthropicのメモリストア機能とFiles APIを組み合わせることで、Claude Codeをリモート制御インプラントとして動作させることに成功した。最大の特徴は、攻撃者のトラフィックがすべてapi.anthropic.comを経由するという点だ。Claude Codeがもともと推論のために呼び出すエンドポイントと同一であるため、攻撃者の通信がコーディングエージェントの通常業務と見分けがつかなくなる。
従来のC2(コマンド&コントロール)インフラは、攻撃者が専用のサーバーやドメインを用意し、マルウェアと通信させる構造をとる。EDRやNDRはこうした不審な外部通信先を検知することで脅威を発見してきた。今回の手法はその前提を崩す。攻撃インフラがAnthropicのクラウドサービスそのものであるため、通信先のブロックリスト評価では見逃され、正常なAPI利用との区別がトラフィックレベルでは事実上困難になる。
前提条件は一つある。攻撃者はまず開発者のマシンに侵入し、Claude APIキーを入手する必要がある。Darktraceのシナリオでは、キーはツールチェインがデバイス上に残していたものだった。Anthropicのプラットフォームに脆弱性があるわけではなく、今のところ実際の攻撃への悪用も確認されていない。
メモリストアを「共有ノートブック」として使う
Claude Managed Agentsのメモリストアは、エージェントがセッションをまたいで情報を保持するために用意されたテキストファイルの集合体だ。研究者が発見したのは、Managed Agentsサービスを契約していない組織でも、APIを通じてワークスペースにストアを追加できるという点だった。
これが意味するのは、メモリストアを悪用した攻撃の対象範囲が、Managed Agentsの契約者に限定されないということだ。Claude APIキーさえあれば、サービス契約の有無にかかわらずストアを操作できるため、Claude Codeを導入しているすべての組織が潜在的な攻撃面を持つことになる。機能として意図されたアクセス経路が、意図せず攻撃者にも開かれている構造になっている点が、このシナリオの核心的な問題だ。
研究者は3つのファイルからなるストアを構成した。
- ハートビートファイル: 新しいClaude Codeプロセスが起動するたびに書き込む
- インプットファイル: 攻撃者がジョブ(指示)を書き込む
- アウトプットファイル: 実行結果をエージェントが書き込み、攻撃者が読み取る
指示は平易な英語で記述するため、攻撃者は目標を渡すだけでよく、具体的なコマンドはモデルが組み立てる。
9つのジョブで1GBのファイルを外部に持ち出す
テストは仮想の企業Active Directoryネットワーク上で実施された。小さなシェルペイロードがLinuxマシン上のClaude Codeを発見し、**--dangerously-skip-permissionsフラグ付き**(ツール実行の確認プロンプトを無効化するフラグ)でClaude Codeプロセスを継続起動するsystemdサービスを設置した。
攻撃者はメモリストア経由で9つのジョブを送り込んだ。エージェントが実行した内容は以下の通りだ:
- ローカルネットワークをマッピング
- 匿名FTP共有から従業員名とパスワードを取得
- 190件の候補ユーザー名を生成し、ドメインコントローラーへのパスワードスプレー攻撃でアカウントを特定
- そのアカウントでSMB共有を列挙し、1GBのファイルをダウンロード
- ファイルを3分割してFiles APIにアップロード
窃取されたデータはAnthropicのサーバーへ送信された。なお、Darktraceが公開した人名・認証情報はすべて架空のものだ。
他のAIエージェント基盤への波及
Darktrace Chief AI OfficerのTim Bazalgette氏は、他プラットフォームへの適用可能性についてこう述べている。
「我々がテストしたのは1つのプラットフォームのみで、他では再現していない。メモリストアはClaudeプラットフォーム固有の機能だ。ただし、今回データ持ち出しに使ったファイルアップロードエンドポイントに相当するものはOpenAIにも存在する」
また、露出リスクを左右する要因として以下を挙げている。
- APIキーのスコープの狭さ: 標準APIキーはメモリストアにアクセスできるが、OAuth認証情報はできない
- ストアへの書き込みの可視性: 顧客がメモリストアへの書き込みを監視できるかどうか
Bazalgette氏は「これらは欠陥ではなく、能力と露出リスクのトレードオフだ」と強調する。Darktraceは開示前にAnthropicへ内容を共有したが、「脆弱性がないため、正式な開示プロセスは踏んでいない」と述べている。
防御の要点:「承認済み」は「安全」ではない
Bazalgette氏は攻撃を2段階に分けて考えている。AIシステムへの侵入(比較的従来型)と、侵入後のコマンド制御および情報持ち出しだ。
認証情報の管理として推奨されているのは以下だ。
- OAuthまたはID連携を優先して使う
- APIキーを使わざるを得ない場合は、有効期限を短く、スコープを狭く、安全な場所に保管する
- シェル履歴、dotfile、環境変数などにキーを残さない
- AIプラットフォームのキーを本番環境の認証情報と同等に扱う
検知の観点では、エージェントプロセスが実行するツール呼び出しとそれが生成するネットワークトラフィックを相関させ、ベースラインと比較することが重要だ。Claude Codeがツール呼び出しをしながらAnthropicのAPIと通信するのは正常だが、奇妙なコマンドライン引数が付いていたり、APIとのデータ転送量の比率がいつもと大きく異なる場合は要注意だ。
国内でもClaude Codeを開発フローに組み込んでいるチームは増えており、ローカル環境や共有の開発サーバーにAPIキーが残っていないか、あらためて棚卸しする機会として本件を捉えてほしい。
Bazalgette氏の言葉が本質をついている。
「残るのは正当なアクション、正当なチャネル、正当な認証情報だ。しかしその組み合わせのパターンは、そのエージェントが通常どう動くかとは似ても似つかない。承認済みであることと安全であることは別物であり、その違いを教えてくれるのは挙動だけだ」
詳細はStolen Claude API keys can turn Claude Code into a remote-controlled implantを参照していただきたい。