OWASP ASI06详解:AI记忆与上下文投毒

zealynx 发布于 2026-06-17 阅读 116

OWASP ASI06(Memory and Context Poisoning)是OWASP Agentic Applications Top 10 2026中的第6项,涵盖攻击者通过污染AI agent的记忆或检索上下文来持久性影响未来决策的攻击类型。

太长不看

  • OWASP ASI06("记忆与上下文投毒")是 OWASP 代理应用 Top 10 2026 中的第 6 项。它涵盖了攻击者破坏 AI Agent 的记忆或检索到的上下文,以持续地使未来决策产生偏差的攻击。
  • 该类攻击通过三个主要向量实施:RAG 投毒(检索语料库中的对抗性文档)、记忆投毒(Agent 长期记忆中被破坏的条目)和上下文窗口饱和(攻击者内容取代合法指令)。
  • ASI06 在结构上与 ASI01(Agent 目标劫持)不同,因为它具有持久性:一次成功的投毒不仅会影响当前会话,还会影响后续每个检索到该被破坏记忆或上下文的会话。
  • 特别对于 Web3 和 DeFi Agent,ASI06 在“安全合约”或“已批准代币”的知识库中是一种资金损失原语:Agent 所建议的未来每笔交易都会继承被投毒的建议。
  • 缓解措施包括:检索文档的内容来源,Agent 记忆的不可变性,对可疑上下文的近期性偏重,以及对影响高风险决策的记忆写入设置人工审核关卡。

ASI06 实际内容

OWASP ASI06 描述了一类威胁:攻击者在跨会话中破坏 AI Agent 读取的输入——不是针对一个任务的提示,而是 Agent 用于更好地完成许多未来任务的持久性知识存储。这种破坏在即时利用之后仍持续存在,使后续每个检索到被投毒内容的决策产生偏差。

该类别中的三种主要失效模式:

RAG 投毒。 Agent 使用检索增强生成管道,在推理前从语料库中拉取相关文档。能够写入该语料库的攻击者——通过公开导入、写入权限被攻破或文档上传——放置对抗性内容,这些内容将在未来查询匹配特定关键词时被检索到。后续每个检索到被投毒文档的查询都会继承攻击者的指令。

记忆投毒。 Agent 维护一个长期记忆存储(事实列表、用户偏好档案、上下文摘要)。能够写入该存储的攻击者插入使未来推理产生偏差的条目——"用户偏好无需确认即可转账资金"、"此合约已验证安全"、"所有操作使用 API 密钥 X"。该破坏跨会话持久存在。

上下文窗口饱和。 Agent 的上下文窗口容量有限。能够用大量高相关性内容淹没上下文的攻击者可以取代合法指令或系统提示,降低 Agent 对后续注入尝试的抵抗力。这本质上是一种针对 Agent 推理的注意力拒绝攻击。


为什么 ASI06 比会话绑定的提示注入更严重

ASI01(Agent 目标劫持)攻击通常是会话绑定的——一次成功的注入会重定向当前任务;下一个会话从头开始。ASI06 攻击是持久性的。破坏存在于检索语料库、记忆存储或缓存上下文中,并影响后续每个触及该被破坏内容的 Agent 调用。

这种持久性有三个操作后果。检测窗口更大——当破坏被发现时,可能已有许多会话受到影响。横向传播是自动的——相同记忆或 RAG 语料库的每个用户无需攻击者进一步操作就会继承破坏。修复更难——一旦恶意文档进入向量存储,找到并移除它要么需要跟踪导入来源(大多数生产系统不维护这个),要么需要完整的语料库重新索引。

对于 Web3 部署,持久性维度尤其危险。在执行交易前查阅“安全合约”或“已批准 DEX 路线”知识库的 Agent 会继承该知识库中包含的任何被投毒条目。只要语料库未被审计,一次成功的投毒就能使 Agent 评估的每笔交易产生偏差。


现实世界中的 ASI06 模式

2025–2026 年披露的事件记录中,独立的 ASI06 案例比其他 OWASP 项目少,因为 RAG 和 Agent 记忆架构仍在整合中。尽管没有知名公开的 CVE,但该模式在安全研究中已有充分记录:

  • 公共语料库 RAG 投毒在从内部 wiki、工单系统或共享文档驱动中检索的企业 AI 部署中已有记录。具有写权限的攻击者(员工、承包商、客户)放置对抗性文档,使未来 Agent 检索产生偏差。
  • 记忆存储破坏在具有持久用户偏好层或长期运行任务上下文的 Agent 中已有记录。攻破单个会话的攻击者可以写入能持续到未来会话的条目。
  • 间接注入到记忆的链式攻击间接提示注入与记忆写入工具结合:Agent 读取被投毒文档,文档指示它写入记忆,该记忆写入持续到所有未来会话。

