AI Agent Memory Poisoning 需要全生命周期防御
Tech
AI
AI Agents
AI Security
Memory Poisoning

AI Agent Memory Poisoning 需要全生命周期防御

一种有研究支持的架构,用于防止被污染的 agent memory 跨会话持续存在并影响工具使用。

Uygar DuzgunUUygar Duzgun
Aug 2, 2026
更新於 2026年8月15日
17 min read

AI agent memory poisoning 会将一次不受信任的输入转化为持久状态。一旦 agent 将攻击者控制的内容写入持久化 memory,该内容可能在数天或数个会话后再次出现,并被当作看似可信的上下文。应防御整个生命周期:拦截每次写入,附加来源和过期时间,按用户和 agent 隔离记录,重新筛查检索结果,将操作授权置于模型之外,并保留支持回滚的影响日志。

Prompt — Copy & Paste
受众:设计或运营带有 memory 且能够使用工具的 AI agent 的高级实践者。 以下研究结果描述的是特定实验系统。生产控制措施是实际层面的解读,并不表示被引用的研究人员认可某一种通用架构。

目录

什么是 AI agent memory poisoning?

AI agent memory poisoning 是指插入或修改持久化记录,使后续检索改变 agent 的回答、决策或工具使用。影响出现时,原始输入可能早已消失。这种时间间隔使攻击比当前对话中明显的 prompt injection 更难被发现和重建。

Memory 可以存在于多个位置:

存储提取事实和偏好的向量数据库
写入关系型存储的摘要
可编辑的文件,例如笔记或指令文档
工具状态、日历、任务队列或客户记录
多个 agent 共同使用的共享 memory

存储技术并不是决定性问题。持久化加上后续影响构成了安全边界。

这不同于三个相邻风险。Prompt injection 操纵当前模型上下文,尽管它也可能成为投递被污染 memory 的渠道。Training-data poisoning 通过训练语料改变模型行为。Retrieval poisoning 针对为某个请求选中的内容。Agent-memory poisoning 则持久化一条记录,使系统之后可能将其视为用户历史、偏好或运行状态的一部分。

实践中有三种攻击模式值得关注:

模式存储形式激活方式简单过滤为何难以应对
------------
直接破坏一条记录包含有害指令或虚假事实之后再次检索该记录内容可能伪装成偏好、摘要或任务笔记
组合式破坏多条记录单独看起来都可以接受联合检索将它们组合成有害含义每次写入都能通过,因为风险只在组合后出现
休眠式破坏记录包含依赖触发条件的指令后续事件、短语或工具状态将其激活写入记录时触发条件并不存在

Microsoft 当前的指导也从防御角度描述了同一结构性问题:持久化 memory 存储敏感数据,同时还会影响模型行为和工具选择。因此,它既应作为数据系统治理,也应作为控制平面治理。Microsoft Learn

近期三项研究测量了什么

2026 年 7 月发表的三篇预印本研究了这一威胁的不同部分。综合来看,它们说明了为什么单一 memory 过滤器不能作为可靠的发布标准。

GhostWriter 测试了现在注入、之后激活

When Agents Remember Too Much 提出了 GhostWriter,一种针对使用工具的个人 agent 的两阶段攻击。攻击者首先将隐藏内容放入不受信任的来源。Agent 处理该来源并写入受攻击者影响的 memory。之后的任务检索该记录并激活其影响。

在论文测试的 agent 和模型中,GhostWriter 的平均注入率约为 98%,平均激活率约为 60%。作者还测试了 AM-Sentry,它将更严格的 memory 保存策略与检索筛查结合起来。论文在其定制的模拟工作周中同时评估攻击成功率和任务效用;防御结果因模型和配置而异。

边界条件很重要。该研究覆盖五个 agent、四个模型系列以及电子邮件或日历工作流。其效用测试是定制的,攻击者不会自适应,结果也没有估计已部署 agent 遭受攻击的频率。

MemPoison 区分了直接、组合式和休眠式失败

MemPoison 汇集了 1,227 个经过人工验证的案例,涵盖四种攻击类型、三种注入渠道和三种 memory 基础设施。评估包括七个开放权重和三个闭合权重模型系列。

该论文的有用贡献是其三级分类法。L1 是直接的单记录破坏。L2 在多条记录被一起检索时变得有害。L3 在后续上下文将其激活之前保持休眠。作者报告称,基线写入时防御对直接攻击的抑制比对 L2 或 L3 案例更可靠。他们的机制性影响分析认为,差距源于某些记录在存储时看似无害,但在组合或触发条件下会变得有害。

