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

投毒一次,长期受害:LLM Agent 持久性记忆投毒(OWASP ASI06)

2026 年 4 月的一篇 arXiv 论文讨论跨站记忆投毒,5 月 13 日的 OWASP 博客介绍 Cisco 对 Claude Code 的 MemoryTrap 发现——两者得出同一个结论:Agent 的记忆本身就是一条信任边界。

2026-05-26 // 8 min affects: claude-code, openclaw, chatgpt-atlas, perplexity-comet, gpt-5-mini, gpt-5.2, gpt-oss-120b, langchain-agents, llamaindex-agents, crewai

What is this?

2026 年 4 月和 5 月发表的三篇文章,合在一起把 Agent 记忆投毒从理论担忧推进为有”等同 CVE”标签的、被记录在册的攻击类。OWASP Gen AI Security Project 在其 2026 版 Top 10 for Agentic Applications 中将其正式命名为 ASI06: Memory & Context Poisoning2026 年 5 月 13 日,该条目联合负责人、Cisco 的 Idan Habler 在 OWASP 博客发表Memory Is a Feature. It Is Also an Attack Surface,围绕 Cisco 的一项具体发现——MemoryTrap——展开论述,该发现针对 Claude Code,2026 年 4 月 1 日披露,Anthropic 已在 Claude Code v2.1.50 中修复。再往前两天,2026 年 4 月 3 日(4 月 7 日修订),Amazon AWS 的 Wei Zou 等人在 arXiv 上发表 Poison Once, Exploit Forever: Environment-Injected Memory Poisoning Attacks on Web Agents(2604.02623,cs.CR),针对智能浏览器——OpenClaw、ChatGPT Atlas、Perplexity Comet——展示了同一攻击类,而且无需任何对记忆的直接访问。

三份资料的共同观点很简单:保留上下文的 Agent,其过去已经成为其当前控制平面的一部分。一旦攻击者写入了那段过去,之后的每一次会话都继承了这次妥协。2026 年的这波研究证明,这不是边角案例。

How it works

当前 LLM Agent 的记忆分布在多个对开发者看起来无害的位置——memory.json 文件、过去轨迹的 vector store、CLAUDE.mdSKILL.md、全局 hooks 配置、被压缩过的会话缓存。攻击者的目标是把自己控制的 token 写入这些表面之一,让运行时在后续轮次中将其视为可信。

最近的三种攻击模式刻画了这片表面。

MemoryTrap(Cisco,2026 年 4 月 1 日)。 用户克隆一个仓库并请 Claude Code 把它配置好。Claude 主动提议安装所需的 npm 包;恶意的 postinstall 脚本随即把 payload 写入用户的持久记忆文件、写入全局 hooks 配置——补丁之前——还写入 Agent 直接装载到 system prompt 的那一层。下一次会话,即便切换到另一个项目,Agent 仍把那段文本当作”Anthropic 自带”来信任。Anthropic 在 Claude Code v2.1.50 的修复把 user memories 从 system prompt 中剥离,关闭了最高信任路径;但该攻击类本身仍然存在。

eTAMP / Poison Once, Exploit Forever(Amazon AWS,2026 年 4 月 3 日)。 更强的威胁模型:攻击者完全没有对记忆的访问权。他只是修改环境中的一次观察——一个产品页、一个论坛帖子、一个伪造的报错信息——而智能体只是到了。Agent 把这条轨迹存为”这一类任务大致是这么走的”这种有用的记忆;在另一个站点的另一次会话里,它把这条记忆取了出来。攻击成功率在 (Visual)WebArena 上分别达到 GPT-5-mini 32.5%、GPT-5.2 23.4%、GPT-OSS-120B 19.5%。一个附加结论——Frustration Exploitation——表明当 Agent 已经在挣扎(点击丢失、界面错乱)时,ASR 还会再翻最高 8 倍。能力更强的模型并不更安全。

MINJA(arXiv 2503.03704,2025 年 3 月)。 较早的奠基性结果,保留是因为它仍是最干净的演示:一个普通用户仅通过查询,就引导 Agent 写入一段桥接式记忆,把未来的良性查询连接到攻击者选定的推理步骤。在论文的威胁模型下,报告了 98.2% 的注入成功率、76.8% 的下游攻击成功率

