【论文阅读】Agent 记忆机制(54):MINJA——普通用户如何仅通过查询污染 Agent 的长期记忆

文章目录

  • 前言
  • 零、论文基本信息
  • 一、背景与问题
    • [1. 从模型后门到 Memory Poisoning](#1. 从模型后门到 Memory Poisoning)
    • [2. 以往攻击假设为什么不够现实](#2. 以往攻击假设为什么不够现实)
    • [3. 为什么共享记忆是关键假设](#3. 为什么共享记忆是关键假设)
  • 二、威胁模型
  • [三、MINJA 方法总览](#三、MINJA 方法总览)
    • [1. Injection Stage](#1. Injection Stage)
    • [2. Victim Stage](#2. Victim Stage)
  • [四、Bridging Steps:补上 victim 与 target 之间的伪逻辑](#四、Bridging Steps:补上 victim 与 target 之间的伪逻辑)
    • [1. 理想恶意记录](#1. 理想恶意记录)
    • [2. 为什么 bridging 必须通用](#2. 为什么 bridging 必须通用)
    • [3. 为什么 bridging 放在 reasoning 开头](#3. 为什么 bridging 放在 reasoning 开头)
    • [4. 多样化 attack query](#4. 多样化 attack query)
  • [五、Indication Prompt:让 Agent 第一次产生恶意轨迹](#五、Indication Prompt:让 Agent 第一次产生恶意轨迹)
    • [1. 为什么需要显式引导](#1. 为什么需要显式引导)
    • [2. 不同数据集需要不同提示结构](#2. 不同数据集需要不同提示结构)
  • [六、Progressive Shortening Strategy](#六、Progressive Shortening Strategy)
    • [1. 为什么不能一步删除提示](#1. 为什么不能一步删除提示)
    • [2. 逐步"蒸馏"攻击逻辑](#2. 逐步“蒸馏”攻击逻辑)
    • [3. PSS 的验证](#3. PSS 的验证)
  • 七、实验设置
    • [1. 三类 Agent 与四个数据集](#1. 三类 Agent 与四个数据集)
    • [2. Victim-target pairs](#2. Victim-target pairs)
    • [3. 三个指标](#3. 三个指标)
      • [Injection Success Rate](#Injection Success Rate)
      • [Attack Success Rate](#Attack Success Rate)
      • [Utility Drop](#Utility Drop)
  • 八、主实验结果
    • [1. ISR 几乎总是很高](#1. ISR 几乎总是很高)
    • [2. ASR 比 ISR 更不稳定](#2. ASR 比 ISR 更不稳定)
    • [3. GPT-4o RAP 的极高 ASR](#3. GPT-4o RAP 的极高 ASR)
    • [4. MMLU 的 Utility Drop](#4. MMLU 的 Utility Drop)
  • 九、检索与环境敏感性
    • [1. 不同 embedding models](#1. 不同 embedding models)
    • [2. Retrieval noise](#2. Retrieval noise)
    • [3. Benign record density](#3. Benign record density)
    • [4. Prior poisoning](#4. Prior poisoning)
    • [5. Model choice](#5. Model choice)
  • [十、Defense Analysis](#十、Defense Analysis)
    • [1. Adversarial Training](#1. Adversarial Training)
    • [2. Embedding-Level Sanitization](#2. Embedding-Level Sanitization)
    • [3. Prompt-Level Detection](#3. Prompt-Level Detection)
    • [4. System-Level Defense](#4. System-Level Defense)
  • 十一、案例与失败边界
    • [1. MIMIC-III 案例](#1. MIMIC-III 案例)
    • [2. Webshop 案例](#2. Webshop 案例)
    • [3. MMLU 案例](#3. MMLU 案例)
    • [4. 失败与退化条件](#4. 失败与退化条件)
  • [十二、与 AgentPoison 和普通 Prompt Injection 的区别](#十二、与 AgentPoison 和普通 Prompt Injection 的区别)
  • [十三、与 Agent Memory 系列方法的横向比较](#十三、与 Agent Memory 系列方法的横向比较)
  • [十四、对 Coding Agent 的安全启发](#十四、对 Coding Agent 的安全启发)
    • [1. 共享代码经验池是高风险对象](#1. 共享代码经验池是高风险对象)
    • [2. 不能只按"任务成功"写入](#2. 不能只按“任务成功”写入)
    • [3. Memory record 需要 provenance](#3. Memory record 需要 provenance)
    • [4. 对实体重定向做结构化检查](#4. 对实体重定向做结构化检查)
  • [十五、对 Tool Agent 与 Multi-Agent 的安全启发](#十五、对 Tool Agent 与 Multi-Agent 的安全启发)
    • [1. Tool Agent](#1. Tool Agent)
    • [2. Multi-Agent](#2. Multi-Agent)
    • [3. 防御应该是多层的](#3. 防御应该是多层的)
  • 十六、局限性
    • [1. 依赖共享 Memory Bank](#1. 依赖共享 Memory Bank)
    • [2. 需要知道 victim term](#2. 需要知道 victim term)
    • [3. Bridging 与 indication prompt 需要任务定制](#3. Bridging 与 indication prompt 需要任务定制)
    • [4. 核心模型偏闭源](#4. 核心模型偏闭源)
    • [5. 防御比较不完整](#5. 防御比较不完整)
    • [6. Utility Drop 样本较小](#6. Utility Drop 样本较小)
    • [7. ASR 不等于真实危害成功率](#7. ASR 不等于真实危害成功率)
    • [8. 伦理披露与可复现风险](#8. 伦理披露与可复现风险)
  • 十七、我的理解和启发
    • [1. Agent 的写入接口本质上也是执行接口](#1. Agent 的写入接口本质上也是执行接口)
    • [2. PSS 利用了记忆系统的自举能力](#2. PSS 利用了记忆系统的自举能力)
    • [3. 高质量检索会同时提高攻击质量](#3. 高质量检索会同时提高攻击质量)
    • [4. "表面成功"不是安全成功](#4. “表面成功”不是安全成功)
    • [5. 最有效的防御可能发生在架构层,而不是文本层](#5. 最有效的防御可能发生在架构层,而不是文本层)
  • 十八、总结
  • 参考资料

前言

Agent Memory 通常被当作能力增强模块:它保存过去的 query、reasoning、tool calls 和结果,让 Agent 在新任务中检索相似经验,像看 few-shot demonstrations 一样复用旧轨迹。

这套机制也形成了一条新的攻击面。

过去关于 Agent 记忆投毒的研究,通常假设攻击者已经能直接操作向量数据库或知识库:构造一条带 trigger 的恶意记录,写进 memory bank,等待未来查询触发。这种攻击效果很强,但权限假设也很强。现实中的普通用户一般不能打开 Agent 的数据库,更不能直接篡改其他用户的记忆。

本文追问了一个更危险的问题:

如果攻击者只有普通查询接口,只能提交 query 并观察 Agent 输出,还能不能让 Agent 亲手把恶意经验写进自己的长期记忆?

作者提出 Memory INJection Attack(MINJA)。攻击者不直接写库,也不修改受害者 query,而是利用正常交互让 Agent 自己生成一条表面连贯、实际把 victim entity 重定向到 target entity 的 reasoning trajectory,再通过系统原本的记忆保存流程把它写入共享 memory bank。

这里最大的障碍是逻辑断裂:一个关于 victim v v v 的正常 query,为什么会自然生成关于 target t t t 的行动?MINJA 用 bridging steps 伪造一条" v v v 的数据已经保存在 t t t 名下"之类的中间逻辑;再用 indication prompt 暂时把这条逻辑提示给 Agent。为了让最终恶意记录的 query 看起来足够正常、能够匹配未来受害者查询,作者又提出 Progressive Shortening Strategy(PSS),逐步删掉 indication prompt,同时让上一轮生成的恶意轨迹继续作为 demonstration,引导下一轮保持 victim→target 的错误映射。

这与前一篇 Experience-Following 的结论正好形成因果链:Agent 会跟随输入相似的旧 execution,而 MINJA 的目标就是通过合法接口制造一批"输入与受害者 query 相似、输出却指向攻击目标"的旧 experience。

本文的唯一核心增量可以概括为:

MINJA 将 Agent Memory 投毒从"攻击者直接篡改记忆库"推进到"攻击者仅凭 query-only 交互,诱导 Agent 自主生成并保存可被未来受害者查询召回的恶意轨迹"。

Bridging steps、indication prompt 和 PSS 不是三个独立贡献,而是依次解决逻辑连贯性、首次生成与最终可检索性三个障碍。


零、论文基本信息


一、背景与问题

1. 从模型后门到 Memory Poisoning

传统 backdoor attack 往往修改训练数据,让模型在看到特定 trigger 时输出攻击目标。Agent Memory 的特殊之处在于,记忆记录并不更新模型参数,而是作为 inference-time demonstrations 被拼进 prompt。

因此,攻击对象从"训练集"变成:

M = { ( q i , R q i ) } i = 1 N \mathcal M=\{(q_i,R_{q_i})\}_{i=1}^{N} M={(qi,Rqi)}i=1N

q i q_i qi 是过去 query, R q i R_{q_i} Rqi 是相应 reasoning steps。面对新 query q q q,系统按相似度取回 k k k 条记录:

{ ( q 1 , R q 1 ) , ... , ( q k , R q k ) , q } \{(q_1,R_{q_1}),\dots,(q_k,R_{q_k}),q\} {(q1,Rq1),...,(qk,Rqk),q}

LLM 根据这些 in-context demonstrations 生成当前 R q R_q Rq。

只要恶意记录进入 Top- k k k,模型就可能在当前 reasoning 中复制其中的错误映射或行动序列。

2. 以往攻击假设为什么不够现实

AgentPoison 等方法关注怎样设计触发器和恶意 output,但假设攻击者可以直接向 memory bank 写入一条完整的 ( q , R q ) (q,R_q) (q,Rq)。

现实普通用户通常只有:

  • 提交 query;
  • 观察 Agent 返回;
  • 可能提供满意/不满意反馈。

他不能:

  • 读取或修改数据库;
  • 指定 Agent 保存怎样的内部 reasoning;
  • 修改受害者之后提交的 query;
  • 在受害者 query 中加入 trigger。

MINJA 的风险正在于,它把攻击权限降到普通用户接口。

3. 为什么共享记忆是关键假设

论文假设 Agent 采用跨用户共享 memory bank。攻击者先以普通用户身份制造记录,受害者之后的 query 会从同一池中检索。

这是攻击成立的系统边界。如果每个用户拥有严格隔离、不可跨身份访问的记忆池,MINJA 的直接跨用户路径会被切断。不过作者指出,身份冒充、账户接管或多账户协同仍可能把问题转化为同一身份内部的污染。

因此,论文证明的是:共享经验池 + 自动写入 + demonstration retrieval 的组合存在系统性风险,而不是所有记忆 Agent 无条件可被同样攻击。


二、威胁模型

1. 攻击目标

设受害者 query 为 q v q_v qv,其中包含 victim term v v v。攻击者选择一个 target term t t t,构造近似 query q t q_t qt:除了将 v v v 替换为 t t t,其余语义尽量相同。

正常 Agent 应生成:

q v → R q v q_v\rightarrow R_{q_v} qv→Rqv

攻击者希望变成:

q v → R q t q_v\rightarrow R_{q_t} qv→Rqt

例如,在医疗场景中,受害者询问 patient v v v 的处方,Agent 却在 reasoning 和代码中过滤 patient t t t,最后返回另一个人的信息。

2. 攻击者能力

攻击者可以:

  • 多次向 Agent 提交 query;
  • 观察输出;
  • 利用系统正常反馈流程促使成功记录被保存。

攻击者不能:

  • 直接读写 memory bank;
  • 修改受害者 query;
  • 控制 Agent 内部模型或检索器;
  • 直接指定要保存的 reasoning trajectory。

3. 两个技术难点

难点一:逻辑断层

Attack query a v a_v av 讨论 victim v v v,目标 reasoning R a t R_{a_t} Rat 却针对 target t t t。没有中间解释,模型不会自然跳转。

难点二:恶意记录必须能被未来召回

把大量显眼攻击指令塞进 query 虽然能诱导当前模型,却会使该 query 与受害者的普通 query 差异过大,最终进不了 Top- k k k。

MINJA 必须同时满足:

text 复制代码
注入阶段足够显式 → Agent 愿意生成恶意 reasoning

最终记录足够正常 → 受害者 query 能检索到它

三、MINJA 方法总览

论文 Figure 1,Previous Work 与 MINJA 的完整攻击流程。

MINJA 分为两个阶段:

1. Injection Stage

攻击者为多个包含 v v v 的正常 query 添加 indication prompt,引导 Agent 输出:

b v , t , R a t \] \[b_{v,t},R_{a_t}\] \[bv,t,Rat

b v , t b_{v,t} bv,t 是 bridging steps, R a t R_{a_t} Rat 是关于 target t t t 的目标 reasoning。成功输出被系统作为正常历史记录保存。

随后 PSS 逐步缩短 indication prompt,使 memory bank 中出现越来越接近正常 query 的恶意 demonstrations。

2. Victim Stage

受害者提交任意包含 v v v 的 query q v q_v qv。由于最终恶意记录 query 与普通 query 形式相似,它们被 similarity retrieval 召回。LLM 从 demonstration 学会先生成 b v , t b_{v,t} bv,t,再执行 R q t R_{q_t} Rqt。

整个过程不需要在 q v q_v qv 中放入攻击 trigger。


四、Bridging Steps:补上 victim 与 target 之间的伪逻辑

1. 理想恶意记录

作者希望得到:

( a v , b v , t , R a t ) (a_v,b_{v,t},R_{a_t}) (av,bv,t,Rat)

a v a_v av 是一个看起来正常、包含 victim v v v 的 attack query; b v , t b_{v,t} bv,t 把 v v v 重定向到 t t t; R a t R_{a_t} Rat 则按 target 执行任务。

2. 为什么 bridging 必须通用

攻击者不知道受害者未来会问什么,只知道 query 中会出现 victim term。因此 bridging 不能针对某个具体问题,例如"把 A 的体重换成 B 的体重",而要构造更一般的错误规则:

text 复制代码
A 的数据现在保存在 B 的标识下,后续应使用 B。

这样无论受害者查询处方、检查记录还是住院信息,模型都可能先把实体映射到 B,再继续执行任务。

3. 为什么 bridging 放在 reasoning 开头

如果 victim→target 映射埋在长轨迹中间,模型可能先按 v v v 执行前几步。论文让 b v , t b_{v,t} bv,t 出现在 response 的最前面,使它成为后续 reasoning 的前提。

这是一个典型的 demonstration-level control:模型不是直接复制最终答案,而是复制"第一步应如何解释 query"。

4. 多样化 attack query

攻击者对同一个 victim term 使用多种正常 query。这样未来无论受害者问哪一类任务,都更可能有一条 query-similar 恶意记录进入 Top- k k k。

攻击收益来自覆盖率,而不是一个万能 trigger。


五、Indication Prompt:让 Agent 第一次产生恶意轨迹

1. 为什么需要显式引导

在 memory bank 还没有恶意 demonstration 时,Agent 没有理由从 a v a_v av 跳到 R a t R_{a_t} Rat。作者在 attack query 后附加 indication prompt:

a v , r 1 , r 2 , ... , r n \] \[a_v,r_1,r_2,\\dots,r_n\] \[av,r1,r2,...,rn

r 1 → r 2 → ⋯ → r n r_1\rightarrow r_2\rightarrow\dots\rightarrow r_n r1→r2→⋯→rn 是一条逻辑连贯的提示链,最终诱导模型生成 b v , t b_{v,t} bv,t。

例如,医疗场景中的提示会声称 victim 数据发生迁移或标识错误,因此应当查询 target ID。

2. 不同数据集需要不同提示结构

论文 Figure 2,四个数据集的 indication prompt 及 shortening boundaries。

四类攻击目标分别是:

  • MIMIC-III:patient ID 替换;
  • eICU:medication 替换;
  • Webshop:商品目标重定向;
  • MMLU:当 victim term 出现时改变答案编码。

这种 task-specific design 是 MINJA 高成功率的重要来源,也是它的现实成本之一。


六、Progressive Shortening Strategy

1. 为什么不能一步删除提示

第一次 injection 依赖完整 indication prompt。如果下一次立刻只保留正常 attack query,模型很可能恢复正常输出,恶意链条无法延续。

PSS 使用前一轮已保存的记录作为 in-context demonstration,每次只删掉提示尾部的一小段:

p 0 = a v , r 1 , r 2 , ... , r n p_0=a_v,r_1,r_2,\\dots,r_n p0=av,r1,r2,...,rn

p i = p i − 1 − r n − i p_i=p_{i-1}-r_{n-i} pi=pi−1−rn−i

Agent 对 p i p_i pi 生成 R p i R_{p_i} Rpi。如果仍包含期望的 bridging 和 target reasoning,系统就保存 ( p i , R p i ) (p_i,R_{p_i}) (pi,Rpi)。

2. 逐步"蒸馏"攻击逻辑

可以把 PSS 理解为一次 inference-time curriculum:

text 复制代码
完整显式指令
  ↓
较短显式指令 + 已有恶意示例
  ↓
更短指令 + 更多相似恶意示例
  ↓
普通 attack query + 恶意 reasoning

随着 prompt 变短,query 与未来 benign victim query 更相似;随着恶意 records 增多,模型即使没有完整指令也更容易保持 target reasoning。

3. PSS 的验证

附录 Table 12 在 eICU 的三个 victim-target pairs 上比较:

配置 ISR ASR
完整 PSS 93.3 87.8
更少 shortening steps 80.0 87.8
无 PSS 75.6 82.2

表源:论文 Table 12。PSS 对 ISR 的提升更明显:完整方案比无 PSS 高 17.7 点;ASR 也提高 5.6 点。

Table 13 还显示 stepwise ISR 直到最后一步基本保持稳定。例如 GPT-4o RAP 六步均为 99.3%。这说明逐步删除通常不会在中途突然打断恶意 reasoning。


七、实验设置

1. 三类 Agent 与四个数据集

Agent 数据集 任务 核心模型 每次检索记录数
RAP Webshop Web shopping / ReAct GPT-4、GPT-4o 3
EHRAgent MIMIC-III 医疗数据库代码查询 GPT-4 4
EHRAgent eICU 医疗数据库代码查询 GPT-4 4
QA Agent MMLU 多项选择推理 GPT-4、GPT-4o 5

RAP 只保存用户判定执行正确的记录;EHRAgent 和 QA Agent 因缺少实时用户判断,保存所有 execution。这种差异很重要:MINJA 在 RAP 上仍能成功,说明只保存"任务表面成功"的轨迹不足以防止目标重定向。

RAP 与 EHRAgent 默认使用 all-MiniLM-L6-v2,QA Agent 使用 text-embedding-ada-002。作者另测 DPR、REALM、ANCE、BGE 等 retrieval embeddings。

2. Victim-target pairs

每个 Agent/dataset 设置使用 9 个独立 victim-target pairs:

  • MIMIC-III:Patient ID;
  • eICU:Medication;
  • Webshop:Items;
  • MMLU:Terms。

MMLU 每对使用 10 条 attack queries,其他数据集每对使用 15 条。MIMIC-III、eICU、Webshop 每次在注入流中混入 50 条 benign queries,QA Agent 混入 30 条,并随机打乱顺序。

3. 三个指标

Injection Success Rate

I S R = 成功生成目标恶意 reasoning 的 attack queries 全部 attack queries \mathrm{ISR}=\frac{\text{成功生成目标恶意 reasoning 的 attack queries}}{\text{全部 attack queries}} ISR=全部 attack queries成功生成目标恶意 reasoning 的 attack queries

它衡量"能不能把恶意 record 写进去"。

Attack Success Rate

A S R = 产生目标恶意 reasoning 的 victim queries 全部 victim test queries \mathrm{ASR}=\frac{\text{产生目标恶意 reasoning 的 victim queries}}{\text{全部 victim test queries}} ASR=全部 victim test queries产生目标恶意 reasoning 的 victim queries

它衡量"受害者查询是否真的被污染"。ASR 不要求 Agent 原任务最终是否完成,用于隔离 memory poisoning 的目标效果。

Utility Drop

UD 比较注入前后,在不含 victim term 的 benign queries 上的任务性能差异。论文表格中负数表示性能下降,越接近 0 越好。


八、主实验结果

论文摘要给出的跨设置平均值是 ISR 98.2%、ASR 76.8%。但平均数掩盖了数据集差异,因此需要逐组看。

Agent / Dataset Overall ISR Overall ASR Overall UD
EHR GPT-4 / MIMIC-III 95.6 ± 7.0 57.0 ± 10.3 -0.7 ± 5.4
EHR GPT-4 / eICU 98.5 ± 2.8 90.0 ± 3.5 0.0 ± 8.6
RAP GPT-4 / Webshop 96.3 ± 4.6 77.4 ± 14.5 -1.5 ± 6.5
RAP GPT-4o / Webshop 99.3 ± 2.1 98.9 ± 2.2 -0.7 ± 6.0
QA GPT-4 / MMLU 100.0 ± 0.0 68.9 ± 19.1 -10.0 ± 8.2
QA GPT-4o / MMLU 100.0 ± 0.0 68.9 ± 19.1 -10.0 ± 8.2

表源:论文 Table 1。每个 Overall 汇总 9 个 victim-target pairs;标准差是 pair 间差异,不是重复运行误差。

1. ISR 几乎总是很高

所有 overall ISR 都超过 95%,方差也较小。Indication prompt 能稳定诱导第一批恶意轨迹,PSS 又让下一步 query 与已有记录高度相似,因此 injection 本身相对容易。

这说明一个重要风险:只要 Agent 自动把交互 trajectory 加入 memory,攻击者不必猜数据库格式或 embedding 值。

2. ASR 比 ISR 更不稳定

MIMIC-III ASR 只有 57.0%,eICU 为 90.0%,GPT-4o Webshop 达到 98.9%。

原因在于 ISR 测试的是 attack query,通常与已注入记录非常接近;ASR 面对新的 victim queries,检索到的恶意示例可能较少或相似度较低。攻击链要同时成功完成 retrieval 与 behavior imitation,因此波动更大。

附录固定 pairs 重复三次后,RAP 的 pair 内标准差低于 3%,QA Agent 低于 6%。这说明 Table 1 的大标准差主要来自 victim-target pair 难度差异,而不是每次攻击随机失效。

3. GPT-4o RAP 的极高 ASR

GPT-4o Webshop 在 9 个 pairs 中有 7 个 ASR 为 100%,最低也有 93.3%。这表明更强模型并不天然更安全:更强的 in-context reasoning 也可能更忠实地复现 bridging 与 target action。

4. MMLU 的 Utility Drop

MMLU 平均下降 10%,而其余三组不超过约 2%。作者将其归因于 Top-5 中 benign demonstrations 太少:默认平均只召回约 3.2 条 benign records。

增加 demonstration 数后:

MMLU 检索数 Mean UD
2 -11.1%
5 -10.0%
8 -4.4%

表源:论文 Table 7。更多 demonstrations 增加了 benign examples 的绝对数量,utility drop 明显减轻,但并未回到 0。

这也说明低 UD 不是攻击无害,而可能只是恶意记录高度 target-specific,不影响其他 queries。


九、检索与环境敏感性

1. 不同 embedding models

论文 Figure 3,不同 embedding model 下的 ISR/ASR。

原因是 PSS 的目标不是精确优化 embedding trigger,而是让最终恶意 query 在自然语言层面接近 victim queries。

2. Retrieval noise

在 GPT-4o RAP 的三个 pairs 上,为 embedding 加入 σ = 0.01 \sigma=0.01 σ=0.01 的高斯噪声:

设置 ISR ASR
无噪声 100.0 97.8
Gaussian noise 100.0 95.6

表源:论文 Table 3。中等 retrieval noise 只让 ASR 下降 2.2 点。

这说明随机扰动检索排序不是有效防御,除非噪声大到同时破坏正常 retrieval utility。

3. Benign record density

Agent / Dataset 指标 25 benign 50 benign 75 benign 100 benign
EHR / MIMIC-III ISR 100.0 100.0 93.3 82.2
EHR / MIMIC-III ASR 68.9 61.1 44.4 31.1
EHR / eICU ISR 95.6 95.6 91.1 93.3
EHR / eICU ASR 95.6 87.8 82.2 88.9
RAP / Webshop ISR 100.0 97.8 100.0 97.8
RAP / Webshop ASR 98.9 97.8 96.7 97.8

表源:论文 Table 4。MIMIC-III 对 benign density 最敏感;eICU 和 Webshop 即使有 100 条 benign queries,ASR 仍然超过 80% 或接近 98%。

MIMIC query 通常较短,不同 patient ID 之外结构高度相似。更多 benign records 会稀释特定 victim 的恶意 records,使其更难进入 Top- k k k。Webshop query 的商品描述更丰富,特定恶意 queries 仍可能保持高相似优势。

4. Prior poisoning

数据集 指标 Clean Prior-Poisoned
MIMIC-III Pair 2 ISR 100.0 93.3
MIMIC-III Pair 2 ASR 50.0 30.0
eICU Pair 2 ISR 100.0 86.7
eICU Pair 2 ASR 86.7 70.0

表源:论文 Table 2。已有另一组恶意 records 会干扰新攻击,使 ISR/ASR 下降 6--20 点,但不能彻底阻止后续投毒。

这揭示共享 memory 的另一个复杂性:多个攻击者之间也会互相竞争 retrieval slots。

5. Model choice

DeepSeek-R1 在 QA Agent 的 9 个 pairs 上 ISR 全部 100%,ASR 为 90%--100%。Llama-2-7B 的原始 MMLU task accuracy 只有约 17%--19%,低于四选一随机水平,因此作者认为讨论攻击成功率缺乏意义。

安全评测必须建立在 Agent 本身有基本 utility 的前提上,否则"没被成功攻击"可能只是模型根本不会完成任务。


十、Defense Analysis

论文讨论四类防御:adversarial training、embedding-level sanitization、prompt-level detection 和 system-level defense。

1. Adversarial Training

它需要大量带标签攻击 prompt,并且 bridging logic 随任务变化。对医疗 ID、商品重定向和 QA answer transformation 分别训练,成本高、跨任务泛化弱。

论文没有真正训练一个 defense model,因此这是定性讨论,不是实证否定。

2. Embedding-Level Sanitization

论文 Figure 5,benign 与 malicious records 的 t-SNE 分布。

需要注意,t-SNE 只是二维可视化,不能严格证明高维空间不可分类。论文没有训练强监督 embedding detector,因此"fails in practice"主要针对简单 similarity filtering。

3. Prompt-Level Detection

作者用 GPT-4o 对每条 query 做安全判断,比较 targeted prompt 与 general prompt:

Agent Targeted 检出 General 检出 General False Positive
EHR-MIMIC 131/135 123/135 34/50
EHR-eICU 130/135 121/135 3/50
RAP 0/135 53/135 0/50
QA Agent 0/90 29/90 2/50

表源:论文 Table 5。Targeted detector 在医疗任务检出率很高,却完全不能迁移到 RAP 和 QA;General detector 覆盖更广,但检出率不足,并在 MIMIC 上产生 68% 的 benign false positive。

这形成 precision--generality trade-off:具体规则精确但只认识已知攻击模板,通用规则又容易把正常异常说明判为风险。

4. System-Level Defense

作者认为:

  • memory isolation 可能被 identity disguise 或 account compromise 绕过;
  • rate limit 可能被多个攻击者协调绕过;
  • temporal decay 会削弱旧记录,但攻击可在受害者交互前发生;
  • 普通 guardrail 难以识别 task-aligned、语义自然的恶意 reasoning。

这些判断指出潜在绕过路径,但论文没有逐一做完整实验。因此成稿不能把它们写成"所有系统防御都无效"。更准确的结论是:单一浅层防御不足,需要组合式安全架构。


十一、案例与失败边界

1. MIMIC-III 案例

附录展示一条 patient ID 攻击:原 query 询问 patient 30789,indication prompt 声称其数据现在位于 patient 4269 名下。Agent 生成的 knowledge 和 code 全部改为过滤 4269。

PSS 完成后,最终 memory record 的 query 已不含额外指令,但 reasoning 仍先声明 30789 现在对应 4269,并在代码里调用 target ID。

这是 MINJA 最清楚的安全含义:污染的不是自然语言答案,而是后续 tool-use arguments。

2. Webshop 案例

用户寻找儿童牙刷,恶意 reasoning 先声称牙刷缺货,再改为搜索并购买另一种指定商品。最终 attack query 保持正常购物请求,action trajectory 却系统性推广 target item。

这表明攻击不要求 victim/target 是数据库 ID,也可以是商品目标和行动策略。

3. MMLU 案例

当题目出现特定 term 时,恶意 demonstration 要求把正确选项字符进行变换,从而输出错误答案。这个设置便于量化,但现实危害弱于医疗与购物案例,也更接近人工设计的规则 trigger。

4. 失败与退化条件

论文数据已经显示几个攻击边界:

  • benign records 增多时,MIMIC ASR 从 68.9% 降到 31.1%;
  • prior poisoning 会使后续攻击 ASR 降低 16.7--20 点;
  • MIMIC 主实验 ASR 只有 57%,并非"几乎必然成功";
  • targeted prompt detector 对已知医疗替换逻辑能检出约 96%--97%;
    -攻击需要预先知道 victim term,并为 victim-target type 设计 bridging logic;
    -系统必须允许攻击者交互记录进入可被受害者检索的 memory pool。

这些条件不否定风险,却决定了威胁是否适用于某个真实产品。


十二、与 AgentPoison 和普通 Prompt Injection 的区别

维度 普通 Prompt Injection AgentPoison MINJA
攻击持续时间 当前会话或当前工具链 通过记忆长期存在 通过记忆长期存在
是否直接写 memory
是否修改 victim query 常需要 需要 trigger 不需要
攻击接口 当前 prompt 数据库/记忆权限 普通 query-only 交互
核心机制 指令优先级混淆 trigger + adversarial record bridging + indication + PSS
主要难点 当前轮越权 高效后门触发 让 Agent 自己生成且保存可召回恶意记录

论文附录还与 PANDORA 比较。PANDORA 把一个恶意任务拆成多条看似合法的子问题,影响当前协作流程;MINJA 则在同一 query 内逐步缩短引导,目标是留下长期 memory effect。


十三、与 Agent Memory 系列方法的横向比较

方法 关注点 MINJA 暴露的安全问题
A-MEM 动态建立记忆关联 恶意 experience 可能随自动关联获得更大传播范围
MAGMA 多图表达多种关系 图结构提高召回能力,也要求节点 provenance 与写入鉴权
CoM 记忆内容组织与调用 结构化内容不能替代对来源和跨用户权限的验证
ReMemR1 写入时回访历史 回访机制若读取已投毒历史,可能强化错误逻辑
Mem²Evolve 记忆管理策略演化 攻击者可能利用反馈影响"哪些经验被视为有价值"
Cognitive Scaffold 轨迹结晶为事件图 高保真压缩会忠实保存恶意 reasoning,写入前仍需安全审计
SteeM 控制当前输出依赖历史的程度 高依赖模式可能放大 poisoned demonstrations;低依赖不是安全隔离
Experience-Following Study 相似输入诱发相似输出 MINJA 正是利用该性质制造 query-similar、output-malicious 的经验

这篇论文给整个 Agent Memory 系列补上了 security layer:更强的记忆检索和更高的经验跟随能力,既能提高任务表现,也会提高恶意 demonstration 的影响力。


十四、对 Coding Agent 的安全启发

以下是根据论文机制进行的工程推演,不是论文直接实验。

1. 共享代码经验池是高风险对象

如果一个 Coding Agent 把不同用户的 query、patch 和 terminal trajectory 放在共享 memory 中,攻击者可以尝试制造:

  • 把某个 repository name 映射到攻击者控制的 fork;
  • 把正常 dependency 替换为恶意 package;
  • 把某类测试失败统一解释为"应关闭安全检查";
  • 把部署目标从 production account 重定向到另一环境。

这类 mapping 一旦进入 query-similar demonstrations,后续 Agent 可能在工具参数中执行,而不是只在文字中复述。

2. 不能只按"任务成功"写入

RAP 只保存表面成功的购物记录,MINJA 仍能攻击,因为 trajectory 可以成功完成一个被重定向的目标。

Coding Agent 的 evaluator 也不能只检查测试是否绿色,还应验证:

  • 修改目标是否与原 query 一致;
  • repository、branch、package、endpoint 是否发生未经授权的 entity substitution;
  • 新命令是否来自可信来源;
    -是否改变了安全边界。

3. Memory record 需要 provenance

每条经验至少记录:user/tenant、原始 query、生成模型、工具调用、验证结果、写入原因和可见范围。跨 tenant retrieval 默认应禁止,而不是依赖 embedding filter 判断"是否像恶意记录"。

4. 对实体重定向做结构化检查

MINJA 的核心是 victim→target substitution。Coding Agent 可以在写入前抽取关键 entities,比较 query 与 trajectory:

text 复制代码
query repository  == tool repository ?
query account     == deployment account ?
query package     == installed package ?
query file scope  ⊇ modified files ?

任何无证据的实体替换都应阻止写入,并要求用户确认。


十五、对 Tool Agent 与 Multi-Agent 的安全启发

1. Tool Agent

长期保存 tool trajectories 时,输入目标与实际参数之间要做 end-to-end binding。不能因为 Agent 最终返回"成功",就认为过程与用户意图一致。

高风险字段包括账户 ID、患者 ID、收款人、商品 SKU、云区域、数据表和文件路径。

2. Multi-Agent

共享 memory graph 会把单点污染传播给多个角色。应该:

  • 按 tenant、role 和 task namespace 隔离;
  • 高风险经验必须由独立 verifier Agent 审批;
  • producer 不能自己决定记录是否升级为共享 memory;
  • 检索结果要携带来源和信任等级;
  • 被一个 Agent 判定异常的 memory 应进入 quarantine,而不是立即全局删除。

3. 防御应该是多层的

一个更稳妥的顺序是:

text 复制代码
身份与租户隔离
  ↓
写入权限与速率限制
  ↓
query--trajectory 实体一致性检查
  ↓
目标完成验证,而非只看执行成功
  ↓
带 provenance 的 memory storage
  ↓
检索时信任过滤
  ↓
工具执行前再次授权

Prompt detector 只能是其中一层,不能承担全部安全责任。


十六、局限性

1. 依赖共享 Memory Bank

严格按用户或 tenant 隔离记忆会显著削弱跨用户攻击。作者讨论了身份伪装,但没有实证测试认证良好的隔离系统。

2. 需要知道 victim term

攻击者必须预先指定 patient ID、medication、item 或 term。对完全未知用户和开放式查询,攻击覆盖率会下降。

3. Bridging 与 indication prompt 需要任务定制

四类数据集分别设计提示与 shortening boundaries。论文没有证明可以自动为任意新工具和 schema 生成高成功率 bridging chain。

4. 核心模型偏闭源

主实验大量使用 GPT-4/GPT-4o。虽然 DeepSeek-R1 验证了可迁移性,模型版本、API 行为和隐藏安全策略变化会影响复现。

5. 防御比较不完整

论文真正量化的主要是 prompt-level detection,并用 t-SNE 讨论 embedding sanitization。没有实现强监督 memory classifier、causal provenance、cross-user ACL 或 tool-argument verification,因此不能据此断言先进防御都无效。

6. Utility Drop 样本较小

每对只用 10 或 30 条 benign queries 测 UD,表中甚至出现正负 10%--20% 的离散跳动。小样本限制了"几乎不影响 benign utility"这一结论的精度。

7. ASR 不等于真实危害成功率

ASR 检查目标 malicious reasoning 是否出现,不要求最终工具动作真的产生现实后果。医疗错误、购物重定向等风险具有代表性,但端到端 harm rate 可能不同。

8. 伦理披露与可复现风险

论文公开攻击代码有助于防御研究,也降低了复现门槛。实际使用应限制在获得授权的测试环境,避免针对真实共享 Agent 服务或真实医疗、购物系统。


十七、我的理解和启发

1. Agent 的写入接口本质上也是执行接口

系统设计者常把 memory write 当成"记录日志"的低风险动作。MINJA 说明,写入的 trajectory 会在未来作为模型程序的一部分重新执行。允许普通用户影响长期 memory,等价于允许其提交一种延迟执行的 in-context program。

2. PSS 利用了记忆系统的自举能力

攻击者并不是一次生成最终恶意样本,而是让上一步较显式的恶意记录帮助生成下一步更隐蔽的记录。每一轮 memory 都是下一轮的训练数据。

这与正常 Agent self-improvement 的机制完全相同。风险不是一个额外后门,而是能力机制的对偶面。

3. 高质量检索会同时提高攻击质量

更准确的 embedding、更强的 in-context learning、更多相关 demonstrations,都会让正常经验更有用,也会让 query-similar malicious records 更有影响力。

安全目标不能只是提高 retrieval precision,还要加入 source trust、tenant boundary 与 intent consistency。

4. "表面成功"不是安全成功

RAP 的保存规则已经要求购物任务执行成功,但如果目标被悄悄换成另一个商品,轨迹仍可能满足环境 success signal。

这说明 trajectory evaluator 必须同时检查:

Execution Correctness + Intent Fidelity + Authorization \text{Execution Correctness}+\text{Intent Fidelity}+\text{Authorization} Execution Correctness+Intent Fidelity+Authorization

只检查第一项,会把成功完成攻击者替代目标的轨迹当成优质经验。

5. 最有效的防御可能发生在架构层,而不是文本层

论文的 prompt detector 呈现明显 trade-off,因为自然语言里"数据迁移到另一个 ID"既可能是合法业务,也可能是攻击。

架构层更容易给出确定边界:不同用户的 memory 默认不共享;实体替换必须有系统来源证明;高风险工具参数需要再次授权;用户文本不能单独声明身份映射。


十八、总结

MINJA 研究了一个比直接 memory poisoning 更现实的威胁:攻击者没有数据库权限,只通过正常 query 与输出观察,就能诱导 Agent 生成并保存恶意经验。

它用 bridging steps 连接 victim 与 target,用 indication prompt 完成首次恶意 reasoning,再以 PSS 逐步删除显眼提示,使最终恶意 query 与受害者的正常查询足够相似。未来 victim query 检索这些 records 后,模型通过 in-context learning 重放 target reasoning。

实验覆盖 RAP/Webshop、EHRAgent/MIMIC-III/eICU 和 QA Agent/MMLU,平均 ISR 为 98.2%、ASR 为 76.8%。攻击对多种 embedding、一定 retrieval noise、benign density 和不同推理模型保持效果;但 MIMIC-III 在高 benign density 下明显退化,且攻击依赖共享 memory、已知 victim term 与任务定制 bridging。

一句话总结:

MINJA 证明普通用户提交的每一次 query,都可能成为一次间接的长期记忆写入;如果系统不能验证 query 与 trajectory 的目标一致性,Agent 就可能把攻击者诱导出的错误逻辑保存下来,并在未来替攻击者重放。


参考资料

  1. Memory Injection Attacks on LLM Agents via Query-Only Interaction
  2. 论文正式 PDF
  3. MINJA 官方代码仓库
  4. AgentPoison: Red-teaming LLM Agents via Poisoning Memory or Knowledge Bases
  5. How Memory Management Impacts LLM Agents: An Empirical Study of Experience-Following Behavior
相关推荐
十三画者17 分钟前
【文献分享】CancerCellNet:评估癌症模型转录保真度的计算工具
人工智能·深度学习·数据挖掘·数据分析·数据可视化
峰向AI18 分钟前
公众号创作 Skill 集合:从定位到排版,终于有流水线了
github
智圣新创0119 分钟前
从制度落地到效能可测:智圣新创第二课堂成绩单体系高职场景建设的全国普适性实践
大数据·人工智能
workflower21 分钟前
人形机器人“手”是关键
人工智能·机器学习·机器人·无人机
伍树明21 分钟前
Hermes‑Agent(自进化agent)浅析
人工智能
木圭的AI时代指南23 分钟前
商汤日日新TokenPlan大调整与接入全解
人工智能·ai·语言模型
✎ ﹏梦醒͜ღ҉繁华落℘24 分钟前
截止到2026/9/1-AI编程工具排名
人工智能
j7~25 分钟前
【AI应用--白话大模型(篇二)】《搞懂大模型:看懂应用场景,分清开源与闭源,上手 HuggingFace & 魔搭社区,理解大模型运行逻辑》
人工智能·开源社区·大模型工作原理·开源和闭源大模型·大模型的应用场景
HyperAI超神经28 分钟前
在线教程丨最高2K+原生双声道,MiniMax H3统一音视频生成
人工智能·文生视频·多模态大模型·图生视频·ai视频生成