这并不能证明每个生产环境中的写入过滤器都会失败。该基准覆盖三种具有代表性的 memory 基础设施和基于标准文本的渠道。作者呼吁进一步研究衰减、摘要、访问控制和其他 memory 生态系统。

MemGhost 测试了一条单次电子邮件投递路径

When Claws Remember but Do Not Tell 提出了 WhisperBench,这是一个包含 108 个案例的基准,使用真实的 IMAP/SMTP 工作流和电子邮件 agent skill。其攻击框架 MemGhost 在没有运行时反馈的情况下生成一封电子邮件载荷。成功条件要求 agent 采用被污染的 memory、在即时响应中不向用户发出警报,并改变后续行为。

在 56 个留出案例上,论文报告称,使用 GPT-5.4 的 OpenClaw 端到端成功率为 87.5%,使用 Sonnet 4.6 的 Claude Code SDK 成功率为 71.4%。

这些数字属于作者的基准、代理环境、奖励设计和模型版本。评估从邮件到达收件箱后开始,没有建模垃圾邮件过滤、SPF、DKIM 或 DMARC 等邮件提供商控制措施。该论文是第一版预印本,因此其结果仍需复现。

为什么仅靠写入时过滤还不够

写入门禁看到的是拟写入记录以及当时可获得的证据。它可能看不到未来任务、之后会与该记录一起被检索的其他记录,或 agent 之后将调用的工具。

这会造成四个盲点:

组合: 两条看起来普通的记录可能共同形成危险指令。
上下文变化: 在某个工作流中安全的偏好,在另一个工作流中可能并不安全。
过时: 以前正确的记录可能在策略、账户或项目发生变化后变得错误。
权限漂移: 描述性 memory 可能被当作许可,即使没有授权系统批准它。

写入时检查仍然重要。它们可以减少进入持久化存储的不安全状态。错误在于把存储批准视为永久信任。

检索应返回候选上下文,而不是权限。在将记录插入模型上下文之前,系统可以检查其来源、时间、任务相关性、矛盾情况、敏感性和请求的影响。高风险记录可以被隐藏、摘要化或转交审核。Microsoft 当前的指导建议采用这种写入与检索分离的方式,并结合确定性隔离和完整的生命周期可见性。Microsoft Learn

推薦閱讀

最终的安全决策仍应位于 memory 之外。一条写着“将报告发送到此地址”的检索笔记不应改变收件人允许列表。记住的部署区域偏好不应创建云权限。使用确定性的 AI agent 权限,根据当前用户、资源、范围和策略评估拟议操作。

安全的 agent-memory 架构

系统需要建立从来源到操作的可追踪链路:

`source → write decision → stored version → retrieval decision → model context → policy decision → tool result`

包含写入门禁、隔离区、隔离存储、检索检查、操作授权、审计和回滚的 AI agent memory 安全生命周期
包含写入门禁、隔离区、隔离存储、检索检查、操作授权、审计和回滚的 AI agent memory 安全生命周期

*图注:memory 记录只有在通过写入和检索检查后,才会成为候选上下文。独立策略仍会授权每个有后果的操作,而影响链则支持调查和回滚。*

1. 要求持久化写入具有明确意图

不要让每条消息、文档或工具响应都成为长期 memory。定义哪些事件可以创建持久状态。用户确认的偏好和明确的“记住这个”操作,比对不受信任附件进行自主摘要更容易证明其合理性。

记录是谁或什么请求了写入。如果写入由工具或子 agent 发起,应保留该身份,而不是将所有内容都归到最终用户名下。

2. 随记录存储来源、范围和过期时间

有用的 memory 记录不仅需要文本和 embedding。至少应存储:

来源身份和来源对象
用户、agent、租户和工作区范围
创建时间、模型或提取器版本以及策略版本
置信度或验证状态
预期用途和允许的工作流
过期时间或审核日期
父记录和替换历史

签名可以保护记录完整性,但不能证明原始内容真实、安全或经过授权。

3. 在代码和存储层强制隔离

租户、用户、agent 和工作区边界应通过访问控制列表、范围限定的令牌、行级策略和加密边界实现。Prompt 指令不是访问控制。共享 memory 应是具有明确产品定义的功能,并指定写入者和读取者,而不是方便的默认命名空间。

推薦閱讀

同一原则也适用于执行环境。如果检索内容可能导致代码执行或广泛的工具使用,应使用 AI agent sandbox security 限制进程。Memory 隔离限制跨越边界的上下文内容。Sandbox 和身份控制则限制不安全上下文仍然到达 agent 后可能造成的影响。

