Blackbox Blast
BB Preflight
← 事故ログへ

CASE · 中程度 · prompt-injection

未検証の報告公開情報からの収集

ダウンロードフォルダに置かれた1枚のAGENTS.mdで、コーディングエージェントが乗っ取られた(未検証の報告)

筆者によれば、2026年10月22日にForever Securityが、ダウンロードフォルダに置かれた1枚のMarkdownファイルでAIエージェントが乗っ取られる攻撃を公開した。同社の監視システムが、顧客のPCでコーディングエージェントが悪意あるnpmパッケージfunction-colorを入れようとしたのを止めたのが発端で、そのPCの~/DownloadsにはAGENTS.mdがあり、エージェントはそのフォルダで起動されていた。本記事は元レポートと報道、公式ドキュメントを読んだ筆者による整理であり、一次の調査ではない。

約9分で読めます

発生日
分類
prompt-injection
影響範囲
data
検知
third-party-researcher
タグ
#claude-code #codex #agents-md #indirect-prompt-injection #downloads-folder #mcp #config-rewrite #token-theft #security-research

CH 1

原因

筆者の整理では、バグではなく、正常な動きが3つ重なったことが原因である。ブラウザは.mdのような文章ファイルを確認なしでダウンロードフォルダに保存する。ClaudeCodeとCodexは起動したフォルダの指示ファイルを作業のルールとして自動で読み、書いたのが本人か攻撃者かを見分けられない。ダウンロードフォルダは他人が作ったファイルの置き場である。さらに、信頼の確認はフォルダごとに1回だけで、一度信頼すると後から置かれたファイルは確認なしで読まれる。

CH 2

結果

Forever Securityのレポートによれば、Codexでは~/.codex/config.tomlに攻撃者のMCPサーバーを登録させることができ、承認とサンドボックスを外した実行も起きた。成功率は90%超とされるが、試行回数やバージョンは公開されておらず、発表した企業自身の数字である。ClaudeCodeでは接続先を攻撃者のサーバーに書き換えさせ、ログイントークンを送らせて本物のAPIを被害者として使えたと報告されている。ただしClaudeCodeでの設定の書き込みが成功したのは約半分だった。実際の顧客PCでは、パッケージのインストールは止められた。ファイルがダウンロードフォルダに入った経緯は分かっていない。

CH 3

対策

筆者によれば、研究者はOpenAIにもAnthropicにも直すべきものはないと書いている。各部品が設計どおりに動いているためである。筆者が勧める対策は、作業用フォルダを作って必要なファイルだけ移してから起動すること、起動前にls -laで見覚えのない指示ファイルを確かめること、承認とサンドボックスを外さないこと、承認画面で書き込み先と実行内容を見ること、そして設定ファイルや信頼済みフォルダを点検し、怪しければログインし直すことである。

何が起きたか

筆者(takuh)によれば、2026年10月22日にセキュリティ企業のForever Securityが、 ダウンロードフォルダに置かれた1枚のMarkdownファイルでAIエージェントが 乗っ取られる攻撃を公開した。実際の顧客のPCで見つかったものである。 発端は同社の監視システムの警告で、顧客のPCでコーディングエージェントが function-colorという悪意あるnpmパッケージを入れようとしたのを止めた。 原因をたどると、その顧客の~/Downloadsに、約13KBの AGENTS.mdがあった。「Engineering Work Guidelines」を装った長い文章で、 攻撃の指示は終わり近くの一節に紛れていた。エージェントはまさにその フォルダで起動されていた。ファイルがどうやってダウンロードフォルダに入ったかは 分かっていない。研究者はWebページを開いただけで置けることを別に実演したが、 実際の攻撃者がその方法を使ったかどうかは不明である。本記事は筆者による整理で、 元レポート、BleepingComputerの報道(10月25日)、公式ドキュメントを確認した ものとされる。

現場の混乱

研究者が再現した流れは次のとおりである。利用者がWebページを開くと、 ページのJavaScriptがAGENTS.mdやCLAUDE.mdをダウンロードフォルダへ保存する。 利用者が整理やzip展開を頼むためにそこでAIを起動すると、AIは指示ファイルを 作業のルールとして読み、指示に従って自分の設定ファイルを書き換える。

Codexでは、PC全体に効く~/.codex/config.tomlに攻撃者のMCPサーバーを 登録させた。途中で承認とサンドボックスを外した実行も行われ、レポートによれば その指定はAI自身が「インストールに必要」として付けたもので、成功率は 90%を超えたという。一度登録されると、どのプロジェクトでCodexを起動しても 攻撃者のサーバーが読み込まれる。

ClaudeCodeでは、.claude/settings.jsonで通信先を攻撃者のサーバーに書き換えさせた。 次の起動時にログイントークンがそのサーバーへ送られ、研究者はこのトークンで 被害者として本物のAPIを使えたと報告している。攻撃者のサーバーがAIの返答に なりすまし、サンドボックスの外でコマンドを実行させることもできた。ただし ClaudeCodeで書き込みが成功したのは約半分で、書き込みには人の承認が必要だったこと、 Claude自身が不自然な書き込みを断ることが多かったことが理由とされる。

