Memory poisoning 跟提示注入,聽起來都是「餵給 agent 錯的東西讓它做壞事」,實質上差在哪?
差在攻擊發生的時間點跟持續性。提示注入是一次性的,攻擊內容跟攻擊效果幾乎同時發生在同一次互動裡——當下擋下來,攻擊就結束了。Memory poisoning 分成兩個獨立的時間點:植入的那一刻,跟觸發的那一刻,中間可能相隔幾天甚至幾週,而且觸發條件可能跟植入時的內容表面上完全無關。這代表就算你在每次互動當下都做了提示注入防護,agent 依然可能因為幾週前一次「看起來無害」的互動,在未來某個時間點做出被污染的判斷——防護的時間窗口完全不同。
為什麼 OWASP 要特別把 memory poisoning 獨立列為 ASI06,而不是直接歸類在既有的提示注入(LLM01)底下?
因為兩者的防禦邏輯完全不同,合併討論反而會讓真正的防禦措施被稀釋。提示注入的防禦重點放在「輸入層」:過濾、驗證每一次進入 agent 的內容。但 memory poisoning 的核心問題出在「儲存層」跟「跨會話存取層」——就算單次輸入完全過濾乾淨,只要 agent 的記憶庫本身缺乏寫入權限控管、來源標記或定期清理機制,污染依然可以透過合法看似正常的互動慢慢累積進去。獨立分類的意義在於,提醒開發者這是一個需要在記憶架構層級設計防禦的問題,不是靠加強輸入過濾就能解決的。
AgentPoison 或 MINJA 這類研究裡提到的高攻擊成功率,具體是在什麼條件下測出來的?這些數字能直接套用到我用的 DeFAI agent 上嗎?
這些數字來自受控的學術實驗環境:研究者針對特定的 agent 架構跟特定的記憶儲存機制(例如某種向量資料庫檢索設計),設計特定的污染樣本,再測量在多少污染比例下,能讓 agent 在特定觸發條件下做出特定的錯誤行為。AgentPoison 測到低於 0.1% 污染率就能達到 80% 以上成功率,MINJA 則測到 76.8% 到 98% 以上,兩者都是在論文設定的特定場景下量出來的上限值,不是所有 agent 架構的普遍數字。實務上不能直接假設你用的 DeFAI agent 有同樣的脆弱程度——但這些數字說明的是「這個攻擊面在特定條件下可以非常有效」,而不是「這個攻擊面在所有系統上都同樣容易」,兩者是不同的結論。
如果我正在用一個具備記憶功能的 DeFAI agent,現在實際上能做什麼來降低風險,而不是只能被動等業界推出防禦標準?
幾件實務上可以自己做的事:第一,確認你的 agent 是否有選項可以查看或清空它記住的內容,定期檢視有沒有不熟悉、你自己沒輸入過的內容出現在裡面;第二,對於涉及資金操作的關鍵指令,盡量要求 agent 展示它做決策時參考的原始資料來源,而不是只接受一句摘要式結論;第三,如果 agent 支援多個獨立的記憶空間或工作階段隔離,優先使用隔離模式處理涉及資金的任務,不要讓日常閒聊跟資金操作共用同一個記憶庫;第四,對於來源不明的外部文件或連結,在讓 agent 讀取之前保持跟提示注入同等的警覺——這類內容正是 memory poisoning 最常見的植入管道。
越來越多 DeFAI agent 為了跨對話、跨任務保留上下文,開始具備某種形式的長期記憶——記住你的偏好、記住過去執行過的策略、記住之前查過的資料。這個功能讓 agent 更好用,但也打開了一個過去單次對話型 AI 不太需要擔心的攻擊面。OWASP 在其 2026 年 Agentic 應用程式十大風險(Top 10 for Agentic Applications)裡,把這個風險正式列為 ASI06:記憶與情境污染。
提示注入(prompt injection)攻擊通常發生在單次互動裡:惡意指令藏在使用者輸入或 agent 讀取的外部內容中,當下就試圖劫持 agent 的行為。Memory poisoning 的攻擊模式完全不同,關鍵在於「時間解耦」(temporal decoupling):攻擊者這次互動只是把一段惡意內容植入 agent 的記憶庫、共享向量資料庫或對話摘要裡,實際的攻擊效果可能要等到幾天甚至幾週後,由一個完全不相關的觸發事件才會被引爆。這讓 memory poisoning 比提示注入更難被即時偵測——被污染的那一刻,系統可能完全沒有異常表現。
研究文獻中記錄的攻擊手法,核心邏輯是讓 agent 在正常運作過程中,把攻擊者精心設計的內容「自願」寫進自己的長期記憶——可能透過一份看起來正常的文件、一次看似無害的工具回傳結果,或是一段被污染的對話摘要。之後,當某個特定條件被觸發(例如使用者問到某個關鍵字、或 agent 執行某類特定任務時),這段被植入的記憶會被取出並影響 agent 接下來的判斷或行動,而使用者跟 agent 本身,在那個當下都可能完全沒有意識到問題出在幾天前的一次互動。學界的 AgentPoison 研究顯示,在低於 0.1% 記憶被污染的比例下,攻擊成功率可以達到 80% 以上;另一項 MINJA 研究則記錄到 76.8% 到超過 98% 的攻擊成功率,視攻擊場景而定。
資安研究者 Johann Rehberger 在 2024 年 9 月公開示範過一個真實案例(俗稱 SpAIware),針對 ChatGPT 的記憶功能:透過一份被植入惡意指令的 Google Drive 文件,誘導 ChatGPT 把攻擊者的指令寫進自己的長期記憶,之後在完全不同的對話中,這段被植入的記憶被喚起並影響輸出。這個示範本身不是針對 DeFAI agent,但它證明了「記憶污染」不是純理論構想——任何具備跨對話持久記憶的 AI 系統,原則上都可能面臨同樣的問題,DeFAI agent 若採用類似的記憶架構,同樣暴露在這個風險之下。
如果你使用的 DeFAI agent 具備跨對話記住偏好、記住過去策略決策的能力,這代表你的 agent 有一個持續累積、可能被污染的知識庫,而污染來源不一定是你自己的輸入——可能是 agent 讀取的外部文件、其他使用者共享的資料,或是任何進入 agent 記憶管道的內容。目前業界討論的防禦方向包括:跨 agent 隔離(避免多個 agent 共享同一個容易被污染的記憶庫)、對寫入記憶的內容做信任評分與來源標記、預設記憶為短期而非長期(除非明確需要)、以及要求 agent 對關鍵操作展示原始依據而非只給摘要式結論。這些防禦措施多數還在發展階段,尚未成為 DeFAI 產品的標準配置。