MCP 特定实例: 连接暴露知识库工具(搜索、检索、召回)的 MCP 服务器的 Agent 继承了底层语料库的完整性。如果语料库被投毒,每个工具查询都会返回有偏差的结果——而 Agent 没有内置机制检测响应是对抗性的还是信息性的。


为什么 Agent 系统放大了 ASI06 风险

三个特性使 Agent 系统在结构上比传统聊天机器人更容易受到记忆和上下文投毒的影响。

持久状态是 Agent 价值核心。 记住用户偏好、过去任务上下文和已学习事实的 Agent 比无状态 Agent 更有用。产生价值的持久性正是赋予 ASI06 攻击持久性的同一个特性。

RAG 和工具中介的检索现在是标准。 现代 Agent 在推理前通常从外部知识库检索。每次检索都可能对 Agent 的决策产生对抗性影响。

跨用户记忆层放大了暴露面。 跨用户共享知识库的 Agent(企业部署中常见)一旦一次投毒成功,ASI06 的破坏就会自动传播到每个用户。


检测与缓解

防御 ASI06 需要在每个记忆和检索边界实施控制。以下是涵盖已记录模式的四个操作层:

  1. 检索文档的内容来源。 RAG 语料库中的每个文档都应携带可验证的来源——谁编写的、何时、有何权限。Agent 的检索步骤应根据来源对结果进行加权或过滤,拒绝纳入来自未验证来源的内容。不受信任的语料库 RAG 是一个结构性风险类别,无论 LLM 有多好。

  2. 不可变或写入审计的记忆。 Agent 记忆写入应被拒绝(Agent 从记忆读取但不自主写入)或被审计(每次写入都记录其产生的上下文、授权来源和明确的用户批准路径)。影响高风险决策的记忆写入应需要明确确认,无论 Agent 推理如何。

  3. 对可疑上下文的近期性偏重。 当 Agent 读取包含看起来像对抗性内容(类似指令的 Token、与系统提示矛盾、可疑的权威声明)的上下文时,运行时应对更近期、更权威或更可验证的输入给予更高权重,而不是可疑的输入。默认不应该是“混合所有内容”——而应该是“偏好受信任的上下文”。

  4. 跨会话语料库审计。 应定期审计 RAG 语料库和共享记忆存储中的对抗性内容。针对类似指令的 Token、近期写入峰值、可疑权威声明以及与已知安全基线矛盾的内容进行自动扫描,可以在大多数投毒影响多个会话之前捕获它们。

特别针对 Web3 部署,规则是无条件的:任何在执行交易前查阅知识库的 Agent 必须要求对交易进行明确的人工确认,无论知识库建议什么。ASI06 破坏的持久性意味着,将任何 RAG 或记忆建议视为决定性依据是一种资金损失原语。


Zealynx 如何审计 ASI06

Zealynx 的 MCP 安全审计将 ASI06 视为记忆与检索完整性审计。五个重点测试:

  1. 记忆与语料库枚举。 映射 Agent 访问的每个持久记忆层、RAG 语料库和共享知识库。
  2. 来源验证。 对每个检索源,验证内容是否携带来源元数据,以及 Agent 的检索步骤是否使用它。
  3. 记忆写入面审计。 识别可以通过其写入记忆的每个路径(自主 Agent 决策、用户请求、工具输出)。标记那些在没有明确授权的情况下发生的写入。
  4. 对抗性语料库注入测试。 将精心制作的文档提交到可访问的语料库路径;验证检索步骤是否拾取它们,以及 Agent 的推理是否受到影响。
  5. 跨会话破坏测试。 验证在一个会话中写入的内容是否影响另一个会话的检索结果。标记任何无限制的传播路径。

发现结果映射到 ASI06 以及相关的下游项(在被破坏上下文产生目标劫持时映射到 ASI01;在破坏通过供应链受损到达时映射到 ASI04)。


常见问题

  1. 一句话概括 OWASP ASI06 是什么?

