關閉選單
README 文件中隱藏的指令可能導致 AI 代理洩漏資料

開發者依賴人工智慧編碼代理來設定專案、安裝依賴項並運行命令,他們遵循的是程式碼倉庫 README 文件中的說明,這些文件為軟體專案提供了設定指南。一項新的研究指出,當攻擊者將惡意指令隱藏在這些文件中時,就會存在安全風險。測試表明,README 檔案中隱藏的指令在高達 85% 的情況下觸發 AI 代理將敏感資料傳送到外部伺服器。
 

攻擊原理

README 檔案通常包含用於安裝相依性、執行腳本或設定應用程式的命令。攻擊者可以插入一個看起來像是正常設定指令的步驟,例如同步檔案或上傳設定資料。當代理程式處理該指令時,它可能會在未檢查該操作是否會洩露敏感資料的情況下執行該命令。文件傳輸命令可能會將設定檔、日誌或其他本機資料傳送到遠端伺服器。
 

在開源程式碼庫中測試攻擊

我們使用名為 ReadSecBench 的基準資料集來衡量攻擊成功的頻率。該資料集包含 500 個 README 文件,這些文件取自用 Java、Python、C、C++ 和 JavaScript 編寫的開源程式碼庫。惡意指令被插入到這些文件中,以模擬攻擊,代理商在安裝過程中遵循了修改後的文件。

在許多情況下,即使隱藏指令僅佔文件的一小部分,攻擊者也能執行該指令。使用不同程式語言編寫的程式碼庫,結果均保持一致。惡意指令在 README 文件中的位置對結果影響甚微。

測試中納入了由幾家主要人工智慧提供者的模型驅動的智能體,包括 Anthropic 的 Claude、OpenAI 的 GPT 模型和 Google 的 Gemini。


措詞和結構會影響結果

直接指令的成功率最高。當惡意指令以指令的形式出現時,攻擊的成功率約為 84%。措詞不夠直接會降低代理人執行該步驟的可能性,以建議形式撰寫的指示有時會導致代理人跳過該步驟。

文檔結構也發揮了作用。人工智慧代理在完成設定任務時,經常會點擊專案文件中的連結。當惡意指令出現在距離主 README 檔案兩個連結的位置時,攻擊在約 91% 的測試中成功。


人工審閱者錯過了隱藏的說明

十五名參與者審閱了README文件,並標記出任何異常之處。每位參與者審閱了三份文件,所有參與者均未識別出惡意指令。在所有回覆中,53.3%的評論未提及任何異常內容,另有40%的評論集中於文件中的語法或措詞問題,只有6.6%的評論暗示某些內容可能不妥,但並未指出具體的攻擊行為。


檢測工具顯示漏洞

我們評估了幾種自動化檢測系統。基於規則的掃描器經常將合法的 README 文件標記為異常,因為文件通常包含命令、文件路徑和程式碼片段,這種行為甚至會導致對良性文件發出警報。基於人工智慧的分類器產生的誤報較少。但惡意指令仍然能夠通過過濾,尤其當它們出現在連結檔案中而不是直接出現在README文件中時。

研究人員寫道:「我們的研究結果表明,智能體應該將外部文檔視為部分可信的輸入,並根據請求操作的敏感性應用相應的驗證,而不是統一執行所有指令。隨著智能體越來越多地融入日常任務,解決這些漏洞對於安全可信的部署至關重要。」


資料來源:https://www.helpnetsecurity.com/2026/03/17/ai-agents-readme-files-data-leak-security-risk/
 
AI Coding Agents 在執行 GitHub 等開源專案的 README 指令時,極易受到「語義注入」攻擊。