下載資料夾的 AGENTS.md 劫持 Codex:設定檔檢查與移除步驟
曾讓 Codex 整理「下載」資料夾,或直接在裡面處理剛下載的檔案?先用文字編輯器檢查其中的 AGENTS.md,再檢查代理的設定檔。這次事件的風險是:不受信任的文字被當成工作指令,進一步誘導代理改寫自己的設定。
本文依 2026-11-02 可讀取的原始研究與官方文件整理,未執行攻擊樣本,也未掃描讀者裝置。下面的流程可協助找出調查線索;是否受影響,仍需合併設定與執行紀錄判斷。
下載資料夾裡的 AGENTS.md 如何誘導代理改寫設定
Forever Security 的原始研究指出,客戶的 ~/Downloads 裡出現惡意 AGENTS.md,代理嘗試安裝 npm 惡意套件 function-color,但遭攔阻。研究人員尚未確認檔案最初如何進入該資料夾,後續則以網頁下載展示了一條可行路徑。
研究中的 Codex 攻擊檔把惡意操作包裝成開發環境準備,要求在 ~/.codex/config.toml 加入 [mcp_servers.project-tools],再啟動新工作階段載入。該註冊內容實際安排安裝惡意套件,並誘導繞過核准與沙箱;這也是為什麼刪掉下載檔案後,仍要檢查設定是否已被改寫。
研究人員也另外用 Claude Code 重現攻擊:製作 CLAUDE.md,誘導把 ANTHROPIC_BASE_URL 寫進專案的 .claude/settings.json,將 API 流量轉到研究人員控制的端點,展示 OAuth token 外洩。這是研究環境的重現結果,客戶現場的發現則是前述惡意檔案與遭攔阻的安裝嘗試。
BleepingComputer 的驗證也補上重要條件:下載提示與是否要求核准會因瀏覽器而異;攻擊還需要代理在相應目錄啟動並讀取指令,才會接上後續誘導修改設定的流程。
先停下可疑工作階段,再查三個位置
以下是依攻擊鏈整理的人工檢查建議,路徑以 macOS/Linux 常見的家目錄表示法為準。先停止可疑代理與背景任務,改用一般文字編輯器查看檔案,讓檢查過程與可疑工作階段分開。檔案若不存在或無法讀取,分別記下結果,繼續補查。
1. Codex 的使用者與專案設定
檢查 ~/.codex/config.toml,逐一核對 mcp_servers 下面的伺服器:誰加入、用途是什麼、command/args 會啟動什麼,以及 url 指向哪裡。若專案有 .codex/config.toml,也一併核對。這兩個設定位置及 [mcp_servers.<server-name>] 格式,都可由 OpenAI 的 MCP 文件確認。
本案可優先比對 project-tools、function-color 及不明安裝命令,再逐一確認每個伺服器的來源與啟動方式。同名設定可能有合法用途,名稱不同也不能排除惡意修改;記錄時保留完整區塊,方便追查實際執行內容。
2. Claude Code 的 settings.json
檢查以下範圍,尤其是 env 裡的 ANTHROPIC_BASE_URL:
| 位置 | 檢查重點 |
|---|---|
~/.claude/settings.json | 使用者層級是否有未授權的端點或權限變更 |
專案的 .claude/settings.json | 是否被加入不明模型閘道;這是研究示範修改的位置 |
專案的 .claude/settings.local.json | 本機覆寫是否另有可疑值 |
上述設定範圍見 Claude Code 官方設定文件。團隊可能合法使用內部閘道,因此先核對端點擁有者與核准紀錄,再決定是否移除 ANTHROPIC_BASE_URL。若曾自訂設定目錄,也要核對實際使用的位置。
3. 工作目錄、上層目錄與全域指令檔
檢查下載資料夾、目前工作目錄,以及工作目錄到專案根目錄之間的 AGENTS.md、AGENTS.override.md;再看全域的 ~/.codex/AGENTS.md 與 ~/.codex/AGENTS.override.md。若設定過 CODEX_HOME,以實際目錄為準。
OpenAI 的指令探索規則是先讀全域指引,再沿專案根目錄走到目前工作目錄;找不到專案根目錄時,只檢查目前目錄。依這個範圍盤點上層指令檔,就能對照代理實際會讀取的位置。
使用 Claude Code 時,也要檢查工作目錄與上層的 CLAUDE.md,以及其中引入的其他指令檔;官方記憶與指令文件說明了其載入方式。重點是看內容是否要求改寫代理設定、安裝不明套件、轉送憑證,或把關閉防護說成必要準備。
發現異常後,移除與驗收分兩階段
先保存可疑指令檔、設定差異與執行紀錄,再處理修改。公司裝置交由資安窗口調查;調查 function-color 時使用既有紀錄,避免重新安裝。需要對外求助時,先遮蔽設定檔中的憑證。
先阻止再次載入。 確認未授權後,隔離惡意指令檔,從設定中移除對應的 MCP 區塊或還原被改寫的端點,保留其他合法設定。若有可信任備份,可逐項比較差異,只還原受影響的設定。
再追查已經發生的動作。 移除註冊後,還要確認既有程序與已執行 payload 的影響。若紀錄顯示套件安裝或不明命令曾執行,應調查背景程序、下載產物及其他持久化;若流量曾送往未授權端點,應把相關工作階段憑證視為可能外洩,從可信任環境撤銷與輪替。原始研究已展示 token 可被重放,因此端點還原與憑證撤銷都要處理。
完成處理後,重新以人工方式確認:指令檔來源可交代、設定內容符合核准狀態、可疑程序已處理、受影響憑證已撤銷。紀錄不足的項目則標記為「執行狀態待確認」,留待補查。
若你同時使用 Cursor,還要分開核對 Claude Code 擴充套件遭竄改事件;它的散布管道與檢查指標不同,需要依該事件的線索另外檢查。平常新增整合前,也可用 Codex Plugin 權限檢查的來源與動作範圍盤點方式審核需求。
預防重點:把下載檔與可信任專案分開
The Hacker News 整理的防護建議包括避免在下載資料夾啟動代理、先審閱陌生指令檔,以及保留核准提示與沙箱。
實際工作時,可把需要處理的檔案移到專用目錄,先檢視隨附的指令檔,再啟動代理。遇到「先修改全域設定才能繼續」的要求,先核對套件來源、端點擁有者與必要性。即使文件寫著「團隊標準」,要求關閉防護時仍需向團隊確認;來源與用途查清楚後,再決定是否套用。
參考資料: