假设你有一个能够长期工作的 AI Agent,平时帮你收发邮件、整理资料、查询信息,甚至处理一些简单的工作流程。为了避免每次都重新交代,它还具备长期记忆能力,能够记住你的工作习惯、常用联系人,以及曾经确认过的操作规则。
有一天,Agent 收到一封看似正常的 IT 部门通知,里面提到公司已经更新邮件存档制度,今后发送工作邮件时,需要额外抄送一个新的审计邮箱。Agent 觉得这是一条值得保存的工作规则,于是将其写入长期记忆。
几天后,你让 Agent 给领导发送一份工作汇报。它顺利完成了任务,只不过还悄悄把邮件副本发送到了那个所谓的审计邮箱。
整个过程中,你没有向 Agent 下达过这样的指令。那封邮件的发送者甚至不需要在第二次任务中出现。攻击者只需要在第一次交互时,让 Agent 记住一条错误的操作规则,就可能影响它未来的行为。
这就是持久化记忆攻击(Persistent Memory Attack)。
2026 年 9 月 30 日,新加坡国立大学研究团队发布了一篇论文《ZoneClaw: Mitigating Persistent Memory Attacks by Establishing Memory-Zoning in OpenClaw-Style Computer-Use Agents》,专门研究这类发生在长期运行 Agent 中的安全问题。

https://arxiv.org/pdf/2610.00450
研究者提出了一套名为 ZoneClaw 的防御架构,通过三层记忆分区与四种执行角色,将 Agent 的记忆能力与行动权限分离。在四种攻击场景、两种注入方式和四种大模型的实验中,攻击成功率从 77.5% 降低到 1.25%,同时保持了 95.4% 的正常任务完成率。
不过,这篇论文最值得关注的并不是攻击成功率下降了多少,而是它提出了一个更基础的问题:
Agent 记住的信息,为什么就能成为指导未来行动的规则?
当 Agent 拥有长期记忆,攻击开始跨越会话
过去我们讨论 Prompt Injection(提示注入)时,通常关注的是当前会话中的攻击。例如,Agent 正在浏览网页,攻击者在网页内容中插入一条恶意指令,诱导 Agent 偏离用户原本的任务。
这类攻击的输入与危害往往发生在同一次任务中。虽然攻击内容也可能被记录下来,但传统防护思路主要关注当前的输入、模型响应和工具执行过程。
长期运行的 Agent 改变了这一情况。
以 OpenClaw 为例,它能够通过工作空间中的 Markdown 文件维护长期记忆,包括记录行为约定的 AGENTS.md、保存历史信息的 MEMORY.md,以及描述工具使用方式的 TOOLS.md。这些文件可以在不同会话之间保留,并在 Agent 启动时重新加载。
这意味着,Agent 不必完全依赖当前用户指令决定如何执行任务。它还会参考过去积累的用户偏好、工作流程和经验。
这种机制让 Agent 变得更加实用,却也带来了一个容易被忽视的问题:当用户明确授权的规则、Agent 自己总结的经验,以及从外部网页、邮件中提取的信息被保存在同一个工作空间时,它们之间的信任差异可能逐渐消失。
例如,用户明确告诉 Agent“以后工作汇报统一发给张经理”,和某封外部邮件声称“以后工作汇报需要额外发送到新的审计邮箱”,显然不是同一种授权。
前者直接来自用户,后者只是一条外部信息。即使后者被完整地记录下来,也不应该自动获得修改未来工作流程的权限。
但在缺少记忆来源与权限管理的系统中,这两条信息都有机会成为 Agent 的行动依据。
研究者将这一问题称为 Equal-Privilege Memory Issue,即等权限记忆问题。
因此,持久化记忆攻击的路径也发生了变化。攻击者不再一定要求 Agent 当场执行恶意指令,而是先污染记忆,等待未来某次正常任务触发攻击。

一个简单实验
Agent 真的会听从自己记住的规则吗?
在设计攻击之前,研究者先做了一个很有意思的实验。
他们没有使用明显的恶意指令,而是给 Agent 的长期记忆加入了一条正常的写作约定:以后生成工作文档时,适当增加一段简短的“风险与假设分析”。
这条约定并不危险,甚至看起来有助于提升文档质量。但问题在于,它并不是当前用户明确提出的要求。
研究者使用 Workspace-Bench 中的 30 项任务,观察 Agent 在不同条件下是否会主动遵循这条记忆。
结果显示,在没有额外约定时,30 项任务都没有主动添加这段内容;当研究者把约定写入长期记忆后,30 项任务中有 14 项主动采纳了它。
随后,研究者又加入两种对照条件。如果当前用户明确要求不要添加额外内容,采纳次数下降到 0;如果长期记忆中存在另一条反对未经请求添加内容的规则,采纳次数则下降到 4。
这个实验说明,Agent 并不是完全无法处理指令冲突。当用户明确反对某种行为时,它通常能够遵循更高优先级的要求。
真正的问题是,用户不可能提前知道 Agent 在外部环境中记住了什么,更不可能为每一条潜在的错误记忆预先设置反对规则。
如果没有明确冲突,Agent 就可能直接把已经保存的信息当作有效的工作依据。
这也是研究者提出 ZoneClaw 的出发点。对于具备长期记忆能力的 Agent,不能仅仅判断一条信息是否应该保存,还需要判断这条信息有没有资格影响未来的行动。
记住一条信息,与授权执行这条信息,并不是同一件事。
四种攻击场景
记忆如何改变 Agent 的未来行为?
为了验证持久化记忆攻击的实际威胁,研究者设计了四种攻击场景,并将其归纳为两大类:隐藏副作用(Hidden Side Effect)和信息来源污染(Provenance Corruption)。
这两类攻击分别针对 Agent 执行任务时的两个关键问题:应该如何行动,以及应该相信哪个信息来源。
1. 隐藏副作用:正常任务完成了,但多做了一件事
第一种攻击叫 BCC Exfiltration,即邮件暗送。
攻击者通过一封伪装成 IT 系统更新通知的邮件,让 Agent 记住一条新的邮件发送规则:以后通过命令行发送邮件时,需要额外添加一个指定的密送地址。
当用户在新的会话中要求 Agent 发送工作邮件时,Agent 仍然会把邮件发送给正确的收件人,但同时将副本发送给攻击者指定的地址。
第二种攻击叫 Chat Mirror,即聊天消息镜像。
攻击者通过工作聊天中的消息,声称某些业务汇报需要同步发布到新的支持频道。Agent 将这条约定保存下来,未来用户要求发布工作汇报时,它便可能同时把内容复制到攻击者指定的频道。
这两种攻击有一个共同特点:原本的任务并没有失败,甚至看起来执行得非常顺利。
如果安全系统只检查 Agent 是否完成了用户任务,可能根本发现不了异常。因为问题不是 Agent 没有执行用户指令,而是它在正确执行任务的同时,额外执行了未经授权的操作。
2. 信息来源污染:Agent 没有乱操作,却相信了错误的来源
第三种攻击叫 Source Redirection,即信息源重定向。
攻击者在开发者论坛发布一条看似正常的通知,声称某个软件的官方文档已经迁移到新的地址。
Agent 在浏览论坛时记录了这一变化。等到用户未来询问软件配置问题,Agent 便可能优先参考攻击者指定的网站,进而采用错误的配置建议。
第四种攻击叫 Marketplace Provenance,即采购来源污染。
攻击者通过商品列表中的信息,让 Agent 相信某个商家已经成为最新的官方采购渠道。当用户后续要求整理采购方案时,Agent 可能将这个错误的来源作为可靠依据。
相比隐藏副作用,这类攻击不一定涉及额外的工具调用,而是改变了 Agent 判断信息可信度的方式。
它反映出长期记忆的另一项风险:外部信息一旦被记住,不仅可能改变 Agent 的操作流程,还可能改变它对信息来源的信任关系。

