ダウンロードフォルダのAGENTS.mdでAIエージェント乗っ取り

Codexが指示ファイルに従いマルウェアを入れる寸前に

顧客のマシンで悪性のnpmパッケージ「function-color」がインストールされかけ、Forever Securityの製品がそれを阻止しました。 インストールを試みていたのは、作業中のコーディングエージェントです。npmは、JavaScriptの部品(パッケージ)を公開・入手するための仕組みです。

function-colorは約2年にわたって気づかれずに公開されていた既知のマルウェアで、現在はnpmから削除されています。インストールはコードが実行される前に止まったため、このマシンに実害は出ていません。

AGENTS.mdはエージェントが従う指示ファイル

Forever Securityが出どころを調べると、インストールの命令は顧客のダウンロードフォルダにあったAGENTS.mdから出ていました。 AGENTS.mdは、コーディングのルールや手順を書いておくテキストファイルです。エージェントは起動するたびにAGENTS.mdを読み込みます。

開発者は通常、このファイルを作業するプロジェクトのフォルダに置いています。見つかったファイルは13KBあり、「Engineering Work Guidelines」という普通の開発メモに見せかけていました。攻撃の部分は、文書の終わり近くに紛れ込ませてありました。

ファイルを置いたのは誰か

このAGENTS.mdを誰がどうやってダウンロードフォルダに置いたのかは、Forever Securityもまだ特定していません。 顧客側でも、ファイルを置いた人は見つかっていません。中身はOpenAIのCodexを狙って書かれていたとのこと。

Forever Securityの公式ブログ記事。ダウンロードフォルダに置かれた指示ファイルでAIコーディングエージェントが乗っ取られる攻撃を報告している
Forever Securityは10月22日、Gal Weizman氏とOmer Samet氏の名前でこの報告を公開しました。Forever Security 公式ブログ
"Forever Security found a malicious AGENTS.md file in the ~/Downloads folder of a real customer machine - plain text, disguised as ordinary engineering notes. / October 22, 2026" — Executive Summary・公開日の表記より
公式情報を見る →

Webページはクリックなしでファイルを置けるのか

Forever Securityによると、Webページはユーザーのクリックや許可が無くても、ダウンロードフォルダにファイルを保存できるとのこと。また、ファイルの名前と中身もページ側で指定できるため、「AGENTS.md」という名前のファイルを黙って置くことも可能です。

細工したWebサイトにアクセスした時点で、AGENTS.mdが保存される攻撃です。後でユーザーがそのフォルダでエージェントを起動すると、エージェントはファイルの指示に従ってしまいます。Forever Securityは、サイトにアクセスして離れた瞬間にAGENTS.mdが保存される実証用のページを自作しました。ただし、実際の攻撃でこの方法が使われたかどうかは確認されていません。

AGENTS.mdは実行ファイルでないためOSの警告が出ない

インターネットから入手したアプリなどの実行ファイルは、ユーザーが許可するまでOSが起動させません。 一方、AGENTS.mdはただのテキストなので、この仕組みの対象になりません。

ファイル自体は何もしませんが、エージェントに読み込まれた時点で書かれた内容がそのまま実行されます。Forever Securityは、エージェントにとってAGENTS.mdは実行ファイルと同じように振る舞うとしています。

ブラウザで巡回中のエージェントがファイルを拾う恐れも

最近のエージェントは指示された作業のためにブラウザを自動で開き、Webサイトを巡回します。 その途中で訪れたサイトがファイルを置いても、作業を任せて画面の前に人がいなければ、誰も気づくことができません。

Forever Securityの顧客データでは、約半数の顧客がダウンロードフォルダを作業場所にしてコーディングエージェントを使っていました。また、エージェントを起動したセッションのうち約1/4は実際のブラウザを開いていたとのこと。

"A web page can download a file named AGENTS.md into your Downloads folder, silently." — Why this is a security hazardより
公式情報を見る →

成功率はCodexが90%超、Claude Codeが約半数

Forever Securityは、CodexとClaude Codeの両方で同じ流れの攻撃を再現しました。 Codexでは90%を超える試行でマルウェアが実行され、Claude Codeでは約半数の試行で設定が書き換えられています。ただし、Codexで使ったのは実物のファイルで、Claude Code用のファイルはForever Securityが実物を参考に自作しました。

