AI コーディングエージェントを Downloads フォルダーで起動しない(悪意ある AGENTS.md の事例)
エージェントは起動したフォルダーの AGENTS.md や CLAUDE.md を指示として読む。Downloads のように外から来たファイルがたまる場所で起動すると、そこに置かれた指示ファイルに操られうる。
何があったか
イスラエルのセキュリティ企業 Forever Security が、顧客 PC の Downloads フォルダーで悪意ある AGENTS.md を見つけた。中身は Codex に不正な npm パッケージを入れさせる指示で、この端末ではコード実行前に止まった(ファイルがどう届いたかは不明)。
研究者の再現では次のことが起きた。
- Codex: Web ページから保存させた指示ファイルを、信頼済み扱いの Downloads で読ませた。Codex は指示どおり、別のプロジェクトにも効く設定へ MCP サーバーを追加し、マルウェア
function-colorを導入した。途中で承認とサンドボックスを切った Codex の子プロセスを起動し、macOS のlaunchctl経由でnpm installを実行していた。 - Claude Code: 別の
CLAUDE.mdで API の接続先を書き換えさせ、OAuth トークンの窃取と命令実行を実証した。こちらは設定の書き換えに人の承認が必要で、書き込みの成功は約半数、同じセッション内でのコード実行は約 5 分の 1 だったという。 - 試験の大半は電卓を起動する無害な処理で、実マルウェアを動かしたのは隔離 VM での 1 回。Codex の成功率 90% 超という数字も出ているが、試行数の内訳は示されていない。
対策
- エージェントは作業用のリポジトリの中だけで起動する。 Downloads、デスクトップ、ホームディレクトリ直下のように雑多なファイルが置かれる場所では起動しない。
- フォルダーを「信頼済み」にする範囲を狭く保つ。 Downloads のような場所を信頼済みにしていたら外す。
- 承認とサンドボックスは有効のままにする。 指示ファイルが「承認を切れ」「別プロセスで動かせ」と言っても従わせない運用にする。
- 設定の変化を定期的に点検する。 身に覚えのない指示ファイル、グローバル設定に追加された MCP サーバー、API の接続先(ベース URL)の変更がないかを見る。
sh
# 例: ホーム配下で最近作られた指示ファイルを探す find ~ -maxdepth 3 \( -name 'AGENTS.md' -o -name 'CLAUDE.md' \) -mtime -14 2>/dev/null function-colorを入れてしまった端末は侵害済みとして扱う。 GitHub の勧告に従い、その端末にあった秘密情報は 別の端末から 交換する。
注意点
- 指示ファイルは見た目は普通の Markdown なので、ウイルス対策ソフトでは引っかかりにくい。中身を読んで確かめるしかない。
- 関連: エージェントスキルに隠された指示を見つける(HTML コメント・不可視文字・大量の空行)
出典
- @MalwareBibleJP · 2026-10-29
- Forever Security: forever.security
- GHSA-m6cg-6crx-mggv: github.com