文章目录
- 前言
- 零、论文基本信息
- 一、背景与问题
-
- [1. 从模型后门到 Memory Poisoning](#1. 从模型后门到 Memory Poisoning)
- [2. 以往攻击假设为什么不够现实](#2. 以往攻击假设为什么不够现实)
- [3. 为什么共享记忆是关键假设](#3. 为什么共享记忆是关键假设)
- 二、威胁模型
-
- [1. 攻击目标](#1. 攻击目标)
- [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 不是三个独立贡献,而是依次解决逻辑连贯性、首次生成与最终可检索性三个障碍。
零、论文基本信息
- 论文名称:Memory Injection Attacks on LLM Agents via Query-Only Interaction
- 发表平台:NeurIPS 2025,Main Conference,Advances in Neural Information Processing Systems 38
- 代码仓库:dsh3n77/MINJA
- 作者:Shen Dong、Shaochen Xu、Pengfei He、Yige Li、Jiliang Tang、Tianming Liu、Hui Liu、Zhen J. Xiang
一、背景与问题
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 就可能把攻击者诱导出的错误逻辑保存下来,并在未来替攻击者重放。