系统:运行中
← 返回所有攻击
DEFENSE MEDIUM NEW

MemAudit:用取证审计找出被投毒的智能体记忆

多数防御试图在写入前拦截投毒。2026 年 5 月的一篇论文反其道而行:事后审计记忆库,从一次错误行为回溯到导致它的记忆条目。

2026-07-03 // 5 min affects: llm-agents, persistent-memory-agents, rag-memory-systems

这是什么?

持久化的 LLM 智能体会”记事”。它们把摘要、“经验教训”和检索到的事实写入长期记忆库,随后在后续对话中把这些条目重新载入上下文——往往是为不同的用户和任务服务。这个记忆库就是一个攻击面。记忆投毒注入一段伪装成普通记忆的构造内容,一旦被检索出来,就会把智能体引向攻击者的目标:泄露数据、调用错误的工具,或认可一条恶意指令。由于载荷通过正常的写入通道进入、并在很久之后才触发,它既不触及模型权重也不触及代码,还能绕过那些只检查当前提示词的防御。

大多数已发表的防御是预防性的:设法阻止恶意条目被写入或被检索。MemAuditarXiv2026 年 5 月发布)采取相反立场:假定毒已入库,转而为应急响应者提供一种事后审计记忆库的手段。它处在一片快速增长的研究之中——2026 年的一篇长期记忆安全综述梳理了整个生命周期,而 MemoryGraft 等攻击工作则表明,单条被投毒的”经验”就能持久地控制一个智能体。

工作原理

MemAudit 建立在其标题点明的两个思路上:因果归因结构异常检测

因果归因回答的是取证问题:“是哪些记忆导致了这件事?“当智能体产生有害或意外的行为时,审计者需要知道是哪些存储条目把它推到了那一步。该方法不是靠人工逐条翻看成千上万条笔记,而是把影响从观察到的行为回溯到塑造该决策的具体条目——把”智能体出错了”变成”这三条被一起检索出来的条目主导了该行为”。这正是”知道被攻破”与”知道该删什么”之间的区别。

结构异常检测则朝相反方向工作。健康的记忆库具有规律性:条目之间如何关联、如何聚类、如何措辞和引用。被投毒的条目往往在这一背景下显得突兀:一条伪装成事实的指令、一条比同类被检索次数多得多的笔记、一段结构不符合智能体平时自我书写方式的内容。标出这些离群点,能在没有任何单条看起来明显恶意的情况下浮现出待审查的候选。

两种信号合用时可互相印证。异常检测把范围缩小到可疑条目;因果归因再确认其中哪些真正影响了某个坏结果。执行审计无需任何漏洞利用载荷,本文也不复现任何载荷——其目的在于分诊与清理,而非攻击。

为什么重要

记忆投毒之所以是较难对付的智能体威胁之一,正是因为时间上的错位。写入与损害之间相隔数小时、数天乃至多个会话,于是传统的输入过滤和逐轮护栏都察觉不到异常。在多用户部署中,影响范围还会扩大:在你的会话中写入的一条被投毒条目,可能会被检索进别人的会话。已有经过认证的预防性防御——例如 SMSR,这是 2026 年 6 月的一项带有鲁棒性界的提案——但预防从不完美,团队仍然需要回答”我们怀疑记忆被污染了,接下来怎么办?“。取证审计正是这个答案。它还抬高了隐蔽、慢燃式投毒的成本:原本指望条目永存的攻击者,如今必须熬过一次能把结果回溯到成因的审计。

防御

把记忆库当作与安全相关的状态,而非图方便的缓存。具体而言:把每条条目与其来源绑定(谁写的、来自哪个会话与来源),让因果归因有迹可循;对写入与检索保留只追加日志,使事件可被复原;按信任级别与租户隔离记忆,使被投毒的条目无法越界进入另一用户的上下文。定期做审计——结构异常扫描,外加对任何意外行为做归因——而不是依赖一次性过滤。要求来源凭证,并尽可能在一条记忆能授权敏感工具调用之前加入人工核查,使一条被检索的笔记永远不会成为不可逆行为的唯一依据。最后,让删除真正生效:当审计锁定某条条目时,连同由它派生的一切一并清除,然后重新测试。

现状

项目参考说明
MemAudit(事后审计)arXiv 2605.23723,2026 年 5 月因果归因 + 结构异常检测
威胁全景arXiv 2604.16548,2026覆盖整个生命周期的长期记忆安全综述
代表性攻击arXiv 2512.16962(MemoryGraft)通过被投毒的经验检索实现持久控制
经认证的预防arXiv 2606.12703(SMSR),2026 年 6 月带鲁棒性界的互补预防性防御

更深层的转变,是从”能否把毒挡在门外?“走向”毒进来后能否找出它?“。两个问题都重要:预防降低概率,取证审计在预防失效时限定损失。对任何会写入持久记忆的智能体,都应同时为两者做好准备。

Sources