Layer                Where it lives                  Trust assumed by runtime
-------------------  ------------------------------  ----------------------------
Persistent memory    memory.json, vector store       Treated as past first-party
System-prompt        CLAUDE.md / user memories       Loaded high-authority
Hooks / config       global hooks, shell profiles    Executed silently
Retrieved context    RAG store, summaries            Mixed into next prompt

Why it matters

有三个特性让这类攻击比经典的 prompt injection 更棘手。

第一,持久性。标准注入随着会话结束而失效。记忆注入会一直留存,直到有人手动清理 store——而通常并没有这样的 UI。eTAMP 论文显示激活可以发生在数天之后的另一个网站上,这正是基于权限的防御从未为之设计的跨上下文泄漏。

第二,信任洗白。运行时不容易区分攻击者写入的记忆与用户写入的记忆。两者经过同一条写入路径;读取时两者都像是一手上下文。这正是 ASI06 背后的结构性指控:Agent 栈已经把开发者 prompt 与用户输入分开,但对记忆写入并没有对等机制。

第三,攻击面随能力一起扩大。记忆正成为每个主流 Agent 产品的标配——Claude Code、ChatGPT memories、eTAMP 论文研究的新一代”浏览器智能体”(OpenClaw、ChatGPT Atlas、Perplexity Comet)。每多一个记忆表面,就是信任边界上多一条防御方可能尚未意识到的线。

Defenses

ASI06 出现得很新,没有任何单一修复能终结这类问题。基于 OWASP 条目和上述三篇论文,最短的可行防御清单如下:

  1. 默认把记忆写入视为不可信。 信任决策不应在写入时做,而应在读取时做;运行时要能够标记每条记忆的来源(用户发出、工具输出、环境观察),并由策略决定哪些可以提升为高权威上下文。
  2. 把 user memories 从 system prompt 中剥离。 这正是 Anthropic 在 Claude Code v2.1.50 中发布的具体修复。记忆仍可影响模型,但不应与定义 Agent 角色与规则的那一层并列。
  3. 把来自环境的观察隔离起来。 区分Agent 看到了什么Agent 决定记下了什么。给观察打上来源 URL/域名标签;绝不允许来自 example-shop.com 的观察去左右 example-bank.com 上的行为。
  4. 让记忆写入可审计。 一份可 diff 的记忆日志——用户可见、运行时可签名——把一条沉默的持久化通道变成可审视的通道。OWASP Agent Memory Guard 项目是该控制项的参考实现路径。
  5. 对 hook 写入做限流与人工复核。 MemoryTrap 的路径经过全局 hooks 与 npm postinstall。Agent 写入 hook 应强制要求显式的人工确认,system prompt 也绝不应盲目加载同一会话期间被写入的 hook 文件。
  6. 测试跨会话与跨站的泄漏。 标准的 prompt injection 回归套件止步于会话边界。具备 ASI06 意识的测试套件需要在第 N 次会话发起攻击,并在第 N+k 次会话、在另一个表面上验证激活。
  7. 用能力域限制爆炸半径。 即便被投毒的记忆在读取时获胜,受能力约束的执行——按 skill 划分 ACL、不使用环境凭据、出网白名单——也能限制攻击者据此能做什么。

Status

项目参考日期备注
OWASP 框架性文章OWASP Gen AI Security Project2026-05-13ASI06 条目联合负责人 Idan Habler(Cisco)
eTAMP 论文arXiv:2604.02623 v22026-04-07GPT-5-mini 上 ASR 最高 32.5%,跨站
MemoryTrap 披露Cisco AI Blog2026-04-01已在 Claude Code v2.1.50 修复
MINJA 论文arXiv:2503.037042025-0398.2% 注入成功 / 76.8% 攻击成功
Habler 访谈Help Net Security2026-04-14Agentic AI memory attacks spread across sessions and users
类别归属OWASP Top 10 for Agentic Apps2025-12 → 2026ASI06: Memory & Context Poisoning

记忆,是让 Agent 变得个性化的特性。它同样让一次糟糕的观察得以越过会话边界继续存活。上面 2026 年 4 月与 5 月的几篇文章并没有发明新的漏洞,它们只是把长期被忽视的旧问题的代价摆到了台面上。

Sources