AIClaude.ai

MacのClaude Code・Codexを狙う「AGENTS.md」攻撃に注意を–具体的な対処予防の手順まとめ


💬なんか危なそうだったので、自分のMacでも確認して対処完了。手順をまとめておきます。所感続き↓

セキュリティ企業のForever Securityが、ダウンロードフォルダに置かれたテキストファイル1つで、AIコーディングエージェントの「Codex」と「Claude Code」が攻撃者の指示に従ってしまう、というレポートを公開。

きっかけは、実際の顧客のMacで起きた事例。

ダウンロードフォルダにあったAGENTS.mdというファイルが、エージェントにマルウェアのインストールを指示していました。

AIエージェントで作業をするときに、ローカルのダウンロードフォルダを作業フォルダとして使ったことがある場合には、要注意。以下、確認方法と対処方法のまとめです。

ダウンロードフォルダのAGENTS.mdでAIエージェントが乗っ取られる攻撃のイメージ

KEY POINTS — ソース:① via Forever Security(2026年10月22日付)

  • 顧客のMacで、エージェントによる悪性npmパッケージ「function-color」のインストールを阻止
  • 指示の出どころは、~/Downloads(ダウンロードフォルダ)にあったAGENTS.md
  • Webサイトは、クリックや承認なしでダウンロードフォルダにファイルを保存できる
  • Codexでの再現テストでは、90%超の試行でマルウェアを実行
  • Claude Codeでの再現テストでは、約半分の試行でAPIの通信先を書き換え。ログイン用のOAuthトークンが漏れる
  • OpenAI・Anthropicが修正できる種類の問題ではない、とForever Securityは説明

発端:顧客のMacで止めた「function-color」のインストール

Forever Securityの製品が、作業中のコーディングエージェントを止めました。エージェントがインストールしようとしていたのは、function-colorというnpmパッケージ。約2年間見つからずに出回っていた、マルウェアを含むパッケージです。現在はnpmから削除されています。

指示を出していたのは、開発者本人ではなく、ダウンロードフォルダにあったAGENTS.mdでした。

AGENTS.mdは、AIエージェント向けに作業の手順やルールを書いておくテキストファイル。Codexは作業を始めるときにこのファイルを読み、書かれた手順に従います。Claude Codeでは、CLAUDE.mdが同じ役割のファイルです。

問題のAGENTS.mdは、通常の開発メモに見えるように書かれていました。Forever Securityは攻撃を実行前に止めていますが、ファイル自体がどうやってダウンロードフォルダに置かれたのかは判明していません。

Webページは、クリックなしでダウンロードフォルダにファイルを置ける

Forever Securityによれば、考えられる経路は、2つの動作の組み合わせです。

  • Webサイトは、ユーザーのクリックや承認なしで、ダウンロードフォルダにファイルを保存できる。ファイル名も中身もサイト側が決められる
  • エージェントは、起動したフォルダにある指示ファイルを信じて従う

つまり、ダウンロードフォルダでエージェントを起動すると、Webページが置いた指示ファイルを読んでしまいます。ファイル自体は、エージェントが読むまで何もしません。

Forever Securityによると、同社の顧客の約半数が、ダウンロードフォルダの中でコーディングエージェントを動かしていました。ZIPを解凍して、そのまま中で作業を始める、といった使い方です。

再現テスト:Codexは90%超、Claude Codeは約半分

上記の仮説を元に以下の検証が行われました。

Codex:全セッションに効く設定を書き換え

Forever Securityは、実際に見つかったAGENTS.mdを隔離した仮想マシンで動かしました。結果、Codexは90%を超える試行でマルウェアを実行。

エージェントは、Codex全体の設定ファイル ~/.codex/config.toml に、攻撃者のサーバーを登録しました。この設定はMac上のすべてのCodexセッションで有効です。ダウンロードフォルダ以外で作業しても、攻撃者のサーバーが読み込まれる状態になります。