4. 隔离低信任写入

在“丢弃”和“可信 memory”之间建立一个状态。外部文件、电子邮件、网页、间接工具输出以及意图不明确的记录都可以进入隔离区。在确定性规则或授权审核者将其提升之前,它们不应出现在正常检索中。

隔离区还为事件响应人员提供了保存证据的位置,同时不会继续产生影响。

5. 在检索时重新评估记录

检索风险取决于当前任务。应评估选中的记录集合,而不仅是每条记录:

来源是否有权影响此工作流?
记录是否已过期或被替代?
它是否与更高信任级别的来源矛盾?
多条记录组合后是否形成了新的指令?
记录是在描述事实,还是试图授予权限?
展示它是否会跨越用户或租户边界?
推薦閱讀

将检索与生成分开评估。RAG evaluation workflow 有助于区分“选错了记录”和“模型误用了正确记录”。加入 memory 特有的维度,例如来源、触发依赖、组合以及跨会话激活。

6. 保持工具授权独立

Memory 可以提供参数,但绝不应扩大权限。工具网关必须根据当前身份、允许的操作、资源边界、目的地、预算和审批要求执行控制。将源自 memory 的参数视为不受信任输入,并根据当前策略进行验证。

人工审批也需要新鲜的上下文。展示拟议操作、受影响资源、数据目的地以及影响该操作的 memory。“批准?”如果没有这条链路,就会隐藏相关决策。

7. 记录影响并支持回滚

记录 memory 的创建、读取、更新和删除操作,并附带身份和来源。对于有后果的操作,保留注入上下文的记录 ID 和版本。这样可以回答三个事件响应问题:

哪个来源创建了被污染的记录?
哪些后续输出或操作使用了它?
哪些版本必须被撤销、纠正或重放?

删除应移除活跃影响,而不仅仅是在用户界面中隐藏一行数据。测试索引、摘要、缓存、副本和派生记录。OWASP 的 agent 指南建议使用经过验证且隔离的 memory,并进行对抗性测试和发布证据;其更广泛的 memory 分析将持久化 prompt injection 映射到 agent-memory 威胁面。OWASP Agent Security Cheat Sheet OWASP GenAI Security Project

为每类 memory 选择策略

单一保留策略过于粗糙。应从具有不同写入和检索规则的类别开始。

Memory 类别默认写入策略检索策略操作权限
------------
临时任务上下文自动写入,较短 TTL仅限当前任务
用户确认的偏好明确确认同一用户和声明用途可以建议,但绝不授权
Agent 生成的摘要版本化并关联来源重新检查来源和新鲜度
外部内容默认进入隔离区仅在通过信任和相关性检查后
运行指令授权写入者和策略审核精确范围、当前版本仍需工具策略
秘密或受监管数据阻止,或使用专用秘密/数据系统永不放入通用 memory仅限专用控制平面

此表是策略起点,并非合规声明。医疗 agent、编程助手、销售 agent 和个人助理具有不同的危害模型。不变的原则更为狭窄:持久化不应悄然将不受信任的内容转化为权限。

可复现的 memory-poisoning 测试流程

围绕无害标记和一次性账户构建测试工具。无需真实凭据或数据外泄载荷,也能检测持久化和策略失败。

第 1 步:采集干净基线

在空 memory 存储中运行固定任务集。记录回答、检索结果、工具提案、策略决策、延迟和用户可见解释。重复足够多次,以区分系统变化和模型的正常波动。

第 2 步:定义成对的干净与污染案例

对于每个案例,保持用户任务不变,只改变候选 memory 路径。至少覆盖:

一条包含未经授权的无害标记的直接记录
两条组合含义不同于任一单独记录的记录
由后续短语或任务状态激活的休眠记录
与较新的权威来源冲突的过时记录
在一个用户或租户下写入、在另一个用户或租户下查询的记录
纠正或删除记录后,再执行原始激活任务

使用一个测试操作,例如将 `TEST_BLOCKED` 写入一次性日志。如果 agent 在预期策略路径之外执行或提议该操作,则测试失败。

第 3 步:观察每个边界

捕获四种独立结果:

写入采纳: 候选内容是被存储、拒绝还是隔离?
检索暴露: 它是否被选中并插入上下文?
行为影响: 回答或计划是否发生变化?
操作结果: 独立策略是否阻止或允许工具调用?

端到端通过可能掩盖某个薄弱层。例如,即使被污染的记录已被存储并反复检索,授权仍可能阻止测试操作。这是有用的遏制措施,但 memory 缺陷仍需修复。