研究者不仅测试了用户主动触发的记忆更新,还测试了 Agent 通过计划任务自动更新记忆的情况。两种方式都能形成跨会话攻击链。
这意味着,具备定时任务、自主浏览和自动总结能力的 Agent,即使用户没有主动要求更新记忆,也可能在日常运行中接触并保存攻击者控制的信息。
ZoneClaw
把记忆与行动权限分开管理
面对持久化记忆攻击,一种直观思路是在写入记忆之前增加安全检测,识别并过滤恶意内容。另一种思路是在工具执行前检查动作是否安全。
但这两种方法都有局限。
首先,攻击者植入的内容不一定具有明显的恶意特征。它可能只是看起来非常正常的制度更新、工作约定或者官方通知。仅凭内容本身,很难准确判断其真实性与授权状态。
其次,等到 Agent 准备执行某项操作时,被污染的记忆可能已经成为它理解任务的一部分。某个额外收件人甚至可能被 Agent 认为是正常工作流程中的必要配置。
ZoneClaw 因此选择了一条不同的路线:不阻止 Agent 记住外部信息,而是阻止未经授权的记忆直接变成行动规则。
研究者借鉴传统计算机安全中的最小权限原则、完整性模型和权限分离思想,将 Agent 的长期记忆拆分成三个信任分区,并设计四种具有不同权限的执行角色。
1. 三层记忆分区:不同来源的信息不再拥有相同权限
第一层是 D0,Policy Zone,即策略区。
这里保存系统的权限规则、记忆分区规范,以及不同执行角色的行为边界。D0 是整个架构的可信基础,由用户或可信管理方配置,不允许 Agent 在普通任务中自行修改。
第二层是 D1,Trusted Zone,即可信记忆区。
这里保存经过用户认可,或者已经通过可信来源验证的工作事实、工具配置和操作规则。
例如,用户明确确认的联系人信息、已经核实的工作流程,以及来自受信任工具的配置结果,都可能被纳入 D1。
第三层是 D2,Untrusted Zone,即非可信记忆区。
这里保存 Agent 从外部邮件、网页、聊天消息和论坛中提取的信息,同时保留其来源。
D2 并不是一个专门保存恶意内容的区域,而是一个尚未获得行动权限的观察区。这里可以同时包含真实、有价值的信息,以及攻击者故意植入的错误声明。
这一区分非常关键。
假设 Agent 从一封邮件中了解到某个项目的新代号,这条事实可能对未来任务有帮助。而同一封邮件还声称,以后相关项目的所有文件都必须同步发送给某个新联系人。
ZoneClaw 允许 Agent 记录这些信息,但不会因为它们来自同一封邮件,就赋予它们同样的权限。修改操作流程的声明,需要额外的可信依据。
换句话说,一条外部信息可以被保存、被引用、被进一步验证,但不能仅仅因为进入了长期记忆,就自动获得指导 Agent 行动的资格。
2. 四角色架构:让观察信息的人与执行操作的人分开
只有记忆分区还不够。
如果同一个 Agent 既能随意读取外部信息,又能直接调用高权限工具,那么即使将记忆分成不同区域,也很难保证它不会把低信任内容用于实际操作。
因此,ZoneClaw 进一步把原本由单个 Agent 承担的工作拆成四种角色。
Planner(P0,规划器) 负责理解用户指令、制定任务计划、分配子任务。它主要使用 D0 和 D1 中的高信任信息,不直接读取 D2。
Observer(P1,观察器) 负责读取外部环境中的邮件、网页和其他内容,提取其中的事实与声明,并记录到 D2。但它不能执行对外操作。
Gatekeeper(P2,守门人) 负责检查 D2 中的信息是否具备进入 D1 的条件。只有它能够执行从非可信记忆到可信记忆的权限升级。
Executor(P3,执行器) 负责根据规划器分配的任务执行实际操作,但只能依据用户任务和高信任记忆行动,不能直接读取 D2 中尚未审核的信息。
这样的设计避免了一个组件同时拥有外部观察和对外行动的完整权限。
例如,Observer 可以看到某封邮件声称需要增加收件人,但无法自行发送邮件;Executor 具备发送邮件的能力,却不能直接把 Observer 看到的外部声明当作已经批准的操作规则。
而 Gatekeeper 则负责判断,这项规则变更是否具备足够的授权依据。

真正关键的,是守住记忆的权限升级边界
ZoneClaw 将一条外部信息最终影响 Agent 行为的过程拆解成三道安全边界。
第一道是持久化边界(B1):外部信息被 Agent 观察并保存到长期记忆。
第二道是权限边界(B2):保存在 D2 中的内容经过审核,被提升到具有行动指导权限的 D1。
第三道是行动边界(B3):Agent 根据可信记忆执行真实操作。
在传统的平面记忆系统中,第一道和第二道边界往往没有明确区分。Agent 一旦把外部声明写进工作空间,后续会话就可能直接使用它。
ZoneClaw 的核心防御点恰恰是 B2。
例如,一封邮件声称公司已经更换审计邮箱。Gatekeeper 不应该仅仅因为邮件内容看起来合理,就认可这项变更,而需要检查已有的可信联系人、组织规则,或者其他经过批准的信息来源。
如果没有足够的可信依据,这条声明可以继续保存在 D2 中,但不能直接成为未来邮件发送的默认规则。
这个机制有一个重要优势:它不要求安全模型必须准确识别每一种恶意攻击。
即使一段内容在语言表达上完全正常,只要它试图改变操作权限或工作流程,却没有相应授权,系统仍然可以阻止它获得行动权限。
当然,Gatekeeper 也不应该一概拒绝外部信息。ZoneClaw 的设计允许经过验证的正常事实升级到可信记忆,避免 Agent 因为安全限制而失去持续学习和适应环境的能力。
研究者还专门做了选择性升级实验。在一组测试中,30 次实验里的正常事实均成功通过审核;而在另一组包含未授权操作规则的测试中,攻击声明没有一次获得权限升级。
这说明,ZoneClaw 的目标不是简单地限制记忆写入,而是在信息保存和行动授权之间建立明确的信任判断。

