2026年6月4日
记忆是新的攻击面
人人都在抢着给 agent 装上长期记忆——这是显而易见的升级。但一项持久的能力,就是一处持久的漏洞。prompt injection 是打一次就重置的一锤子买卖;记忆投毒(memory poisoning)则是把一个谎言写进 agent 的存储,然后在之后的每一次会话、对每一个用户都一路相随,直到有人把它清除。它把记忆存在的初衷——从过去中学习——变成了武器。下面讲清楚这种潜伏的攻击如何运作,以及怎么把它围起来。
给 agent 做的下一个显而易见的升级,就是记忆。一个能记住你偏好、回忆起上周决策、并从做过的任务中学习的 agent,感觉像是终于成了一个真正的助手,而不是每次对话都重置的金鱼。于是人人都在往上装记忆。
可没人写进功能清单的陷阱在这里:一项持久的能力,就是一处持久的漏洞。 记忆是那个会留存的东西——这意味着任何混进去的坏东西也会留存。在 2026 年,这不再是纸上谈兵:OWASP 把 **记忆与上下文投毒(Memory & Context Poisoning,ASI06)**列入了它的智能体应用 Top 10,这是为一个全新的攻击面新增的全新条目。
为什么给记忆投毒比给 prompt 投毒更狠
prompt injection 是一锤子买卖。它劫持单次响应,会话一结束就消失了——agent 醒来时干干净净。烦人,但是被控制住的。
记忆投毒恰恰相反,而这个区别正是关键所在。它不是劫持一次响应,而是 把恶意内容写进 agent 的持久存储,在那里悄无声息地腐蚀之后每一次交互的行为——对每一个用户,在之后的每一次会话里——直到有人手动找出并清除它。你要守的不再是每一场对话。你要守的是一个会记忆的东西,而一次成功的写入,就会污染后面所有的对话。
潜伏的攻击
真正让人不安的特性是时间。研究者演示了一种叫 MemoryGraft 的攻击,表明注入和损害可以在时间上完全解耦:攻击者在二月种下看起来人畜无害的内容,它被悄悄存了起来,直到四月、在某个碰巧相似的后续任务上才浮出水面造成危害——到那时攻击者早已不知去向,受害者也从未明知地碰过任何恶意的东西。正如一篇文章所言,这是 潜伏的攻击。这悄悄地瓦解了大多数监控手段,因为它们假设坏行为和坏后果发生在同一时刻。可这里二者相隔数月,而在任何单一的时间点上,一切看起来都没问题。
它把功能本身变成了武器
最残忍的一点是,这种攻击完全是按记忆的本意来使用它的。记忆存在,是为了让 agent 能从过去的成功中学习、重复有效的做法。投毒种下一段假的"成功经验";之后,面对相似的任务时,agent 取回那个被投毒的样例,并忠实地照搬。研究把这称为利用 agent 的 语义模仿启发式(semantic imitation heuristic)——它倾向于复制取回的成功案例中的模式。你没法把这一点打补丁打掉,除非把学习能力一并移除,而那正是你加记忆的全部理由。而且它很便宜:一款红队工具 AgentPoison,据称能做到 在不到 0.1% 的记忆被投毒的情况下,成功率超过 80%,而且完全不需要重新训练模型。
这是一个你想要的功能的阴暗面
我想把话说清楚:这不是一个该感到难堪的离奇 bug。它是一项人人都正当地想要的能力随身带来的阴影。你为了连续性和学习而加上记忆;新的攻击面就装在同一个盒子里一起送到。agent 通常带有 四种记忆——短期上下文、情景式(episodic)经验存储、语义向量数据库,以及外部工具状态——每一种都是一扇独立的门。不存在一种"持久 agent 记忆",它不同时也意味着"持久 agent 责任风险"。问题不在于要不要接受这笔交易;而在于你是有意把它围起来,还是吃了苦头才发现它。
防御是同一套纪律,用在写入路径上
修复之道不是一个聪明的模型,也不是一段 guardrail 提示——到现在你已经知道提示词不是边界。它是架构,瞄准唯一要紧的那个地方:什么东西被允许成为一段永久记忆。 把通往长期记忆的写入路径当成一道安全边界,而不是一个图方便的入口:
- 绝不让未经校验的原始用户输入或工具输入留存。 在任何东西进入记忆存储之前,按防御者如今的建议,扫描其中隐藏的指令(白底白字、零号字体、用 CSS 藏起来的载荷)以及 prompt injection 的标记。
- 追踪来源溯源(provenance)。 每一段记忆都应该带上它从哪里来、被信任到什么程度,这样一个低信任度的来源就无法悄悄地晋升为一个 agent 会去捍卫的信念。
- 分区与衰减。 隔离记忆,让一个用户的毒无法在另一个用户那里浮现,并让陈旧、未经核实的"经验"过期,而不是永远信任它们。
- 盯住那个破绽。 一个被投毒 agent 的行为特征,就是它会 捍卫一个它本不该学到的信念。
如果这听起来耳熟,那是应该的——这就是把 锚定(grounding) 对准了记忆。模型可以改写被告知的内容,但一个受信任、经过来源溯源核验的来源,必须为什么东西被允许成为真相负责。记忆不过是会留存下来的真相,所以规则很简单:守住什么东西被允许写入它。
要点
记忆是那个让 agent 感觉终于变聪明的功能——也是那个让一个被种下的谎言一路相随数月、在无人留意时浮出水面的功能。在你给 agent 装上记忆之前,先决定什么东西被允许写入它,因为你放进去的,就留在里面了。一颗持久的心智,就是一个持久的靶子。
评论
暂无评论
登录以参与讨论。
做第一个分享想法的人。