Codexではマシン全体の設定に不正なサーバーが残る

実物のAGENTS.mdは、ユーザーが指示した作業に取りかかる前にCodexの設定ファイル「.codex/config.toml」へサーバーを1つ登録させる内容でした。 登録したサーバーをCodexが起動するときに、function-colorのインストールが始まる仕掛けです。Forever Securityは、隔離した仮想マシン(VM)の中で実物のファイルを実行して、この流れを再現しました。

ホームフォルダにあるこのconfig.tomlは、どのプロジェクトでCodexを起動しても読み込まれる設定です。一度書き込まれると、ダウンロードフォルダを離れて別の場所で作業しても、登録された不正なサーバーが毎回起動します。

Codexが従うのは、ユーザーが信頼済みにしたプロジェクトのAGENTS.mdだけです。とはいえ、過去にダウンロードフォルダでCodexを使ったことがあれば、ダウンロードフォルダもその信頼済みのプロジェクトに含まれます。

指示ファイルには、承認とサンドボックスを無効にした状態でCodexをもう1つ起動させる手順も含まれていました。サンドボックスはエージェントが実行するコマンドを隔離して、ネットワークへの接続などを制限する仕組みです。

Claude Codeではログイン用トークンが流出

Claude Codeの実験では、CLAUDE.mdの指示でプロジェクトの設定ファイル「.claude/settings.json」を書き換えさせました。 書き換えの内容は、APIの通信先をForever Securityのサーバーに変更するものです。通信先が変わると、Claude Codeはログイン用の認証情報(OAuthトークン)を毎回の通信で相手のサーバーへ送信します。

Forever Securityはこの認証情報で本物のAPIに接続し、被害者のアカウントとして利用できることを確認しました。コードを1行も実行させずに、アカウントを乗っ取れたことになります。

さらに次回の起動からは相手のサーバーがAIモデルになりすまして応答し、Claude Codeはその応答に含まれるコマンドを実行してしまいます。書き換えたその場のセッションでコードを実行させられたのは、約1/5の試行でした。

一方でClaude Codeはファイルの書き込みに人の承認を求め、怪しい書き込みを拒否することもありました。セキュリティのメモが多いフォルダでは、攻撃は毎回失敗したとのこと。

"In our testing, Codex ran the malware in more than 90% of attempts. / In our testing, Claude followed through on this about 50% of the time." — 1. Codex・2. Claudeより
公式情報を見る →

Foreverは修正ではなく起動場所の見直しを勧める

Forever Securityは、OpenAIやAnthropicが修正するものは無いとしています。 エージェントは起動したフォルダの指示ファイルに従うよう作られていて、今回もその仕様どおりに動作しただけだからです。

偽の銀行ページを表示したブラウザが壊れていないのと同じだと、Forever Securityは例えています。OpenAIとAnthropicは、この報告へのコメントを出していません。

ダウンロードフォルダでエージェントを起動しない

Forever Securityが最初に勧めているのは、ダウンロードフォルダでCodexやClaude Codeなどのエージェントを起動しないことです。また、Webが勝手にファイルを置けるフォルダは、ダウンロードフォルダだけだとしています。 ただし、ダウンロードしたファイルの整理などでエージェントを使いたいときは、必要なファイルだけを別の作業用フォルダへ移してから起動すると安全でしょう。

心当たりのない指示ファイルと設定をチェック

書いた覚えのないAGENTS.mdやCLAUDE.mdを見つけたら、エージェントに読み込ませる前に中身を読んでください。 ダウンロードフォルダだけでなく、クローンしたばかりのリポジトリも対象です。一度書き換えられると後の起動にも残るため、エージェントの設定ファイルに見覚えのない書き込みが無いかも、次の2か所で確認しておきましょう。

  • Codex:ホームフォルダの「.codex/config.toml」に、登録した覚えのないサーバー設定([mcp_servers.*])や、書き換えられた「chatgpt_base_url」が無いか
  • Claude Code:プロジェクトごとの「.claude/settings.json」で、APIの通信先(「ANTHROPIC_BASE_URL」など)やプロキシが、覚えのない値に変わっていないか

