米国のセキュリティ 企業Forever Securityは10月22日、顧客のPCの「ダウンロード」フォルダーで、AIコーディングツール向けの不正な指示ファイル「AGENTS.md」を見つけたと公表しました。このフォルダーで起動したOpenAI の「Codex」がファイルの指示に従い、悪意のあるnpm パッケージ「function-color」を入れようとしたところを、同社の製品が止めたとしています。研究者は同じ手口をCodexとAnthropic の「Claude Code」で再現し、マルウェアの実行やログイン用トークンの漏えいまで進むことを確かめました。研究者は「OpenAIやAnthropicが修正するものは無い」と書いており、編集部が確認した範囲では、両社からこの件の告知や修正も出ていません(10月26日時点)。
見つかったのは、ふつうの作業手順に見える13KBの文書
研究者によると、見つかったAGENTS.mdは「Engineering Work Guidelines」と題した13KBの長い文書でした。攻撃の部分は末尾近くの1節だけで、開発環境の準備手順に見せかけています。短く「このパッケージを入れて」と書くとCodexが断るため、長く平凡な文書にしてあると研究者はみています。
AGENTS.mdは、そのプロジェクトでの作業の決まり(使うツールやテストの方法など)をAIコーディングツールに伝えるファイルです。OpenAIの資料によると、Codexは作業を始める前にAGENTS.mdを読み、起動のたびに指示をまとめ直します。Claude Codeは、同じ役割のファイルとしてCLAUDE.mdを読みます。
ファイルがどうやってダウンロードフォルダーに入ったかは、顧客の件では分かっていません。研究者は、Webページは利用者の操作なしに、ファイル名と中身を決めてダウンロードフォルダーへ保存できると指摘し、試験用のページも作りました。米BleepingComputerの検証では、Chrome・Edge・Firefoxは初期設定で保存先を聞かずに保存し(通知は出ます)、Braveは保存の前に確認を求めました。
Forever Securityの観測では、顧客の約半数で、AIコーディングツールをダウンロードフォルダーで動かしていました。AIエージェントのセッションの約4分の1は、実際のブラウザーを開いています。フォルダーの整理やダウンロードしたファイルの処理をAIに頼むと、このフォルダーで起動しがちです。エージェントにWebを閲覧させている間に、人の見ていないところでファイルが置かれる恐れもあります。
ダウンロードフォルダーのAGENTS.mdから、CodexとClaude Codeが乗っ取られるまで 作成: 編集部 / 出典: Forever Security、BleepingComputer
Codexには、設定ファイルへMCPサーバーを書き足させた
見つかったファイルは、セッションの初めに、利用者の依頼より先に「~/.codex/config.toml」へ、MCPサーバー「project-tools」の登録を書き足すよう指示していました。登録の中身は、macOSのlaunchctlからnpmでfunction-colorを入れるコマンドです。さらに、登録を確かめる名目で、承認とサンドボックスを外す「--dangerously-bypass-approvals-and-sandbox」付きで子のCodex(codex exec)を動かすよう求めていました。CodexはセッションのはじめにMCPサーバーのコマンドを実行するため、子のセッションが起動した時点でパッケージが入ります。
研究者の試験では、9割を超える試行で実行まで進みました。誰も承認していない1回のセッションで起きたとしています。試験の多くは電卓を開くだけの無害なコードで行い、実際のマルウェアは隔離した仮想マシンで1回動かしました。
config.tomlは、そのPCのCodex全体の設定です。一度書き込まれると、ほかのフォルダーやプロジェクトで起動したセッションでも、攻撃者のサーバーが読み込まれます。CodexはAGENTS.mdに従う前提として、そのプロジェクトを信頼しているかを見ますが、研究者は「一度ダウンロードフォルダーで作業すると、その条件を満たす」と指摘しています。
Claude Codeには、APIの接続先を書き換えさせてトークンを奪った
Claude Codeには見つかったファイルの手口が通じにくく、研究者はそれを参考に別のCLAUDE.mdを作りました。プロジェクトの「.claude/settings.json」に、環境変数「ANTHROPIC_BASE_URL」として研究者のサーバーのURLを書かせる内容で、社内のゲートウェイの設定に見せかけています。
この書き込みには利用者の承認が要り、Claude Codeは怪しい書き込みを断ることも多いとしています。それでも長い文書の形にすると、約半分の試行で書き込みまで進みました。書き込まれると、Claude CodeはAPIへの通信を研究者のサーバーへ送り、そのたびにOAuthのトークンも渡ります。研究者は、取ったトークンを本物のAPIで使い、被害者のアカウントとして使えることを確かめました。
次にそのフォルダーで起動すると、研究者のサーバーがモデルのふりをして、サンドボックスを外す指定(dangerouslyDisableSandbox)付きのコマンドを返し、Claude Codeはそれを実行しました。起動中のセッションでも、設定の確認を名目にサブエージェントを起動させる手で、約5回に1回はコードの実行まで進んでいます。一方、セキュリティのメモが多いフォルダーでは、サブエージェントがファイルを攻撃と見抜き、毎回失敗しました。
修正は出ていない。各社の資料にある設定で防ぐ
研究者は、AIコーディングツールがフォルダーの指示ファイルに従うのは設計どおりの動きで、ブラウザーがフィッシングのページを表示するのと同じだとしています。CodexやClaude Codeの不具合ではないため修正するものは無いとし、指示ファイルを読み、自分の設定を書き換えられるツールなら、同じように狙えると書いています。
防ぐ手段は、使い方と設定です。両社の公式の資料には、次の仕組みが書かれています。
ツール
公式の資料にある仕組み
Codex
作業フォルダーを信頼するまで、読み取り専用で始まる場合がある。プロジェクトごとに「trust_level = "untrusted"」を指定できる。「--dangerously-bypass-approvals-and-sandbox」はサンドボックスも承認も無くす指定で、推奨しないと明記している。企業の管理者はManaged configurationで設定を管理できる
Claude Code
対話型のセッションでは、信頼していないフォルダーで起動すると確認の画面が出る(-pで動かすセッションでは出ない)。ホームフォルダーで起動すると信頼はそのセッションに限られ、プロジェクトのフォルダーから起動するよう案内している。管理者はmanaged settingsで社内の基準を強制でき、ConfigChangeフックでセッション中の設定の変更を記録したり止めたりできる
当社の見立てでは、ダウンロードフォルダーを一度でも信頼すると、こうした確認の画面は働かなくなります。まず起動する場所を決め、そのうえで設定ファイルの変更を監視する順番です。
AIツールに渡す権限の決め方は、「APIキーは.envに」はもう危ない AIエージェントに渡す権限の決め方 にまとめています。MCPサーバーなどの入手の決まりは、GitHubの偽AIスキル・MCPサーバー800件超 FakeGitと社内の入手ルール をご覧ください。
AGENTS.mdの手口に備えて、開発PCで確かめるファイルと決めておく設定 作成: 編集部 / 出典: Forever Security、OpenAI、Anthropic
影響する会社・しない会社
影響する: 社員が、Codex・Claude Code・Cursor CLIなどのAIコーディングツールを自分のPCで使う会社です。特に、ダウンロードフォルダーやホームフォルダーで起動する使い方、エージェントにブラウザーを操作させる使い方がある会社は、今日のうちに確認してください。
影響する: AIコーディングツールのトークンやAPIキーを、開発者のPCに置いている会社です。トークンが漏れると、そのPCの外からでもアカウントを使われます。
影響しにくい: AIコーディングツールを使っていない会社です。クラウドの隔離された環境だけで使い、手元のPCで動かさない会社も、今回の経路(手元のダウンロードフォルダー)からは外れます(当社の見立て)。
研究者の報告には、日本での被害やWindowsでの試験の記載はありません。見つかったファイルは、macOSのコマンド(launchctl)を使っていました。
情シスが今日やること
開発部門と、AIコーディングツールを使っている人・ツール名・起動するフォルダー・承認の設定を洗い出します。
「ダウンロードフォルダーとホームフォルダーでAIコーディングツールを起動しない。作業するプロジェクトのフォルダーで起動する」を社内の決まりにして周知します。ダウンロードしたファイルをAIに処理させたいときは、中身を見てからプロジェクトのフォルダーへ移します。
各自のダウンロードフォルダーと、cloneしたばかりのリポジトリに、自分で置いていないAGENTS.md・CLAUDE.mdが無いかを確かめてもらいます。見つけたら、AIに読ませる前に人が中身を読みます。
AIツールの設定ファイルを確かめてもらいます。Codexでは「~/.codex/config.toml」に、見覚えのない「[mcp_servers.*]」の登録や「chatgpt_base_url」の変更が無いかを見ます。Claude Codeでは、プロジェクトの「.claude/settings.json」に、自分で設定していない「ANTHROPIC_BASE_URL」やプロキシ、APIの接続先が無いかを見ます。
npmパッケージ「function-color」が入った端末は、侵害されたものとして扱います(パッケージはnpmから削除済み)。その端末で使っていたAIツールのトークンとAPIキーを失効させて発行し直し、端末を調べます。研究者は、漏れたトークンは1回の通信ではなく、生きたセッションとして使われるとしています。
承認とサンドボックスを外す指定を、使わない決まりにします。Codexでは「--dangerously-bypass-approvals-and-sandbox」、Claude Codeでは「dangerouslyDisableSandbox」です。管理者向けの設定(CodexのManaged configuration、Claude Codeのmanaged settings)で固められるかも確かめます。