快速摘要
RAG 系統讓 AI 可以引用企業內部知識來回答問題,但這也引入了新的安全風險——知識庫可能被投毒、存取控制可能被繞過、敏感文件可能透過 AI 被未授權存取。
5 個攻擊向量
| 攻擊向量 | 說明 | 嚴重度 |
|---|---|---|
| 知識庫投毒 | 在知識庫中注入錯誤或惡意內容 | 高 |
| 存取控制繞過 | 透過 AI 存取使用者無權檢視的文件 | 高 |
| Prompt Injection via 文件 | 在文件中嵌入惡意指令 | 高 |
| 資料外洩 | AI 在回答中洩漏敏感文件內容 | 中 |
| 推理攻擊 | 透過多次查詢推斷敏感資訊 | 中 |
知識庫投毒
如果攻擊者可以修改知識庫中的文件,他們可以:
- 注入錯誤的技術指導,導致使用者做出錯誤決策
- 嵌入 Prompt Injection 指令,讓 AI 在引用文件時被劫持
- 插入看似正確但包含後門的程式碼範例
防禦方式:版本控制所有知識庫文件、限制編輯權限、定期審查內容變更。
存取控制繞過
這是 RAG 系統最常見的安全問題。當 AI 可以搜尋整個知識庫時,它可能回傳使用者沒有權限檢視的文件內容。
例如:一般員工問 AI「公司明年的薪資調整計畫是什麼?」,如果 RAG 系統沒有做好存取控制,AI 可能引用人資部門的內部文件來回答。
防禦方式:在 RAG 的檢索層實作存取控制,確保每次搜尋都帶入使用者的權限資訊,只回傳使用者有權存取的文件。
資料外洩
即使有存取控制,AI 的回答本身也可能洩漏敏感資訊:
- AI 在回答中引用了敏感文件的具體數字
- 使用者透過一系列精心設計的問題,逐步拼湊出完整的機密資訊
- AI 的回答被記錄在公開的聊天記錄中
防禦框架
- 文件級存取控制:每個文件標記存取權限,檢索時過濾
- 內容過濾:AI 回答前,過濾掉敏感資訊
- 輸入驗證:偵測和阻擋知識庫中的 Prompt Injection
- 稽核日誌:記錄所有 RAG 查詢和引用的文件
- 資料分級:根據敏感度分級管理知識庫內容
常見問題
RAG 比直接把資料給 ChatGPT 安全嗎?
是的,因為 RAG 系統可以部署在企業內部,資料不需要送到外部 AI 服務。但 RAG 本身也有安全風險,需要額外的安全設計。
開源的 RAG 框架安全嗎?
LangChain、LlamaIndex 等開源框架本身不提供安全功能,需要自行實作存取控制和內容過濾。使用開源框架時,安全是你的責任。
如何防止 AI 洩漏引用文件的敏感內容?
在 RAG 的回答生成步驟中加入內容過濾,使用正則表達式或另一個 AI 檢查回答中是否包含敏感資訊(如身分證號、信用卡號)。