さらにエージェントは、承認とサンドボックスを無効にするオプション(--dangerously-bypass-approvals-and-sandbox)を自分で付けて、インストールを実行しました。AGENTS.mdに「このインストールには必要」と書かれていたためです。

なお、CodexがAGENTS.mdに従うのは、信頼済みのフォルダだけ。しかしながら、過去に一度でもそこで作業したことがあれば、ダウンロードフォルダも信頼済みになっている、とForever Securityは説明しています。

Claude Code:APIの通信先を書き換え、ログイン情報が漏れる

Claude Codeでのテストでは、Forever Securityが作ったCLAUDE.mdを使用。社内ゲートウェイの設定手順に見せかけた内容です。

このCLAUDE.mdは、プロジェクトの設定ファイル .claude/settings.json に ANTHROPIC_BASE_URL を書き込ませます。これはClaude CodeがAPIに接続する先のアドレスです。書き込みが成功したのは約半分の試行でした。

書き換えが成功すると、Claude Codeの通信は攻撃者のサーバーを通ります。そこでOAuthトークン(ログイン用の認証情報)が抜き取られます。Forever Securityは、抜き取ったトークンで本物のAPIに接続し、被害者のアカウントとして利用できることを確認しています。

次のセッションでは、攻撃者のサーバーがサンドボックスを無効にしたコマンドを送り、Claude Codeがそれを実行しました。同じセッション内での実行も、約5回に1回成功しています。

一方で、Claude Codeのサブエージェントが CLAUDE.md を攻撃だと見抜いたケースもありました。セキュリティ関連のメモが多いフォルダでは、毎回失敗しています。

自分のMacが安全かどうかを確認する方法

Forever Securityの推奨をもとに、Macでの確認手順をまとめました。ターミナルに貼り付けて実行します。どれも中身を表示するだけで、ファイルは変更しません。

1. 知らない指示ファイルがないか

ダウンロードフォルダ(解凍したフォルダを含む)に、自分で作っていないAGENTS.md・CLAUDE.mdがないか探します。

find ~/Downloads -iname "AGENTS.md" -o -iname "CLAUDE.md"

何も表示されなければ問題ありません。見つかった場合は、下の「見つかった場合の対処」に進みます。

2. Claude Codeの設定が書き換えられていないか

まず、全体の設定ファイルを表示します。

cat ~/.claude/settings.json

次に、各プロジェクトの設定ファイルから ANTHROPIC_BASE_URL を探します。

find ~ -path ~/Library -prune -o -path "*/.claude/settings*.json" -print -exec grep -H "ANTHROPIC_BASE_URL" {} \; 2>/dev/null

ファイルのパスだけが表示されれば問題ありません。ANTHROPIC_BASE_URL を含む行が表示され、自分で設定した覚えがない場合は、書き換えられています。下の「見つかった場合の対処」に進みます。

3. Codexの設定が書き換えられていないか(Codexユーザーのみ)

cat ~/.codex/config.toml

[mcp_servers.〜] の項目に、登録した覚えのないサーバーがないか確認します。Forever Securityの再現テストでは、project-tools という名前で登録されていました。覚えのないサーバーがあれば、下の「見つかった場合の対処」に進みます。

4. function-colorが入っていないか

npm ls -g function-color

何も表示されなければ問題ありません。function-colorが表示された場合は、下の「見つかった場合の対処」の4に進みます。

見つかった場合の対処:指示ファイルを消しても、書き換えは残る

知らない指示ファイルが見つかったら削除します。しかし、削除しただけでは問題は解決しません。

指示ファイルは、エージェントに設定を書き換えさせるための入り口であり、エージェントがすでにファイルを読んでいた場合、書き換えられた設定自体はファイルを消しても残ります。

Codexの設定ファイルは全セッションに効くので、別のフォルダで作業しても、攻撃者のサーバーが読み込まれ続けます。Claude Codeでは、盗まれたトークンが使える状態のまま残ります。本当に確認すべきなのは、ファイルの有無より、設定が書き換えられていないかです。