数字の扱いについて筆者は注意を促している。Xで広まった 「開発者の約50%がダウンロードフォルダで起動している」は元レポートの 数字ではなく、元は「Forever Securityの顧客企業の約半数で、ダウンロードフォルダで 起動したエージェントが見つかった」というものである。BleepingComputerによれば、 顧客全体でClaudeCodeだけでも1,300回以上のセッションが ダウンロードフォルダで起動されていた。

原因

筆者によれば、この攻撃にバグはなく、問題のない普通の動きが ダウンロードフォルダで重なったことが穴になった。

  • ブラウザは.mdのようなプレーンテキストを警告なしで保存する。Chrome、Edge、 Firefoxは初期設定で保存先を尋ねずに~/Downloadsへ保存する(BleepingComputerの 検証ではBraveは保存の確認を出した)。筆者もChrome 156で、開くとファイルを 保存するページを使い、クリックなしでAGENTS.mdが保存されることを確かめた (ヘッドレスモードでの確認)。
  • CodexとClaudeCodeは、起動時に指示ファイルを自動で読み込む。ClaudeCodeは 2.1.277以降、CLAUDE.mdがなければAGENTS.mdを読むため、AGENTS.md1枚で両方に届く。 また起動フォルダより上のフォルダの指示ファイルもさかのぼって読むので、 /Downloads/tool-v2/で起動しても/Downloads/AGENTS.mdが読まれる。 AIは、そのファイルを書いたのが本人か攻撃者かを見分けられない。
  • ダウンロードフォルダは、Webやメール、チャットで受け取った他人のファイルが 集まる場所である。
  • 信頼の確認はフォルダに1回だけである。ClaudeCodeは~/.claude.jsonに、Codexは ~/.codex/config.tomlに信頼したフォルダを記録し、一度信頼すると後から置かれた 指示ファイルは確認なしで読まれる。筆者の環境ではCodexが、信頼設定のない 偽のフォルダでもAGENTS.mdに従った。
  • 設定ファイルは通信先、使う外部ツール、確認なしで実行してよい範囲を決める。 ここが書き換わるとAIの土台が攻撃者のものになる。

筆者は、2026年初めのClaudeCodeの不具合CVE-2026-21852(確認画面より先に通信が 始まる欠陥で、2.0.65で修正)と対比している。今回は利用者の信頼、AIの指示への 追従、設定の書き換えのどれも仕様どおりであり、どこかを直せば済む話ではない。 文面は正当な手順書にもありうるため、ウイルス対策ソフトでも止めにくいという。

筆者の手元の検証は無害な目印だけを書いたファイルで行い、攻撃の中身は再現していない。 Codex 0.159.2は偽のダウンロードフォルダで2回中2回、最初の返答に目印を書いた。 ClaudeCode 2.1.296は、ログイン切れのためAIの返答は確かめられなかったが、 /contextで偽フォルダと展開フォルダのどちらでもAGENTS.mdが読み込まれることを 確認した。Chromeは先頭のドットを外し、フォルダの区切りを_に置き換えるため、 Webページは.claude/settings.jsonを直接は置けない。そのため攻撃は、置けるAGENTS.mdに 設定の書き換えを書き、AI自身に書き換えさせる形をとっている。

対策

筆者によれば、研究者はOpenAIにもAnthropicにも直すべきものはないと書いており、 修正パッチは期待できない。筆者が示す対策は次のとおりである。

  • ダウンロードフォルダ(とその中のフォルダ)でエージェントを起動しない。作業用 フォルダを作って必要なファイルだけ移し、ls -laで見覚えのない指示ファイルや 設定フォルダがないか確かめてから起動する。
  • ホームフォルダなど広い場所での起動、中身を見ない「信頼する」、 --yoloや--dangerously-skip-permissionsなど承認とサンドボックスを外す使い方を 避ける。
  • 承認画面では書き込み先と実行内容を見る。~/.codex/config.toml、 .claude/settings.json、.mcp.jsonへの書き込みや、通信先を変える項目、 頼んでいないインストールは、自分の依頼と結びつかなければ拒否する。 筆者は、ClaudeCodeのautoモードでは判定用のモデルがCLAUDE.mdの内容も参照する と公式ドキュメントにあるため、任せれば安心とは言えないと注意している。
  • Chromeのダウンロード前に保存場所を確認する設定をオンにする。
  • ダウンロードフォルダにAGENTS.mdなど4つの名前のファイルを先に置く方法は補助策で ある。筆者の検証では1つだけ置くのでは穴が残り、名前が変わったファイルも AIに一覧を頼めば中身を読まれた。
  • すでに使っていた場合は、ダウンロードフォルダの指示ファイル、CodexとClaudeCodeの 設定、信頼済みフォルダを点検し、怪しいものがあれば設定を戻したうえで ログインし直す。レポートは盗まれたトークンを生きたセッションと強調している。

教訓は、AIに読ませる指示の出どころは人が決めるということである。他人が置いた ファイルが集まる場所と、AIの作業場は分けて使う。

出典

PREFLIGHTあなたの Mac の備えは、大丈夫?BB Preflight は、AIエージェントの権限や鍵の置き場所など21項目を、読み取りだけで点検する無料の Mac 用ツールです。点検してみる →