時事筆記

等待中的攻擊:當 AI 的「記憶」變成攻擊面

OWASP 把記憶投毒列入 2026 agentic 風險前十;一個被污染的網頁能讓 agent 數週後才發作。fibon 把「記憶」當產品核心,這一刀正好砍在要害上

📅 2026-05-13 ⏱ 16 分鐘 📖 對應第 3, 4 章 🔬 深入剖析 E

快速摘要:記憶投毒(Memory Poisoning)把一次性的 prompt injection 變成持久的控制通道——惡意內容寫進 agent 的長期記憶,數週後在無關的對話裡發作。OWASP 在 2026 把它列入 agentic 風險前十(ASI06)。fibon 把「跨對話記憶」當產品核心賣點,這個攻擊面正好砍在要害。誠實檢驗 fibon 哪些設計算防線、哪些只是還沒被攻擊驗證。

可略過,如果:你的 AI 工具沒有長期記憶(每次對話乾淨起始),那這個攻擊面對你不存在。

跟 prompt injection 不一樣的地方

大家對 prompt injection 已經不陌生:在輸入裡藏「忽略前面的指令」,騙 LLM 做不該做的事。但它有個天然的限制——stateless:攻擊和傷害發生在同一段對話裡,對話一關就結束了。

記憶投毒把這個限制拿掉。它的狠處在於時間解耦:攻擊者在二月把惡意內容寫進 agent 的長期記憶,四月在一段完全無關的對話裡才觸發。資安研究者 Christian Schneider 的一句話講得很精準:記憶投毒「把暫態的 exploit 變成持久的控制通道」。

更麻煩的是它繞過了「每段對話乾淨起始」這道防禦——因為它利用的正是跨對話的長期狀態。

為什麼這對 agent 特別致命?因為 agent 的記憶層(對話歷史、向量庫、RAG 索引)預設是「接受寫入但不驗證」的——沒有 authentication、沒有 integrity check。你的 agent 摘要一封 email、記住一個「偏好」、把一份文件存進知識庫時,它不會問「這段內容有沒有夾帶要影響我未來行為的指令」。

它已經被做出來了嗎?分三層看

第一層,學術上已證實。 eTAMP 論文(arXiv:2604.02623,2026-04)在 WebArena 學術環境示範了「只靠污染環境觀察(例如讓 agent 瀏覽一個被操控的商品頁),不需要直接存取記憶」就能跨 session、跨網站投毒,攻擊成功率最高 32.5%。更早的 AgentPoison(NeurIPS 2024)在 RAG-based agent 上達到平均 80%+ 成功率、毒入比例低於 0.1%、且無需重訓模型。

eTAMP 在 WebArena 達 32.5%,AgentPoison 在 RAG agent 達 80% 以上
記憶投毒在學術環境的攻擊成功率 資料來源:eTAMP, arXiv:2604.02623;AgentPoison, arXiv:2407.12784 (NeurIPS 2024)

第二層,對真實產品的漏洞披露——這層最有份量。 Cisco 揭露了針對 Claude Code 的 MemoryTrap:攻擊路徑平凡到可怕——你 clone 一個 repo、讓 agent 幫忙、批准一次相依套件安裝、走人。惡意 payload 不留在專案裡,而是觸及 persistent memory 與 global hooks 設定,一次動作就塑造了 agent 跨 session、跨專案、跨 reboot 的未來行為。關鍵佐證:Cisco 揭露後,Anthropic 在 Claude Code v2.1.50 把 user memories 從 system prompt 移除,封掉這條高信任覆寫路徑。這不是理論,是有修復紀錄的真實漏洞。

第三層,理論與趨勢論述。 OWASP 在 2025 年 12 月把「記憶與上下文投毒」正式列入 agentic 應用風險前十(編號 ASI06);「2026 年 5 月記憶體成為攻擊面的轉折點」這個說法則是評論框架——把上半年一連串事件(OWASP 分類、學術論文、官方延伸文)匯流成一個趨勢敘事,而非某個具體的五月攻擊。

對 fibon 的意義

這一刀砍得準,因為 fibon 把「跨對話記憶」當成最核心的產品賣點——第 3 章整章在講「讓 AI 跨越不同對話視窗也牢牢記住你」。賣點越強,攻擊面越大。誠實拆解 fibon 在這條線上的位置:

已經算數的防線——來源歸屬(provenance)。 fibon 的記憶不是把對話一股腦存起來,而是拆成結構化的卡片,而且 ADR-026 引入了「agent_generated」判定——記憶條目會標記它是來自用戶、系統、還是 agent 自己生成的。這正是 Schneider 把 provenance 稱為「防禦基礎」的那個東西:你得先知道一條記憶「從哪來」,事後才有辦法回溯「是哪封 email、哪份文件引入了異常」。深入剖析 E〈主詞歸屬與專案 scoped 認知容器架構〉談的「主詞歸屬與認知容器」,本質就是在記憶層維持「這是誰說的、關於誰」的邊界——不讓不可信來源的內容偽裝成用戶的事實。

部分算數——矛盾偵測與衝突仲裁。 fibon 的記憶系統有 contradiction detector(檢索後掃同 tag、不同內容,注入 <contradiction_alert>)和衝突仲裁佇列。如果投毒內容跟既有記憶矛盾,這層有機會把它頂出來讓用戶看到。但它的設計初衷是處理「事實隨時間變化」(你搬家了、你換工作了),不是專門對抗惡意投毒——能不能擋,要看投毒內容跟既有記憶衝不衝突。

還有一個架構層的緩衝值得講:fibon 處理不可信內容(瀏覽網頁、讀外部文件)走的是隔離的 Worker 與 trusted/untrusted MCP 分層(第 6 章),不可信來源的內容不會直接以高信任身分進入決策層。這降低了「一個惡意網頁直接污染記憶」的路徑——但不等於完全堵死,因為 agent 終究要把讀到的內容摘要、內化成記憶,而摘要這一步本身就是投毒的入口。

記憶投毒最該帶走的一個觀念是:讓 agent 強大的功能(學習與記憶),和讓它脆弱的攻擊面,是同一個東西。 你不能只要記憶的好處、不要它的風險。fibon 賭的是「結構化卡片 + 來源歸屬 + 可稽核」這條路,比「把對話糊成一團黑箱記憶」更能在被攻擊時守得住、查得清。這個賭注對不對,要等真的有人來打才知道——而我寧可先把這句話寫在這裡,也不假裝記憶系統天生安全。

事件來源