1. エージェントを終了して、指示ファイルを削除する

そのフォルダで動いているCodex・Claude Codeのセッションを終了します。

指示ファイルは、中身を読んでから削除します。書かれている設定ファイル名やURLが、次の確認の手がかりになります。

2. 書き換えられた設定を元に戻す

上の確認手順2・3をもう一度実行し、覚えのない設定を削除します。

  • Claude Code:.claude/settings.json から、覚えのない ANTHROPIC_BASE_URL の行を削除する。プロキシなど、ほかの接続先の設定も確認する
  • Codex:~/.codex/config.toml から、覚えのない [mcp_servers.〜] の項目を削除する。chatgpt_base_url が変わっていないかも確認する

3. ログイン情報を作り直す

設定の書き換えが見つかった場合は、トークンがすでに盗まれている前提で対処します。盗まれたトークンは、そのままログイン状態として使えるためです。

  • Claude Code:/logout でログアウトし、/login で再ログインする
  • Codex:codex logout でログアウトし、再ログインする

設定を元に戻しても、ログイン情報を作り直すまでは、盗まれたトークンが使える状態のままです。

4. function-colorが入っていた場合

Forever Securityは、そのMacを侵害済みとして扱うよう求めています。設定を戻すだけでは足りません。Macに保存しているパスワードやAPIキーなど、ほかのログイン情報も変更の対象になります。

Forever Securityが挙げる予防策

  • ダウンロードフォルダでエージェントを起動しない
  • 自分で書いていないAGENTS.md・CLAUDE.mdは、エージェントに読ませる前に中身を確認する
  • 承認とサンドボックスは有効のままにする。承認を回避するよう指示する内容があれば疑う

Forever Securityは「OpenAIやAnthropicが修正するものはない」と書いています。フォルダの指示ファイルに従うのは、エージェントが設計どおりに動いているだけ、という理由です。アップデートを待っても解決しないので、使う側の習慣で防ぐことになります。


💬 軽めインプレ所感

僕も読んですぐに自分のMacを確認しました。とりあえず、知らないCLAUDE.mdも、ANTHROPIC_BASE_URLの書き換えもなし。ひと安心。

怖いのは、ファイルを置くだけなら、Webページを開くだけでできてしまうところですね。ダウンロードフォルダって、毎日なにかしら勝手に増えていく場所なので、、、。

顧客の約半数がダウンロードフォルダでエージェントを動かしていた、という数字もリアル。ZIPを解凍して、そのフォルダでそのままClaude Codeを起動する、というのは普通にやりがちです。

ちなみに、本文の「侵害済みとして扱う」。具体的に何をするのかはレポートには書かれていません。一般的なセキュリティ対応だと、以下になります。

  • Wi-Fiをオフにして、Macをネットワークから切り離す
  • iPhoneなど別の端末から、Apple Account・Google・GitHubなど、そのMacでログインしていたサービスのパスワードを変更。「すべてのデバイスからログアウト」も実行する
  • キーチェーンやブラウザに保存したパスワード、APIキー、SSH鍵は、発行元で無効にして作り直す
  • 書類や写真などのデータだけバックアップして、macOSを消去・再インストール。Time Machineで丸ごと戻すと、マルウェアごと戻る可能性あり

パスワードの変更を別の端末でやるのは、感染したMacで入力すると、新しいパスワードまで盗まれるかもしれないから。

そもそも、function-colorが具体的に何を盗むのかも、Forever Securityのレポートには書かれていません。わからない以上、最悪を想定して全部やるしかありません、、、。面倒だけど

ちなみに、ブラウザの保存先をデスクトップにしている人は、デスクトップも同じ扱いになる可能性大、、、。気をつけましょう、、。

  1. 1
  2. 2 iPhone Duoで黒帯表示になるアプリ一覧のイメージ
  3. 3 HPの脆弱性への対応が完了したことを示すサーバーと盾のアイコン
  4. 4
  5. 5
  6. 6
  7. 7
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7