ダウンロードフォルダの指示ファイルによるAIコーディングエージェントの乗っ取り
- タグ
- 国外
Forever Securityの2026年10月22日の報告によると、顧客の端末のダウンロードフォルダ(~/Downloads)に置かれた悪意あるAGENTS.mdに従い、コーディングエージェントが悪性のnpmパッケージfunction-colorを導入しようとした[3]。同社はコードの実行前にこれを止め、攻撃全体をOpenAI CodexとClaude Codeの両方で再現した[3]。
報告の内容
Forever Securityは、見つかったAGENTS.mdを、Codexが起動時に読み込んで従う種類のファイルだと説明した[3]。このファイルはCodexを狙っていた[3]。function-colorは既知の悪性パッケージで、その攻撃活動は約2年間〔注1〕気付かれず、後に捕捉されて公に報告された[3]。
agents.mdのサイトによると、AGENTS.mdはコーディングエージェントを導くための簡素な公開の形式で、6万を超えるオープンソースのプロジェクトが使っている[9]。エージェントはディレクトリ構造の中で最も近いAGENTS.mdを自動で読み、最も近いものが優先される[9]。
Forever Securityは、ダウンロードフォルダを、Webサイトがクリックも許可も無しにファイルを置ける唯一のフォルダと説明した[3]。Webページは自らファイルを端末に保存でき、その名前と内容も選べる[3]。インターネットから取得した実行ファイルは利用者が承認するまで動かないが、AGENTS.mdは実行ファイルではないため、実行ファイルを止める仕組みはどれも当たらない[3]。
Forever Securityの説明では、作業を任せて離れている間にエージェントが自らブラウザを開いてサイトを巡回すると、その一つがファイルを置いても到着を誰も見ないことがある[3]。仕込まれたファイルはエージェントに自身の設定を書き換えさせ、そこからマルウェアの導入(リモートコード実行)か、ログイントークンの引き渡し(アカウントの乗っ取り)に至りうる[3]。
Codexでの再現
Forever Securityは、顧客の端末にあったAGENTS.mdそのものを、手を加えずに隔離したVMの中で動かした[3]。このファイルは長く平凡な「Engineering Work Guidelines」の文書で、攻撃は終わり近くの1節にあり、定型の環境設定を装っていた[3]。同社の試験では、Codexは90%を超える試行でマルウェアを実行した[3]。
再現の手順では、Forever Securityが管理するページを訪れて離れた瞬間に、ファイルが~/Downloadsに保存された[3]。そのフォルダでCodexを開いて何かを頼むと、Codexは作業の前に、黙って自身の設定へ「project tools」サーバーを加え、npmからパッケージを導入した[3]。書き換えられる設定は、特定のフォルダに結び付かないマシン全体の~/.codex/config.tomlである[3]。以後は、どのフォルダやプロジェクトでも、攻撃者のサーバーがその端末のCodexに読み込まれる[3]。
| 制御 | 所見 | 資料 |
|---|---|---|
| 信頼の条件 | 信頼したプロジェクトのAGENTS.mdにだけ従うが、ダウンロードフォルダで一度作業すれば、そのフォルダは条件を満たす | [3] |
| 書き込みの不安定さ | 短く露骨な導入の指示は拒まれ、長い技術文書の体裁なら通る。実際のファイルが13 KBの文書なのはそのため | [3] |
| 起動時だけの読み込み | サーバーはセッションの開始時にしか読み込まれない。攻撃ファイルは子のcodex execの実行で2つのセッションを1つにまとめる | [3] |
| ネットワークのサンドボックス | コマンドの通信を遮断し、子のプロセスが--dangerously-bypass-approvals-and-sandbox付きで動くまで取得は失敗した。フラグはモデルが導入に必要として自ら書いた | [3] |
| 応答の打ち切り | 時間内に応答しないサーバーを止めるため、遅いnpm installが切られた。導入をlaunchctlに渡してCodexの制御の外で実行させると完了した | [3] |
Claude Codeの通信の付け替え
Forever SecurityはClaude Code向けに、攻撃者が置いたAGENTS.mdに着想を得たCLAUDE.mdを作った[3]。同社は、Claude Codeがはるかに騙しにくく、最終的に成功した攻撃はCodexのものと全く違い、Claude Code自身の通信の向け先を変えるものだったと説明した[3]。
Forever Securityの説明では、CLAUDE.mdは社内のゲートウェイの設定を装い、プロジェクトの.claude/settings.jsonにANTHROPIC_BASE_URLを書き込ませる[3]。これでClaude CodeのAPI通信は、Forever Securityの持つドメインで正規の証明書を使う普通のサーバーに向かう[3]。書き込みの前には人の承認が求められ、不審に見える書き込みは拒まれることが多い[3]。長い技術文書の体裁にした試験では、.claude/settings.jsonが書き込まれたのは約50%だった[3]。
設定が書き込まれれば、通信の向け先の変更で、Claude CodeのOAuthのログイントークンがForever Securityの側に渡る[3]。捕捉したトークンを本物のAPIに使うと被害者として扱われ、コードを実行せずにアカウントを乗っ取れた[3]。
次にそのフォルダで起動すると、Claude Codeは最初の要求から新しい宛先と通信する[3]。Forever Securityがモデルを装い、dangerouslyDisableSandboxをtrueにしたBashの呼び出しを返すと、クライアントはサンドボックスを外して実行した[3]。動作中のセッションは起動時の接続を保つため、攻撃ファイルはサブエージェントを起動させて新しい接続を通す[3]。これは約5分の1で成功し、最初のセッションの中でコードを実行できた[3]。
Forever Securityによると、指示の押し方が過度だと、サブエージェントがCLAUDE.mdを読み、攻撃として検出した[3]。同じファイルが、セキュリティに関するメモの多いフォルダでは一度も成功せず、空のフォルダでは成功した[3]。
時系列
| 日付 | 主体 | 内容 | 資料 |
|---|---|---|---|
| 2025年 | - | function-color 1.0.0がnpmに公開された | [1] |
| 2025年 | - | function-color 1.7.3がnpmに公開された | [1] |
| 2026年 | OpenAI | Codex CLI 0.150.0で、信頼していないプロジェクトがプロジェクト単位のAGENTS.mdの指示を与えないようにした | [10] |
| 2026年 | Anthropic | Claude Code 2.1.277でAGENTS.mdに対応し、CLAUDE.mdの無いプロジェクトではAGENTS.mdを読むようにした | [11] |
| 2026年 | CloudSEK | MALFEXの報告を公開した | [5] |
| 2026年 | Checkmarx | MALFEXの報告を公開した | [4] |
| 2026年 | OSV | function-colorを悪性のコードとするMAL-2026-17647を公開した | [2] |
| 2026年 | - | npmのfunction-colorがsecurity holding packageに置き換わった | [1] |
| 2026年 | Forever Security | 報告を公開した | [3] |
根拠と範囲
Forever Securityのサイトの利用規約によると、運営者はRebora Inc.で、呼称はForeverである[8]。ITmedia AI+は2026年10月28日の記事で、報告した企業を「イスラエルのセキュリティ企業Rebora」と報じた[7]。
計測と試験の方法
Forever Securityの計測では、顧客の約半数〔注2〕がダウンロードフォルダの中でコーディングエージェントを動かし、セッションの約4分の1では、エージェントが本物のブラウザを起動する[3]。同社は試験の大半で、電卓が開くだけの無害な代替を使い、本物の悪性パッケージは隔離したVM上で1回だけ実行した[3]。試験で捕捉したトークンはコードに残さず、更新した[3]。
The Hacker Newsは2026年10月26日の記事で、実際の攻撃者が顧客に対してWebページによる保存の経路を使ったかは分からないと報じた[6]。
npmの悪性パッケージ
The Hacker Newsは、CloudSEKとCheckmarxがfunction-colorを含む攻撃活動を分析し、MALFEXと名付けたと報じた[6]。
Checkmarxの報告では、MALFEXは単一の攻撃者とみられる者に結び付くnpmのサプライチェーンのマルウェア活動で、執筆までに攻撃者が公開した12パッケージのうち8つが悪性だった[4]。function-colorが導入するのは依存関係のfunction-flagで、function-color自体はペイロードを含まない[4]。function-flag 1.7.3はpostinstallでnode.exeを取得するが、取得先は応答しておらず、そのペイロードは回収されていない[4]。function-flagの取得処理はWindows以外で環境変数APPDATAが定義されないため、macOSとLinuxでは黙って失敗し、影響を受けるのはWindowsだけである[4]。
Checkmarxは、2026年9月29日現在、function-flag・function-color・cdn-img-fetchの3つがnpmで導入でき、function-flagとfunction-colorにはアドバイザリが無かったと報告した[4]。npmの公開統計によるfunction-colorの累計ダウンロード数は、2026年10月1日現在で300だった[4]。Checkmarxは、この数は登録先での到達の数で、侵害された端末の数ではないと注記した[4]。
CloudSEKの報告では、攻撃者はポルトガル語のアカウントでnpmに少なくとも12パッケージを公開し、GitHubにペイロードのリポジトリを1つ置いた[5]。
関係者の対応
Forever Securityの見解では、OpenAIとAnthropicに修正すべき点は無く、フォルダのAGENTS.mdに従うエージェントは作られたとおりに動いている[3]。同社は、CodexやClaude Codeの不具合ではなく、指示ファイルを読んで自身の設定を書き換えられるエージェントなら、どれもこの方法で操られうると述べた[3]。
Forever Securityが利用者に勧めた対処は5つある[3]。
- エージェントにとってダウンロードフォルダを敵地とみなし、Codex・Claude Codeなどのエージェントをそこで起動しない[3]。
- ダウンロードフォルダやクローンしたばかりのリポジトリにある、自分が書いていないAGENTS.md・CLAUDE.mdを、エージェントに触れさせる前に読む[3]。
- ~/.codex/config.tomlでは見覚えのない
[mcp_servers.*]ブロックや変わったchatgpt_base_urlに、プロジェクトの.claude/settings.jsonではANTHROPIC_BASE_URL・プロキシ・設定していないAPIエンドポイントに注意する[3]。 - 承認とサンドボックスを有効のままにし、それらの回避を促す指示を強く疑う[3]。
- 見つけたらトークンが漏れたとみなし、更新する[3]。
侵害の痕跡として、Forever Securityは、実際の攻撃が導入するfunction-colorが端末の導入履歴にあれば、その端末は侵害されたとみなすよう求めている[3]。OSVは記録MAL-2026-17647(別名GHSA-m6cg-6crx-mggv)でfunction-colorの版1.0.0と1.7.3を対象にした[2]。このパッケージを導入・実行した端末を完全に侵害されたものとして扱い、その端末の秘密情報と鍵を別の端末からすぐ更新するよう求めた[2]。
別の研究では、NVIDIA AI Red Teamが2026年4月20日に、悪意ある依存関係がAGENTS.mdを作ってCodexの動作を乗っ取る、間接的なAGENTS.mdインジェクションを報告した[12]。NVIDIAがOpenAIに協調的な脆弱性の開示を出したのは2025年7月1日で、技術報告と概念実証を添えた[12]。NVIDIAによると、OpenAIは2025年8月19日に、この攻撃は依存関係が侵害された場合と比べて危険を大きく高めないと結論し、変更を予定しないとした[12]。
未公表の事項
- AGENTS.mdを顧客の端末に置いた者と経路(Forever Securityは、誰もそこに置いておらず、どう置かれたのか誰も分からなかったと説明した[3])
- MALFEXの攻撃者と今回のAGENTS.mdとの関係
- 顧客の端末で検知した日付と、同じファイルが見つかった顧客・端末の数
- 試験の試行の回数と、使ったモデル・エージェントの版
- OpenAIとAnthropicの見解
注
出典
関係組織
- [1]GitHub, Inc.『function-color』(2026年10月7日公開)
- [2]OSV『MAL-2026-17647 Malicious code in function-color (npm)』(2026年10月7日公開)
調査・観測
- [3]Rebora Inc.『Markdown Is the New Executable: Attackers Are Dropping Agent Instructions Into Your Downloads Folder From the Web』(2026年10月22日公開)
- [4]Checkmarx Ltd.『MALFEX npm Malware Campaign: Three Payloads And An Adversary That Signs Their Work』(2026年10月5日公開)
- [5]CloudSEK Information Security Pvt. Ltd.『MALFEX - A malicious npm postinstall no advisory has caught for fourteen months』(2026年9月30日公開)
報道機関
- [6]The Hacker News『Malicious File in Downloads Folder Tries to Trick AI Coding Agent Into Installing Malware』(2026年10月26日公開)
- [7]アイティメディア株式会社『「ダウンロードフォルダでAIを使わないで」――セキュリティ企業が注意喚起 エージェントが攻撃者の指示に従いマルウェアインストールの恐れ』(2026年10月28日公開)
背景資料
- [8]Rebora Inc.『Terms of use』(2026年6月10日公開)
- [9]Agentic AI Foundation『AGENTS.md』(公開日不明、2026年11月1日閲覧)
- [10]OpenAI『ChatGPT & Codex changelog』(2026年8月26日公開)
- [11]Anthropic PBC『Claude Code changelog』(2026年9月18日公開)
- [12]NVIDIA Corporation『Mitigating Indirect AGENTS.md Injection Attacks in Agentic Environments』(2026年4月20日公開)
更新記録
- 2026年11月1日:公開した。
- 2026年11月3日:報告の内容、根拠と範囲(計測と試験の方法を含む)の文の言い回しを改めた(事実と出典は変えていない)。