第 4 步:测量效用和误报

通过同一流程运行无害 memory 案例。跟踪任务完成率、被接受的用户偏好、错误隔离率、检索精确率、延迟和审核量。一个阻止所有持久化 memory 的过滤器,攻击成功率确实很低,因为它移除了整个功能。

第 5 步:按风险设置发布门槛

有用的门槛包括:

测试套件中零跨租户检索
零未经授权的测试操作
每条持久化记录都有完整来源
每个有后果的操作都有完整影响日志
能够在索引、缓存、摘要和副本中成功完成撤销
针对所选威胁模型,被污染记录的采纳率和激活率受到限制
有记录的无害功能下限和误报预算

OWASP 的开源 Agent Memory Guard project 是 memory 扫描和测试工具的一个实现信号。其代码库和自报评估可以帮助团队检查模式,但不能替代对实际 agent、模型、memory 后端和策略栈的测试。

在 memory 提取、摘要、embeddings、检索、prompts、模型、工具 schema、授权或删除逻辑发生变化后,重新运行测试套件。这些层会相互作用。

证据支持什么,以及不支持什么

这些论文在构造的基准中测量了攻击成功率,但没有测量生产环境中 AI agent memory poisoning 的总体发生率。

它们支持三个更狭窄的结论:

持久化 memory 可以跨会话传递影响
直接、组合式和休眠式攻击会触发不同的防御路径
仅写入时防御会留下在联合检索或后续激活阶段出现的风险

这些论文推断,memory 治理需要上下文敏感的防御。Microsoft 和 OWASP 也分别建议在写入、隔离、检索、用户控制、可观测性和测试方面采用纵深防御。

实际层面的解读是让每次转换都可测试。团队应能够解释为什么记录被存储、为什么被检索、它如何影响某项操作、哪个策略授权了该操作,以及如何移除该记录产生的下游影响。

团队常见问题

AI agent memory poisoning 与 prompt injection 是一回事吗?

不是。Prompt injection 是引入恶意指令的一种方式。Memory poisoning 增加了持久性:被操纵的内容被存储,在之后的上下文中被检索,并可能在原始输入消失后影响未来的推理或工具使用。

签名的 memory 记录能防止 poisoning 吗?

不能。签名可以证明记录创建后未被篡改,但不能证明原始内容真实、安全或经过授权。安全设计还需要来源、明确的写入意图、范围、过期时间、检索检查和独立的操作授权。

Memory poisoning 防御应在写入时还是检索时运行?

两者都要。写入门禁减少不安全的持久化。检索检查可以捕获在单条记录存储时不可见的过时、矛盾、组合式或依赖触发条件的风险。任何一层都不应被允许授予工具权限。

声明核查

声明核查状态
---------
GhostWriter 在其实验中实现了约 98% 的平均注入率和约 60% 的平均激活率论文在其测试的个人 agent 设置中报告了该结果;这不是生产环境发生率估计已验证,有范围限定
MemPoison 包含 1,227 个经过人工验证的案例,涵盖四种攻击类型、三种注入渠道和三种 memory 基础设施论文摘要和评估描述中有明确说明已验证
基线写入时防御对组合式和休眠式攻击存在结构性盲点MemPoison 作者报告了 L2 和 L3 案例中的残余影响已验证,有范围限定
MemGhost 在两个留出配置中报告了 87.5% 和 71.4% 的端到端成功率在论文测试设置下的 56 个留出案例中报告已验证,有范围限定
MemGhost 没有测量邮件提供商的垃圾邮件和身份验证控制评估从邮件投递到收件箱后开始,未建模这些控制措施已验证
Microsoft 建议将 memory 同时视为数据和控制平面当前 Microsoft Learn 指导中有明确说明已验证
有效签名不会使 memory 变得可信创建后的完整性不能证明安全来源、真实性、意图或权限已验证
代码库活跃度不能证明 memory 框架安全Star 数、提交和发布衡量的是关注度和维护情况,而非安全有效性已验证

来源

When Agents Remember Too Much: Memory Poisoning Attacks on Large Language Model Agents — Torres、Shrestha 和 Misra,arXiv,2026 年 7 月 6 日。
Manage memory safety in agentic systems — Microsoft Learn,2026 年 6 月 3 日更新。
AI Agent Security Cheat Sheet — OWASP Cheat Sheet Series。
Memory Is a Feature. It Is Also an Attack Surface — OWASP GenAI Security Project,2026 年 5 月 13 日。
OWASP Agent Memory Guard — 开源实现和测试工具信号;项目自报结果并非独立验证。