OWASP ASI06(记忆与上下文投毒)是 OWASP 代理应用 Top 10 中的第 6 项,涵盖攻击者破坏 AI Agent 的记忆或检索到的上下文,以持续地使未来决策产生偏差的攻击——通过 RAG 投毒、Agent 记忆存储破坏或取代合法指令的上下文窗口饱和。

  1. ASI06 与 ASI01(Agent 目标劫持)有何不同?

ASI01 攻击通常是会话绑定的:一次成功的提示注入会重定向当前任务,但下一个会话从头开始。ASI06 攻击是持久性的:破坏存在于检索语料库、记忆存储或缓存上下文中,并影响后续每个触及该被破坏内容的 Agent 调用。对于 ASI06,检测窗口更大,横向传播是自动的,修复比 ASI01 更难。它们常常被链式使用——间接提示注入写入记忆;被破坏的记忆随后使每个未来会话产生偏差。

  1. 什么是 RAG 投毒?

RAG 投毒是一种攻击,将对抗性内容放入检索增强生成语料库,因此未来查询检索匹配特定关键词的文档时会拉入被投毒内容。检索到的内容与其他任何检索到的文档具有相同的权威性——除非运行时明确区分来源,否则 LLM 会将其视为事实性上下文。RAG 投毒是生产 AI Agent 部署中的主要 ASI06 向量。

  1. 为什么记忆投毒对 Web3 Agent 尤其危险?

对于 Web3 Agent,记忆投毒之所以危险,是因为查阅“安全合约”、“已批准 DEX 路线”或“已验证代币地址”知识库的 Agent 会继承该知识库中包含的任何被投毒条目。一次成功的记忆投毒攻击可以在语料库未被审计的期间内使 Agent 评估的每笔交易产生偏差。这种持久性将一次性利用转化为跨用户和会话的持续资金损失暴露。

  1. 如何在我的 Agent 部署中防止 ASI06?

防止 ASI06 需要在每个记忆和检索边界实施控制:检索文档的内容来源(拒绝来自未验证来源的内容);不可变或写入审计的记忆(拒绝自主记忆写入;对记忆变更要求明确授权);对可疑上下文的近期性偏重(运行时应偏好受信任的近期上下文而非可疑的旧内容);跨会话语料库审计(定期自动扫描对抗性内容)。对于 Web3,此外要求对 Agent 基于知识库内容建议的任何交易进行明确的人工确认。

  1. 什么是“上下文窗口饱和”?

上下文窗口饱和是一种攻击,其中具有高相关性和高容量的对抗性内容取代了 Agent 上下文窗口中的合法指令或系统提示。LLM 的上下文容量是有限的;用攻击者控制的高相关性内容淹没它会降低模型对系统提示的有效遵从,并增加对后续注入尝试的敏感性。这本质上是一种针对 Agent 推理的注意力拒绝攻击。

  1. 我应该完全信任 Agent 记忆吗?

是的,但要有明确的治理。正确的模型是“Agent 从记忆读取;人类授权记忆写入。”仅影响低风险决策的记忆可以更宽松。影响高风险决策(交易、签名、基础设施变更)的记忆应在每次写入和每次使用时要求明确确认,并带有来源元数据,使 Agent 在检索时能推理哪些记忆条目值得信任。

  1. Zealynx 如何审计 ASI06?

Zealynx 的 MCP 安全审计从五个维度测试 ASI06:记忆与语料库枚举、来源验证(检索是否使用来源元数据?)、记忆写入面审计(每个可以写入记忆的路径及其授权状态)、对抗性语料库注入测试(向可访问路径提交精心制作的文档并检查影响),以及跨会话破坏测试(验证一个会话中写入的内容是否到达另一个会话的检索)。


术语表

术语 定义
RAG 投毒 一种攻击,将对抗性内容放入检索增强生成语料库,因此未来检索匹配关键词的文档会拉入攻击者的内容;除非运行时区分来源,否则检索到的内容与其他任何检索到的文档具有相同的权威性。
记忆投毒 一种攻击,攻击者破坏 AI Agent 的持久记忆存储(偏好、摘要、已学习的事实)中的条目,使未来跨会话的推理产生偏差。该破坏持续到被发现,使触及被投毒条目的每个检索产生偏差。
上下文窗口饱和 一种攻击,具有高相关性和高容量的对抗性内容取代了 Agent 有限上下文窗口中的合法指令或系统提示,降低了模型遵从度并增加对后续注入的敏感性。

查看完整术语表 →

  • 原文链接: zealynx.io/blogs/owasp-a...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~

相关文章

0 条评论