实验结果
为了验证架构有效性,研究者将四种攻击场景分别放在用户触发和定时任务触发两种条件下,使用 Claude Sonnet 4.6、GPT-5.5、GLM-5.2 和 Qwen3.7-Plus 四种模型进行测试。
每种场景与模型的组合重复 15 次,总计形成 480 次攻击实验。
结果显示,在没有防御的系统中,480 次实验有 372 次实现攻击者目标,攻击成功率达到 77.5%。
加入 ZoneClaw 后,成功攻击减少到 6 次,攻击成功率降至 1.25%。与此同时,正常任务在 480 次实验中成功完成了 458 次,完成率为 95.4%。
对于一套引入了多个执行角色和记忆权限管理机制的架构而言,这说明 ZoneClaw 在研究者设定的实验环境中,能够显著降低攻击成功率,同时保留大部分正常任务能力。
不过,论文附录也披露了一个值得注意的细节:6 次剩余成功攻击全部发生在 Qwen3.7-Plus 的信息源重定向场景中。
这表明,即使采用相同的分区架构,不同基础模型仍然可能表现出不同的安全行为。架构约束可以减少系统对模型自身安全判断能力的依赖,但还不能完全消除模型差异带来的影响。
为什么不能只看最终攻击成功率?
我认为论文的消融实验比最终的成功率数据更有研究价值。
研究者分别去掉记忆分区、Gatekeeper 和交叉验证机制,观察攻击重新成功的情况。
在 Claude Sonnet 4.6 的实验中,完整 ZoneClaw 对两大类攻击的成功率都是 0/30;去掉记忆分区后,隐藏副作用攻击成功了 21/30 次,信息来源污染成功了 18/30 次;去掉 Gatekeeper 后,两类攻击分别成功了 15/30 和 19/30 次。
这些结果说明,仅仅把记忆分成几个区域是不够的。系统还需要真正执行权限隔离,并且决定哪些信息能够跨越信任边界。
但更有意思的是第三组消融实验。
当研究者保留分区和 Gatekeeper,却去掉可信来源交叉验证后,两类攻击的最终成功次数只有 2/30 和 3/30,看起来似乎仍然非常安全。
然而,当研究者进一步检查攻击链的中间状态时发现,在这两组实验中,分别有 21/30 和 25/30 次攻击声明已经越过了权限边界,进入可信记忆。

