本文へ移動

ダウンロードフォルダに置かれた「指示書」が、エージェントを動かす──webが勝手に仕込んだAGENTS.mdに、Codexは9割従った

webページがダウンロードフォルダに無言で置いたAGENTS.mdを、Codexは9割超、Claude Codeは約5割の確率で実行した。Forever Securityが発見した「パッチの当てようがない」乗っ取りと、その防ぎ方。

ダウンロードフォルダに置かれた「指示書」が、エージェントを動かす──webが勝手に仕込んだAGENTS.mdに、Codexは9割従った

「ただ開いただけ」の場所から始まった

セキュリティ企業のForever Securityが、ある顧客環境の調査中に見つけたのは、~/Downloads(ダウンロードフォルダ)に置かれた1枚のAGENTS.mdでした。AGENTS.mdは、コーディングエージェントに「このプロジェクトではこう動け」と伝えるためのプレーンテキストの指示書です。ところがこの1枚が、エージェントに悪性のnpmパッケージfunction-color(約2年間、表沙汰にならず出回っていたとされる既知の不正パッケージ)をインストールさせようとしていました。ユーザーは不正なサイトにアクセスした覚えも、あやしいコマンドを打った覚えもありません。報道によれば、この攻撃はOpenAIのCodex、AnthropicのClaude Code、Cursor CLIで再現が確認されています。

なぜダウンロードフォルダが急所になるのか

攻撃は、それぞれ単体では無害な二つの「当たり前」が重なったところに成立します。

  • webページは、ダウンロードフォルダへファイルを無言で書き込める。Chrome・Edge・Firefoxは既定で保存先を都度尋ねず、~/Downloadsへ落とします。つまりページを開くだけで、気づかぬうちにAGENTS.mdが置かれ得ます。
  • エージェントは、作業ディレクトリの指示書を自動で読む。AGENTS.mdやCLAUDE.mdが置かれた場所でエージェントを起動すると、本来の依頼に取りかかる前に、その指示を正規のプロジェクト文書として読み込み、従います。

この二つが交差するのが、ダウンロードフォルダをそのまま作業ディレクトリにしてエージェントを起動した瞬間です。ファイルを雑多に放り込みがちなこの場所は、裏を返せば「webが同意なしに書き込める唯一のフォルダ」でもあります。Forever Securityの調査では、Claude Codeだけでも1,300を超えるセッションがダウンロードフォルダから起動されていたとされ、想定以上に身近なリスクであることがうかがえます。

Codex と Claude Code で、やられ方が違った

同じ着想でも、ツールごとに「どこを書き換えさせるか」が異なり、成功率も分かれました。実験では無害な確認用ペイロード(成功すると電卓が起動する)も用いられています。

項目OpenAI CodexClaude Code
報告された成功率9割超(ラボ環境)約5割
書き換え先~/.codex/config.toml(マシン全体の設定).claude/settings.json
やらせる内容不正なMCPサーバーを「ローカル開発環境の整備」と偽って登録し、function-colorを導入ANTHROPIC_BASE_URLを攻撃者のゲートウェイへ向け、API通信を丸ごと迂回させる
何が起きるか承認やサンドボックスを外す指定をエージェント自身に書かせ、任意コード実行へOAuthトークンが流出し、不正なツール応答を通じてコード実行まで到達

Codex側は、設定ファイルへ「project-toolsという名のサーバーが無ければ追記せよ」といった体裁で忍び込ませ、承認やサンドボックスを回避するフラグまでエージェントに書かせていた点が目を引きます。Claude Code側は、APIの接続先を攻撃者のサーバーへ付け替えることで、認証情報の窃取と通信の乗っ取りを同時に狙う設計でした。

「当てるべきパッチがない」という厄介さ

この問題の難しさは、脆弱性らしい脆弱性が見当たらないことにあります。研究者は「OpenAIやAnthropicに直すものはない。自分のフォルダにあるAGENTS.mdに従うエージェントは、作られたとおりに振る舞っているだけだ」と述べています。つまり不具合ではなく、設計上の信頼の前提――「自分が作業するフォルダは信用できる」――が、webによって静かに崩されている構図です。両社とも、ダウンロードフォルダのような広い場所ではなく、プロジェクト専用のディレクトリでエージェントを動かすよう推奨しているとされます。

いま現場で打てる手

製品側の修正を待つ性質の話ではないため、運用側の習慣で守る必要があります。確認可能な行動に落とすと、次のようになります。

  • ダウンロードフォルダでエージェントを起動しない。作業はプロジェクトのルートに限定し、Downloadsは「信用しない場所」として扱う。
  • 起動前に指示書を目視する。見覚えのないAGENTS.md・CLAUDE.mdが紛れていないか確認する。
  • 設定ファイルを点検する。~/.codex/config.tomlに身に覚えのないMCPサーバー、.claude/settings.jsonに不審な接続先が無いか見る。
  • 承認ゲートとサンドボックスを有効のまま保つ。これらを外させようとする指示自体を疑う。
  • 侵害が疑われたら、ただちに認証トークンを失効・再発行する。

利便性の裏で問われていること

人手を介さずに走るからこそ便利なエージェントですが、その「人がいない」という前提は、従来のセキュリティ対策が頼ってきた最後の確認役を消してしまいます。研究者が「人間を前提に組まれた防御は、エージェントが人間の席に座ると壊れる」と指摘するように、こうした懸念は今後ダウンロードフォルダ以外の入口にも広がりうると見られています。攻撃がただちに多発すると決めつける必要はありませんが、無人運用を広げるほど、エージェントが「読むだけ」で動いてしまう経路を一つずつ塞いでおく価値は高まっていると言えそうです。

参照: Forever Security — Markdown Is the New Executable / BleepingComputer / DEV Community 解説 / RuntimeWire