向量資料庫鑑識
偵測與調查向量資料庫投毒、未授權修改與資料完整性違規的鑑識分析技術。
概觀
向量資料庫是檢索增強生成(RAG)系統、語意搜尋引擎與由 AI 驅動的推薦系統的檢索骨幹。它們儲存高維嵌入向量以及元資料與原始內容,啟用基於相似度的檢索,餵入下游 AI 模型。當攻擊者投毒向量資料庫時,每個檢索被投毒向量的查詢都產生被妥協結果,使此成為高槓桿攻擊面。
向量資料庫鑑識是偵測向量資料庫已被竄改、判定什麼被變更、識別如何及何時變更,以及評估對下游系統之衝擊的流程。此為相對新的鑑識學科,因為向量資料庫本身是大多數生產架構的最近加入,且傳統資料庫鑑識技術(交易日誌分析、列層級稽核)無法直接套用到高維向量空間。
核心鑑識挑戰是:向量不透明、被投毒向量可能與合法向量統計相似,而大多向量資料庫與關係資料庫相比具有限的內建稽核。調查人員必須結合向量空間分析、元資料鑑識、攝取管線追蹤與存取日誌關聯以建立投毒事件的完整圖像。
本文涵蓋識別被投毒向量的偵測技術、向量資料庫狀態與歷史的鑑識分析、管線追蹤以識別投毒來源,以及持續偵測的監控系統。
偵測被投毒向量
嵌入空間的統計異常偵測
被投毒向量常有與合法向量不同的統計特性,即便攻擊者試圖使其融入。最常見異常:
- 異常接近高流量查詢區域的向量(以最大化檢索)
- 向量大小或分佈特性與合法族群不同
- 向量的元資料與其嵌入內容不一致
VectorRecord 含 vector_id、vector、metadata、content、created_at、updated_at、source。
AnomalyResult 含 vector_id、anomaly_type、score、description、evidence。
VectorAnomalyDetector:
detect_magnitude_outliers(vectors):計算向量範數;超過 z-score 閾值視為異常detect_cluster_outliers(vectors):對主體執行聚類,識別離群向量detect_high_recall_vectors(vectors, query_samples):對一組樣本查詢執行檢索;頻繁出現在 top-K 的向量可能是投毒目標detect_embedding_metadata_mismatch(vectors, embedder):對每個向量,重新嵌入其文字內容並與儲存嵌入比較;顯著差異指出嵌入被替換
適應性攻擊對策
精密攻擊者可能將其向量設計為通過統計測試(匹配合法向量的大小分佈、位於現有聚類中、使用目標查詢分佈的鏡射以避免離群)。對策:使用多個偵測方法的集合;監控新增向量的行為影響;執行週期性完整重建(從原始內容重新嵌入並比對儲存嵌入)。
從資料庫日誌重建時間線
存取日誌分析
若向量資料庫啟用操作日誌,可重建事件時間線:
- INSERT 操作:誰、何時、以什麼身分注入了哪些向量
- UPDATE 操作:哪些向量被修改(特別關注內容雜湊變化)
- DELETE 操作:是否有合法向量被惡意移除(以使被投毒向量更容易被檢索)
控制平面事件
- 集合建立/刪除
- 索引參數變更
- 身分與存取管理變更
查詢模式分析
- 被投毒向量的檢索頻率何時開始上升?
- 哪些使用者/API 金鑰觸發了包含被投毒向量的檢索?
- 是否有查詢模式顯示攻擊者在測試投毒有效性?
完整性驗證
與已知良好基準的比對
VectorCorpusVerifier:從基準快照載入預期向量 ID 與雜湊;比對當前向量庫(缺失、新增、修改向量);對新增/修改向量,檢查其來源、時間戳、攝取身分。
Merkle 樹指紋
對整個集合建立 Merkle 樹:葉節點為每個向量的 (vector_id, content_hash, metadata_hash) 雜湊;根雜湊作為整個集合的單一指紋;定期發布根雜湊至外部可信日誌;任何投毒都會改變根雜湊。
嵌入再現性測試
對取樣向量,使用原始嵌入模型重新嵌入原始內容,比對新嵌入與儲存嵌入的餘弦相似度;若顯著低於 1.0,指出嵌入被替換(即使內容相同)。
攝取管線鑑識
追蹤來源
每個向量應可追溯到:
- 原始文件來源(URL、檔案路徑、API 回應)
- 攝取時間戳與執行者
- 套用的轉換管線(OCR、chunking、清理)
- 負責的服務主體/身分
攝取管線中的漏洞
- 未驗證的內容來源:從公開網頁或不可信 API 攝取
- 不足的內容審核:攝取前未過濾惡意內容
- 憑證濫用:有向量庫寫入權限的金鑰被洩漏
- 供應鏈:攝取管線中依賴的函式庫被妥協
事件回應
階段 1:圍堵
- 停用被影響的向量集合或將其切換到唯讀
- 快照整個集合供鑑識
- 識別可能受影響的下游 RAG 查詢
階段 2:清理
- 若可能,從基準還原;否則識別並移除被投毒向量
- 重新嵌入來源內容以重建乾淨集合
- 實作攝取過濾以防止重新投毒
階段 3:通知與審查
- 通知依賴此 RAG 系統的下游服務
- 對關鍵應用,審視產生的內容是否需要修正或召回
- 更新偵測規則與監控
監控與預防
持續監控
- 攝取告警:高頻攝取、來自不尋常身分的攝取、偏離模式的嵌入分佈
- 查詢監控:特定向量的異常檢索頻率
- 存取稽核:定期審視誰有寫入權限
強化
- 最小權限:區分攝取、讀取、管理身分
- 內容審核:攝取前執行安全分類器
- 嵌入驗證:使用替代嵌入模型作為合理性檢查
- 不可變快照:對關鍵集合定期建立不可變快照
特定向量資料庫的考量
- Pinecone:使用操作日誌與 metadata filtering;無內建雜湊驗證,需外部實作
- Weaviate:具原生 cross-references 與備份/還原;支援模組化認證
- Chroma:輕量,適合本地開發;生產環境需額外稽核
- Qdrant:支援 payload indexing 與 vector snapshots
- Milvus:支援時間旅行(time travel)查詢,對鑑識有幫助
參考資料
- 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/
- Zhong, Z., et al. (2023). Poisoning Retrieval Corpora by Injecting Adversarial Passages. EMNLP.
- Pinecone, Weaviate, Chroma, Qdrant, Milvus 官方文件。
- MITRE ATLAS. AML.T0059 — Poison Training or External Data. https://atlas.mitre.org/