RAG 投毒鑑識
偵測與分析針對檢索增強生成系統投毒攻擊的鑑識調查技術。
概觀
檢索增強生成(RAG)系統將資訊檢索與語言模型生成結合:當使用者提問時,系統從知識庫檢索相關文件,將其注入 LLM 的上下文,並產生基於被檢索資訊的回應。RAG 投毒攻擊針對此檢索管線,透過注入、修改或操縱知識庫中的文件,使惡意內容被檢索並影響模型輸出。
RAG 投毒特別有效,因為它利用檢索系統與生成模型之間的信任關係。LLM 將檢索文件視為權威上下文,使其易於遵循注入指令或產生被投毒文件中嵌入的錯誤資訊。與直接提示詞注入不同,RAG 投毒可影響每個觸發被投毒內容檢索的使用者,使其成為一對多攻擊。
RAG 投毒的鑑識調查需要分析三層:文件語料(什麼被投毒)、檢索機制(被投毒內容如何被選中),以及生成輸出(模型用被投毒上下文做了什麼)。本文涵蓋每層的鑑識技術。
RAG 投毒攻擊分類
直接文件注入
攻擊者將新文件加入知識庫,含惡意內容。文件被製作使其嵌入接近常見查詢嵌入,確保被頻繁檢索。
既有文件修改
攻擊者修改知識庫中的既有文件,附加惡意指令或微妙改變事實內容。這更難偵測,因為文件元資料(來源 URL、建立日期)可能未變。
嵌入空間操縱
攻擊者製作對人類審閱者看似無害但嵌入對抗性地為特定目標查詢最大化檢索的文件。
元資料投毒
部分 RAG 系統使用元資料過濾器(日期範圍、來源類別、存取權限)限縮檢索範圍。投毒元資料可使文件在不應可用的上下文中被檢索。
| 攻擊類型 | 偵測難度 | 衝擊範圍 | 持久性 |
|---|---|---|---|
| 直接注入 | 中 | 匹配被投毒嵌入的查詢 | 直到文件被移除 |
| 文件修改 | 高 | 檢索被修改文件的所有查詢 | 直到修改被偵測 |
| 嵌入操縱 | 極高 | 針對性查詢 | 直到文件被移除 |
| 元資料投毒 | 中 | 使用受影響元資料過濾器的查詢 | 直到元資料被修正 |
文件語料的鑑識分析
文件完整性驗證
第一步是對照已知良好基準驗證文件語料完整性。
DocumentRecord 含 doc_id、content、embedding、metadata、source、timestamp、content_hash。
DocumentCorpusVerifier:
- 維護文件雜湊清單(SHA-256 of content)
- 比對當前語料與參考
- 回傳:遺失文件、新增文件、被修改文件(雜湊不符)、被移動文件(內容相同但 doc_id 變)
攝取管線追蹤
DocumentProvenance:
- 查詢文件的攝取歷史
- 追蹤來源:URL、上傳者、時間戳、轉換管線
- 識別最近攝取的文件或來自可疑來源的文件
統計異常偵測
- 嵌入離群點:偏離主體嵌入分佈的文件
- 內容長度異常:異常短或異常長的文件
- 元資料異常:不尋常的來源格式、無效日期、可疑標籤
- 詞彙統計:過度重複、異常字元組成、Unicode 異常
檢索機制的鑑識分析
檢索日誌分析
若檢索系統記錄查詢與被檢索文件,這是珍貴的鑑識資料:
- 對特定查詢,檢視被檢索的 top-K 文件
- 追蹤可疑文件的檢索頻率
- 識別相似度分數異常模式(如被投毒文件始終獲得極高分)
嵌入比對
- 計算查詢嵌入與疑似被投毒文件嵌入的距離
- 正常文件通常需要精確查詢才被檢索;被投毒文件可能對廣泛查詢都保持高相似度
- 此為嵌入操縱攻擊的簽章
重現測試
- 以歷史查詢重新執行檢索
- 比較當前與歷史檢索結果
- 找出檢索結果的變化,特別是新出現在 top-K 中的文件
生成輸出的鑑識分析
受污染生成的識別
PoisonedGenerationDetector:
- 分析 LLM 的上下文(含被檢索的文件)與其輸出
- 尋找輸出緊密對應到可疑文件內容的情況
- 尋找指令遵循的跡象:輸出結構匹配可能的被注入指令
- 行為偏離:模型對典型問題的回應異常
影響評估
- 識別可能已查詢被投毒內容的使用者
- 估算被汙染回應的數量
- 追蹤這些回應的下游影響(使用者動作、發布的內容)
事件回應
階段 1:確認投毒
- 使用上述方法確認文件語料、檢索或輸出中的投毒
- 保留所有鑑識成品
階段 2:圍堵
- 從 RAG 索引移除疑似被投毒文件
- 若廣泛,考慮暫停整個 RAG 功能直到清理
- 增加日誌詳細度供即時監控
階段 3:根本原因
- 追蹤被投毒文件的攝取路徑
- 識別如何進入系統(網頁爬取、手動上傳、API、使用者貢獻)
- 評估上游來源是否被妥協
階段 4:修補
- 實作攝取過濾以防止類似投毒
- 加入內容審核至 RAG 攝取管線
- 啟用文件簽章/雜湊驗證
- 限制可修改 RAG 索引的身分與程序
- 對外部來源文件實作沙箱化處理
預防
- 文件驗證:攝取時檢查內容、來源、簽章
- 嵌入分佈監控:偵測離群嵌入
- 檢索多樣性:使用多個嵌入模型的集合以減輕單模型操縱
- 結果審核:對敏感 RAG 應用,在 LLM 看到檢索結果前執行內容審核
- 存取控制:區分可讀取 vs 可修改 RAG 的身分
參考資料
- Zhong, Z., et al. (2023). Poisoning Retrieval Corpora by Injecting Adversarial Passages. EMNLP.
- OWASP. (2025). OWASP Top 10 for LLM Applications. LLM08: Vector and Embedding Weaknesses. https://owasp.org/www-project-top-10-for-large-language-model-applications/
- Cohan, A., & Greshake, K. (2023). Indirect Prompt Injection in Production RAG Systems. https://arxiv.org/abs/2302.12173
- MITRE ATLAS. AML.T0059 — Poison Training or External Data. https://atlas.mitre.org/