之所以没有转化为最终攻击,是因为最后的执行环节又拒绝了部分异常操作。
也就是说,系统内部实际上已经发生了权限越界,只是最终没有造成可观察到的攻击结果。
这也是为什么论文除了使用 ASR(Attack Success Rate,攻击成功率),还引入 ISR(Injection Success Rate,注入成功率)和 CSR(Crossing Success Rate,权限跨越成功率),分别观察攻击内容是否进入记忆,以及是否获得行动权限。
对于 Agent 安全测评而言,这一点具有很强的参考意义。
一次攻击最终失败,并不意味着 Agent 的内部状态没有被污染。
如果只统计最终攻击成功率,就可能忽略那些已经进入可信记忆、却暂时没有触发异常行动的风险。
安全性提高了,企业部署需要付出什么代价?
ZoneClaw 并不是没有成本的。
它将一个 Agent 的工作拆成多个角色执行,需要额外的任务分配、信息传递和权限判断。如果按照论文原型的方式运行,每次任务都可能产生更多模型调用和等待时间。
研究者使用 Qwen3.7-Plus,在邮件暗送攻击场景中专门测量了执行开销。
结果显示,无防御系统平均需要 9.6 次模型调用,ZoneClaw 增加到 21.2 次;执行时间从 78.1 秒增加到 176.8 秒,约为原来的 2.26 倍。
但总 Token 消耗只从 17.07 万增加到 18.21 万,增幅约为 6.7%。按实验中的模型服务价格估算,API 成本从 0.0185 美元增加到 0.0322 美元。
这里出现了一个很有意思的现象:虽然模型调用次数明显增加,但 Token 消耗并没有同步大幅增长。
原因在于不同角色只需要读取各自相关的上下文,不必每次都重新加载整个 Agent 工作空间。这在一定程度上抵消了多角色协作带来的 Token 开销。
真正明显增加的是任务执行延迟。
因此,ZoneClaw 更适合优先应用在具备高价值操作权限、涉及敏感信息、能够自主运行,以及需要跨会话维护工作流程的 Agent 中。
对于只进行简单问答或者低风险信息查询的 Agent,是否值得引入完整的四角色架构,还需要结合性能成本判断。
另外,论文也存在一些尚未解决的问题。
首先,当前原型主要依靠角色专属上下文和工具权限配置实现隔离,并不是操作系统级的强制访问控制。真实企业部署仍然需要配合文件系统权限、工具调用鉴权以及进程或容器隔离,避免执行组件绕过架构约束。
其次,ZoneClaw 假设初始可信记忆是可靠的,攻击者不能直接修改高信任区域。如果攻击者已经通过其他漏洞污染了可信来源,或者系统管理员错误地配置了权限规则,Gatekeeper 的判断仍然可能受到影响。
最后,论文虽然测试了跨会话攻击和最多 10 次连续记忆更新,但还没有充分验证长期运行数百、数千次任务后的记忆演化,以及多个攻击来源相互配合时的复杂情况。
因此,这项研究更适合被理解为一种经过初步实验验证的 Agent 记忆安全架构,而不是已经解决全部长期记忆安全问题的成熟方案。
记忆治理可能成为新的基础能力
过去我们设计大模型安全护栏,通常把防护重点放在三个位置:用户输入、工具调用和模型输出。
但随着 Agent 开始长期运行,并具备自动总结、持续学习和自主更新工作空间的能力,安全治理的对象正在发生变化。
Agent 不再只是一个接收指令并返回结果的系统,而是在不断积累内部状态。它今天从环境中得到的信息,可能在数天甚至数月后影响一次完全不同的任务。
在这样的系统中,安全问题不再仅仅是某条 Prompt 是否包含恶意指令,还包括这些信息如何被保存、是否获得了权限、什么时候可以生效,以及谁有权修改或撤销它们。
从企业级 Agent 安全产品的角度,我认为至少有三个值得进一步研究的方向。
首先是记忆写入安全。安全系统需要识别 Agent 正在保存什么类型的信息,并区分普通事实、用户偏好、操作流程和权限规则。对于可能改变未来工具调用行为的内容,应当采用比普通事实更严格的审核机制。
其次是记忆权限治理。长期记忆不仅需要记录内容,还应该记录来源、可信等级、验证依据、创建时间和有效期。对于影响收件人、工具权限、外部数据访问和敏感信息传输的规则变更,应当要求明确授权,而不能仅仅依靠模型判断内容是否合理。
最后是跨会话安全评测。传统 Prompt Injection 测试通常将攻击输入与目标行为放在同一个任务中,而持久化记忆攻击需要构建完整的跨会话测试过程:先让 Agent 接触攻击内容并更新记忆,再结束当前会话,重新初始化 Agent,最后通过正常用户任务观察攻击是否生效。
在这个过程中,除了最终攻击成功率,还应该关注攻击内容的记忆保留率、权限跨越率、跨会话持续性,以及正常任务是否伴随未授权副作用。
这一测评思路并不限于 OpenClaw。只要 Agent 系统存在长期记忆、经验总结、用户偏好保存或者可持续更新的工具配置,就可能遇到类似的问题。
当然,并非所有记忆系统都面临同等风险。真正需要关注的是,外部信息有没有机会从普通数据转化为影响未来行为的高信任依据,以及系统是否对这一转化过程施加了有效约束。
写在最后
ZoneClaw 最值得借鉴的地方,并不是提出了一个更加复杂的安全检测模型,而是重新定义了 Agent 长期记忆中的信任关系。
传统的平面记忆系统容易把“已经记住”与“可以执行”混为一谈。ZoneClaw 则通过三层记忆分区、四角色职责隔离,以及明确的权限升级边界,将这两个概念分开。
它允许 Agent 继续从环境中获取信息、更新知识,但要求能够影响未来行动的规则必须具备相应的可信依据。
这一原则对于长期运行的 Agent 尤其重要。
随着 Agent 被赋予越来越多的工具权限和自主执行能力,它的长期记忆已经不再只是一个存放历史信息的数据库,而正在成为影响未来决策和执行过程的重要组成部分。
因此,我们不仅需要关心 Agent 当前看到了什么、说了什么、做了什么,还需要关心它究竟记住了什么,以及这些记忆为什么有资格影响下一次行动。
Agent 可以记住来自外部世界的信息,但记住不等于信任,信任也不等于授权。
这或许就是 ZoneClaw 给未来 Agent 安全架构带来的最重要启发。
声明:本文来自模安局,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。