怪しい書き込みが見つかったら、エージェントのログイン用トークンは流出したものと考えて、無効にしてから発行し直してください。function-colorがインストールされていたマシンは、侵害されたものとして対応する必要があります。

"Treat ~/Downloads as hostile ground for agents. Do not start Codex, Claude Code, or any agent in it." — What you should doより
公式情報を見る →

勤務先でAIエージェントの利用状況を点検

今回と同じ攻撃は、社員が仕事で使うエージェントにも起こりえます。 会社のPCでも、ダウンロードフォルダはWebから書き込める場所です。

社員が個人の判断でエージェントを入れていれば、情報システム部門が気づかないまま攻撃の条件がそろうでしょう。エージェントが読み込んだ外部の情報で乗っ取られる手口は、ほかにも報告されています。

会社側:社員が利用するAIエージェントと権限を把握

会社として最初にやるのは、社員がどのAIエージェントをどんな権限で使っているかを把握することです。 IPAは2026年7月の手引書で、会社が認めたAIの利用状況に加え、許可していないAIを社員が使う「シャドーAI」の実態までつかむよう勧めています。

把握したら、エージェントに与える権限を必要な分だけに限定します。IPAによると、ファイル操作やAPI呼び出しなど外部のシステムと連携するエージェントでは、権限を超えた操作による被害が発生しやすいとのこと。プロンプトで指示しても、ファイルに仕込まれた指示で上書きされることがあります。実行前に人が承認する手順は、システムの設定に組み込んでおくのが確実です。

IPAの「生成AIおよびAIエージェントを安全に活用するための手引書」の表紙。2026年7月、産業サイバーセキュリティセンターの発行
IPAの手引書は、AIエージェントに与える権限を最小限にするよう勧めています。IPA 生成AIおよびAIエージェントを安全に活用するための手引書
"顕在化しやすく、最小権限原則が守られていない環境では特にリスクが高まる。" — 4.2.2 発生被害 B:付与権限外の操作より
公式情報を見る →

社員側:承認とサンドボックスを有効にしたまま利用

今回Codexを狙った攻撃は、承認とサンドボックスを無効にさせる手順を含んでいました。 つまり社員一人ひとりにできるのは、エージェントの承認とサンドボックスを有効にしたまま使うことです。指示ファイルやWebページが承認を省略するオプションを使うよう求めていても、そのまま従わずにまず疑ってください。

エージェントは、作業するプロジェクトのフォルダで起動するようにしておきましょう。IPAの「情報セキュリティ10大脅威 2026」でも、組織向けの3位に「AIの利用をめぐるサイバーリスク」が初めて選ばれています。

IPAの「情報セキュリティ10大脅威 2026」組織編の一覧。3位に「AIの利用をめぐるサイバーリスク」が初選出として記載されている
組織向けの10大脅威2026では、AIの利用をめぐるリスクが3位に初めて選ばれました。IPA 情報セキュリティ10大脅威 2026
"AIの利用をめぐるサイバーリスク" — 「組織」向け脅威 3位より
公式情報を見る →

FAQ

Claude Codeを使っていても、この攻撃の対象になりますか?
対象になる可能性があります。Forever Securityが自作したCLAUDE.mdで試したところ、Claude Codeは約半数の試行で設定を書き換え、ログイン用のトークンが流出しました。ただし実際に見つかったファイルはCodexを狙ったもので、Claude Codeを狙った実例は報告されていません。
OpenAIやAnthropicのアップデートで防げるようになりますか?
Forever Securityは、修正する対象が無いとしています。エージェントは起動したフォルダの指示ファイルに従うよう作られており、今回もその仕様どおりに動作したためです。防ぐには、ダウンロードフォルダでエージェントを起動しないなど、使い方を見直すことが必要です。
function-colorがインストールされていたらどうすればよいですか?
そのマシンは侵害されたものとして対応してください。マシンにエージェントのログイン用トークンが残っていると、攻撃者はそれでログインできます。トークンも流出したものとみなし、無効にしてから再発行してください。function-colorは、すでにnpmから削除済みです。