为被投毒智能体永不遗忘的 RAG 记忆提供可证明的防御
2026 年 6 月的一篇论文对多会话记忆投毒进行了建模——一条精心构造的记忆即可悄然污染所有未来用户——并提出首个带有可证明鲁棒性界限、而非启发式过滤器的防御方案。
这是什么?
2026 年 6 月由独立研究者 Tarun Sharma 提交至 arXiv 的一篇预印本,针对大多数构建持久化 AI 智能体的团队尚未度量的一处防御缺口:当智能体保留一份跨用户会话存续的记忆库时,能够向其中写入若干条精心构造条目的攻击者,便可悄悄地为每一位提问内容与之匹配的未来用户改变智能体的行为。作者将这一威胁命名为多会话记忆投毒(Multi-Session Memory Poisoning,MSMP),并提出 Signed Memory with Smoothed Retrieval(SMSR,签名记忆与平滑检索),称其为首个带有可证明鲁棒性界限、而非尽力而为式过滤器的防御方案。
这类攻击本身并不新鲜。仅通过查询即可完成的记忆注入工作 MINJA(2025 年 3 月)与 AgentPoison(2024 年)已作过演示。新的地方在于:一个有数学支撑的防御方案,在这些攻击成功率远超 90% 的背景下发表。
工作原理
检索增强生成(RAG)智能体会对每个问题做嵌入,从记忆库中取出最相似的条目,并作为上下文粘贴进提示词。在持久化智能体中,记忆库仅可追加,且智能体在大多数交互之后都会向其写入。陷阱正在于此:赋予智能体有用长期上下文的写入路径,同时也是攻击者植入指令所走的路径。正如论文所言,在智能体记忆系统中,数据即指令——被检索到的记忆会像上下文示例一样塑造下一条回答,因此“把数据与命令分开”这一惯常建议在此并不适用。
攻击者无需数据库访问权限。MINJA 一脉的工作表明,通过普通查询即可诱导智能体自行写入被投毒的推理轨迹,随后被检索给后续用户。数万条中的一条坏条目就可能足够。多租户部署使问题更糟:一个人的交互可能污染提供给所有其他人的回答。
SMSR 以两层作答。第一层在写入时为每条合法记忆附上 HMAC 来源签名,因此任何经由错误配置或被窃备份插入的条目——凡未签名者——在检索时都会被直接忽略。第二层用于防范能够写入已签名条目的已认证内部人员:智能体不再总是读取最匹配项,而是多取一部分,再多次随机抽取子集,并对各次抽取按判定结果取多数。由于攻击者无法保证其条目出现在每一次随机抽样中,其影响被界定住——而论文是对该界限作形式化推导,而非仅作断言。
写入路径:记忆 --> [HMAC 来源标签] --> 存储
查询路径:超量检索 --> 随机消融 x N --> 按判定取多数 --> 回答
(未签名条目被丢弃;攻击者影响被界定)
作者还证明了一个不可能性结果:任何仅在检索时起作用、没有来源信息的过滤器,都无法针对自适应攻击者给出证明。换言之,为记忆签名并非可有可无的装饰——它正是使“保证”成为可能的部分。他们还记录了一种“一致少数效应”:朴素的基于字符串的多数投票会被欺骗,因为攻击者那条完全相同的回答,比真正多样的诚实回答显得更“一致”;改用基于判定结果的投票即可消除这一效应。
为什么重要
被投毒的记忆不会随上下文窗口而失效——它可以留在存储中,并在无限多次未来会话里反复触发。这正是 OWASP 将向量与嵌入弱点列为其 2025 年 LLM 应用十大风险中的 LLM08 的原因。论文的度量凸显了利害:简单的启发式过滤器(关键词黑名单、熵与异常检测)被流畅的企业风格文本完全绕过,而在任何防御之前,未签名注入的成功率高达 93–100%。启用 SMSR 后,未签名注入降至 0%,已认证攻击者的成功率从同样的 93–100% 区间在生产规模下降至约 8%,端到端仅凭查询的攻击从 65.3% 降至 5.3%,而干净查询上的可用性维持在约 85%——代价真实但有限。结果在不同模型家族之间均成立。
与所有单篇预印本一样,请将这些具体数字视为作者尚未经过同行评审的发现,并在您自己的环境中加以验证。
防御
其可操作的启示不止适用于这一套系统。
- 在写入时为记忆签名。 为每条合法写入的条目附上来源标签(HMAC 或等价机制),并在检索时丢弃一切未签名内容。这可关闭未认证的写入路径。
- 不要单靠启发式过滤器。 关键词、熵与异常过滤器被自然语气的文本完全规避;只将其作为纵深防御的一环,切勿当作保证。
- 针对内部风险加入随机检索。 超量检索并抽样,再跨多次抽取聚合,使任何单一写入者都无法主导每一份上下文。
- 按判定聚合,而非按字符串。 对回答文本的原始多数投票会被一致的攻击者操纵;请改为比较回答的含义。
- 将记忆视为安全边界。 记录写入日志,尽可能按租户隔离记忆,并牢记在智能体中被检索的数据其行为等同于指令。
状态
| 项目 | 参考 | 日期 |
|---|---|---|
| SMSR 可证明防御 | arXiv:2606.12703 | 2026-06 |
| 仅凭查询的记忆注入(MINJA) | arXiv:2503.03704 | 2025-03 |
| 记忆/知识库投毒(AgentPoison) | arXiv:2407.12784 | 2024 |
| 框架参考 | OWASP LLM08(2025 年 LLM 应用十大风险) | 2025 |
结论:如果你的智能体拥有记忆,就应假定其记忆可能被投毒——并优先选择能够证明“被界定的攻击者仍能造成多大破坏”的防御,而非仅仅寄希望于将其抓住的防御。