資安研究組織ASSET Research Group公開名為GhostCommit的概念驗證攻擊,顯示攻擊者可將提示注入指令藏在PNG圖片中,避開只檢查文字差異的AI程式碼審查工具。惡意內容合併至儲存庫後,具備影像理解能力的程式開發代理可能在後續工作中讀取圖片,依照其中指示開啟環境變數設定檔.env,再將檔案內容逐位元組轉為整數序列寫入程式碼。
攻擊者先新增代理指示文件AGENTS.md,將圖片指定為建置規格的正式來源,並要求代理讀取docs/images/build-spec.png。AGENTS.md本身不直接提及.env,也未寫出將其內容轉為整數序列的完整程序,因此只分析文字差異的審查工具較難辨識風險。
真正的攻擊指令藏在圖片裡,圖片要求代理讀取儲存庫根目錄的.env,將其中每個位元組轉成數字,再以名為_PROV_CANARY的整數序列寫進Python程式。.env常用來保存API金鑰、資料庫連線資訊及雲端存取憑證,一旦整份內容被轉成數字寫入程式碼,攻擊者便可從後續公開的提交紀錄取得資料,將數字還原為原始.env內容。
研究團隊表示,若把相同指令直接寫在AGENTS.md中,Cursor Bugbot與CodeRabbit都會判定為高風險,而改藏進圖片後,兩項工具均未提出警告。CodeRabbit的預設設定還會略過PNG圖片,因此無法檢查其中的文字。
研究團隊還在攻擊範例中加入驗證程式及虛構的事故紀錄,讓圖片中的要求看起來像既有的建置規範。由於這些周邊檔案本身沒有直接出現惡意指令,可用來通過審查工具對規則與程式碼的一致性檢查。
研究團隊在受控環境測試Cursor、Antigravity、Codex CLI及Claude Code等工具,結果顯示,多數工具與模型組合會依照圖片指令,將完整.env內容編碼為整數序列寫入程式碼,而Claude Code搭配不同Claude模型時則拒絕執行。相同模型在不同工具中出現相反結果,顯示執行結果不只取決於AI模型,也受到代理工具及其安全防護設計影響。
被寫入程式碼的.env內容以數字序列呈現,也可能避開只比對特定字串格式的機密資料掃描工具。研究團隊已在GitHub公開攻擊範例與解碼工具。
Comments (0)