
一個 GitHub issue 點樣污染 coding agent:三款工具風險拆解
外部文字摸到 CI 權限同 secrets,中間斷咗邊幾道閘
一段 issue 點解行得咁遠
資安公司 Novee Security 喺 Black Hat USA 2026 公開研究,示範外人只靠一個 GitHub 帳戶提交 issue,已經有機會影響 repository 入面自動運行嘅 coding agent。據 iThome 報道,研究涵蓋 Claude Code、Gemini CLI 同 Codex,但三款工具冇共用同一段有問題嘅程式碼,受影響設定同後果亦各有分別。將佢哋籠統叫做「三款 AI 都俾 prompt injection 攻破」,會睇漏真正要修嗰幾層。

圖片:Novee Security
prompt injection 只係入口
公開 issue、PR 內容同 commit message 本身都係外部輸入。agent 讀到藏喺入面嘅指令後,危險程度要睇外圍系統畀咗幾多權力:可唔可以開 shell、寫檔案、連上網,runner 入面又放咗咩 token。Novee 嘅完整報告顯示,三個案例都係某道安全閘做啱咗自己嗰部分,但資料交畀下一個元件時,原本嘅信任假設冇跟住過去。模型受騙只係第一步,工具執行層先決定件事最後會唔會變成入侵。
Claude Code:幾層限制各自留咗罅隙
Novee 話佢哋喺 Anthropic 自家 repository、Claude Code Action 當時嘅預設 tag mode 測試,先後搵到命令檢查、檔案讀取同網上 allowlist 之間嘅落差。相關示範要先令 Claude 接收惡意內容,再借已批准工具接觸 runner 資料;唔係任何本機 Claude Code 對話都會自動中招。最後公開嘅 CVE-2026-54316 影響 0.2.54 至 2.1.163 之前版本,問題喺 2.1.163 修好,詳情可見 NVD 記錄。其餘兩輪問題,Novee 話 Anthropic 已修補,但報告冇列出同樣清楚嘅版本範圍。
Anthropic 而家嘅官方安全指引預設只畀有 repository 寫入權限嘅人啟動 Action,亦直接將開放予非寫入用戶標成高風險。官方提醒內容清洗只能減低 prompt injection,唔會完全消除風險;公開 repository 如果真係要接收陌生人輸入,就要收窄 GitHub token、工具清單同輸出紀錄,亦唔好用長期有效嘅 personal access token 代替短命 job token。
Gemini CLI:有正式 Critical 公告同修補版本
Gemini CLI 呢邊有較完整嘅官方確認。Google 嘅 GHSA-wpqr-6v78-jr5g 安全公告指出,舊版 headless mode 會自動信任 workspace,而 --yolo 模式亦冇正確執行細分 shell allowlist。攻擊要同時有非互動執行、外部內容、開放 shell 工具等條件。受影響 Gemini CLI 係 0.39.1 之前版本,preview 線就係 0.40.0-preview.3 之前;run-gemini-cli Action 要升至 0.1.22。Google 將公告評為 Critical,更新後 headless 環境要明確處理 folder trust。
Novee 另外話,當時 runner 只清走子 process 嘅 secrets,父 process 仲保留原本環境資料,而兩邊又共用身份同 process 空間。呢部分係研究公司嘅技術主張,Google 公告主要確認 workspace trust 同工具 allowlist 問題,冇用同樣篇幅確認完整 secrets 讀取鏈。所以部署者應以官方受影響版本作更新基準,再用隔離 runner、短命憑證同獨立身份收窄萬一失守後嘅範圍。
Codex:sandbox 冇穿,污染留喺共用磁碟
Codex 案例最值得拆清楚。Novee 冇聲稱成功逃出 sandbox;研究指 OpenAI 當時一個 issue 分類任務會喺同一個 job、同一份 checkout 連續運行兩次 Codex。第一次執行可寫 workspace,受污染後便可能改寫下一次 Codex 會載入嘅 AGENTS.md。第二次雖然係新 agent,仍會讀到同一隻磁碟留下嘅指令。換句話講,結構化輸出檢查即使成功擋住錯誤答案,都管唔到 agent 另外寫低嘅狀態。
Novee 話 OpenAI 收到報告三日後,將兩次執行拆成獨立 job 同 checkout,後來再移除 checkout、採用唯讀 sandbox。截至研究公開,呢個設計問題冇 CVE,亦冇證據顯示 Codex sandbox 本身俾人突破;「持續控制」只適用於多次 agent 共用可寫 workspace,而且後一次會載入前一次能夠修改嘅指令檔。OpenAI 而家嘅 Codex GitHub Action 指引亦叫用戶限制觸發者、清理外部輸入、採用最窄 sandbox,同埋將 Codex 放喺 job 最後一步,避免之後嘅步驟接收意外狀態。
而家可以即刻做嘅防護
用緊公開 repository 嘅團隊,應先盤點邊啲 issue、PR 或留言事件會自動啟動 agent,再取消 * 呢類全開觸發設定。讀外部內容嗰一段用獨立 job、獨立 checkout 同唯讀 sandbox,完成後只輸出固定 schema 嘅最少資料;下一段要寫 issue、推 code 或部署,就喺乾淨 runner 重新開始。每個 job 用獨立短命 token,逐項收窄 contents、issues、packages 權限,網上連線亦只開指定 domain。
版本更新同樣要做,但淨係升級仲未夠。共享 workspace、artifact、cache、指令檔同產生出嚟嘅 shell script,全都可能係下一個 agent 嘅輸入。任何接觸過陌生人內容嘅階段,都唔應該直接將狀態交畀持有部署 key 或寫入權限嘅下一段。今次三宗研究帶出嘅實際教訓幾清楚:檢查 agent 最後答咗咩之外,仲要追埋佢寫過咩檔案、留下咩狀態,同下一個程式會點樣讀佢。
參考來源
- iThome — Claude Code、Gemini CLI與Codex共通信任風險,惡意GitHub議題可影響後續代理 — original report
- Novee Security:Black Hat 2026 完整技術報告 — 三個案例嘅測試環境、前置條件、技術差異同披露後改動。
- Google:Gemini CLI 信任模型安全公告 — 確認受影響版本、修補版本、headless folder trust 同工具 allowlist 問題。
- NVD:CVE-2026-54316 — 確認 Claude Code WebFetch 問題嘅版本範圍、前置條件同修補版本。
- Anthropic:Claude Code Action 安全指引 — 核對現行觸發權限、外部輸入、token 同 prompt injection 防護建議。
- OpenAI:Codex GitHub Action 指引 — 核對現行 sandbox、觸發者限制、外部輸入同 job 狀態隔離建議。
本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。







