RAG 系統中的文件投毒:攻擊者如何污染 AI 的資料來源
我將三份偽造文件注入本地知識庫,成功誘導大型語言模型報告錯誤的財務數據,證明了知識庫投毒是目前生產環境中 RAG 系統最被低估且嚴重的安全威脅。
背景
本文探討了檢索增強生成(RAG)系統中一種被低估的安全威脅:知識庫投毒。作者透過在本地環境注入三份精心設計的虛假文件,成功誘導大型語言模型在回答財務問題時,捨棄正確的原始數據,轉而採信具有權威口吻的錯誤資訊。這項實驗證明,攻擊者無需破解模型或竄改用戶查詢,僅需透過「詞彙工程」優化文件的向量相似度,即可在不觸發傳統安全防護的情況下操縱 AI 的輸出結果。
社群觀點
Hacker News 的討論首先聚焦於這類攻擊的門檻與定義。部分評論者認為,此攻擊的前提是具備知識庫的寫入權限,若攻擊者已能進入內部網路或取得修改權限,則系統本身在權限控管上就已存在根本性缺陷,這類威脅更像是產品設計不當而非純粹的 AI 安全漏洞。然而,反對意見指出,現代企業的 RAG 系統通常會自動抓取 Confluence、Slack 或共享硬碟等來源,在這些環境中,成百上千的員工都擁有實質上的「寫入權」卻不自知,這使得攻擊表面積遠比想像中廣大。此外,當系統涉及第三方數據或公開網路資訊的抓取時,攻擊者甚至不需要內部權限就能實施投毒。
社群中一個極具啟發性的觀點是將這種攻擊比作「向量空間的 SEO」。就像傳統搜尋引擎優化是為了提升網頁排名,文件投毒則是針對嵌入模型的餘弦相似度進行優化。討論者擔憂,隨著 AI 代理人的普及,即便是無惡意的員工也可能因為運行了產生錯誤資訊的 AI 工具,導致知識庫在無意間被「有機降級」。這種從惡意攻擊延伸到組織內部知識腐敗的視角,獲得了廣泛認同。大家普遍認為,RAG 系統不應盲目信任檢索到的內容,而應將其視為「未經審核的輸入」。
針對防禦機制,討論呈現出兩種主要路線。一派主張強化元數據與來源追蹤,認為每一段被檢索的資訊都應標註作者與來源系統,並在提示詞中賦予不同信任等級,例如官方財務系統的權限應高於一般用戶生成的內容。另一派則從架構層面提出質疑,認為單純提供參考連結並不足夠,因為用戶往往會忽略警告。更徹底的作法是在提示詞架構中明確劃分「系統指令」與「外部檢索內容」的邊界,並使用明確的標記告知模型哪些資訊是不可信的。這種將 RAG 投毒視為「信任邊界問題」而非單純「檢索問題」的看法,為系統開發者提供了更具實踐價值的防禦思路。
延伸閱讀
- PoisonedRAG (Zou et al., USENIX Security 2025):本文理論基礎的學術論文,展示了在大規模知識庫中實施投毒的數學模型。
- MCP Attack Labs (GitHub):作者提供的實驗程式碼,可在本地環境重現 RAG 投毒過程。