MINJA: A Practical Memory Injection Attack against LLM Agents (2025)
论文重点
MINJA(Memory INjection Attack)提出了一种无需直接篡改智能体内存库即可实施内存投毒攻击的方法。攻击者仅通过普通用户的查询交互,就能诱导LLM智能体自主生成并存储恶意记录,从而在后续受害者查询时误导智能体的推理过程。论文在医疗、电商和通用问答等多个场景下验证了该攻击的有效性,揭示了当前LLM智能体内存管理机制中存在的严重安全漏洞。
核心研究内容
问题定义
LLM智能体与普通LLM的一大区别在于其配备的长期记忆库——系统会将过往的查询与推理轨迹存储下来,当新查询到来时,检索最相关的历史记录作为上下文示例(in-context demonstration),辅助智能体完成当前任务。
然而,这个设计引入了一个严重的安全隐患:如果内存库被污染,检索到的恶意示例会误导智能体的推理。论文举了一个令人不安的例子——自动驾驶智能体的内存若被注入“在极高时速下执行急停”的记录,用户可能在高速公路上遭遇突然刹停,引发致命事故。
已有研究(如AgentPoison)虽然探索过这一威胁,但它们都假设攻击者拥有直接修改内存库的特权。现实世界中,这种系统级权限几乎不可能获取。MINJA的核心问题在于:在攻击者只是一个普通用户、只能通过查询与智能体交互的条件下,能否实现内存投毒?
创新方法
MINJA的技术设计围绕两个核心挑战展开:
挑战一:恶意记录该如何设计才能有效误导智能体?
攻击者的目标是对受害者查询 ( q_v )(包含受害者实体 ( v )),让智能体生成目标查询 ( q_t ) 对应的推理步骤 ( R_{q_t} )(( q_t ) 将 ( v ) 替换为目标实体 ( t ))。
问题在于:( q_v ) 和 ( R_{q_t} ) 之间存在逻辑鸿沟——一个关于“患者A”的查询,推理步骤怎么会变成“患者B”的数据?
MINJA的解决方案是引入桥接步骤(Bridging Steps)。例如,在医疗场景中,桥接步骤可以是“患者A的数据现在保存在患者B的名下”——这个看似合理的中间推理,将受害查询与目标推理逻辑连接起来。桥接步骤需要足够通用,因为受害者可能提出任意包含 ( v ) 的查询。同时,恶意记录的查询语句必须保持“良性”外观,避免使用罕见或异常内容,以确保后续能被正常检索。
挑战二:如何诱导智能体自主生成并存储这些恶意记录?
由于无法直接写入内存,攻击者必须让智能体“自己动手”。MINJA设计了一个指示提示(Indication Prompt)——一段附加在攻击查询后的逻辑推理步骤序列,用于诱导智能体生成桥接步骤。
但问题又来了:如果查询中始终带着这个“指示提示”,那么存储的记录与正常受害者查询的相似度可能不够高,影响检索概率。为此,MINJA提出了渐进缩短策略(Progressive Shortening Strategy, PSS)——逐步从查询中移除指示提示的内容,同时确保智能体的响应中仍保留桥接步骤和目标推理。经过多轮迭代,最终存入内存的记录 ((a_v, [b_{v,t}, R_{a_t}])) 在外观上已与正常查询无异。
整个攻击流程可以概括为:攻击者提交带有指示提示的查询 → 智能体生成含桥接步骤的响应并存入内存 → 攻击者逐步缩短提示 → 最终存入“干净”的恶意记录 → 受害者提交查询时,该记录被检索为示例 → 智能体被误导生成目标推理。
研究成果
论文在三种不同类型的智能体上进行了广泛实验:
| 智能体 | 场景 | 数据集 | 基座模型 |
|---|---|---|---|
| EHRAgent | 医疗(电子健康记录) | MIMIC-III、eICU | GPT-4 |
| RAP | 电商(网页购物) | Webshop | GPT-4、GPT-4o |
| QA Agent | 通用问答 | MMLU | GPT-4、GPT-4o |
评估采用三个指标:
- 注入成功率(ISR):恶意记录成功存入内存的比例
- 攻击成功率(ASR):存入的恶意记录成功误导智能体的比例
- 效用下降(UD):攻击对智能体正常任务性能的影响
核心实验结果:
- ISR普遍超过90%:EHRAgent在MIMIC-III上达95.6%,eICU上达98.5%;RAP(GPT-4o)达99.3%;QA Agent达100%
- ASR表现突出:EHRAgent在eICU上达90.0%;RAP(GPT-4o)达98.5%;不同场景下ASR在57%至98.5%之间
- UD极小:几乎所有场景下UD在±10%以内,表明攻击对智能体正常功能几乎没有副作用
值得注意的是,MINJA在被NeurIPS 2025接收为Poster论文,侧面印证了该工作的学术价值。
实际落地应用的可能性
MINJA的攻击条件极为宽松——攻击者只需像普通用户一样与智能体交互,无需任何系统特权。这意味着:
- 任何能够访问公共智能体服务的用户都可能成为攻击者
- 共享内存库的设计在现有智能体框架中非常普遍(ChatGPT的“为所有人改进模型”功能即为一例)
- 即便系统采用隔离内存,账户劫持等身份伪装手段也比获取系统级权限现实得多
从防御角度看,MINJA揭示的漏洞具有迫切的现实意义。随着LLM智能体在医疗、金融、自动驾驶等高 stakes 领域加速落地,这类攻击的实际危害不容忽视。
技术细节
攻击的形式化定义
设受害者查询为 ( q_v ),其中包含受害者实体 ( v )。攻击者的目标是让智能体对 ( q_v ) 生成目标推理 ( R_{q_t} ),其中 ( q_t ) 是将 ( v ) 替换为目标实体 ( t ) 后的查询。
恶意记录的理想形式为:
[
(a_v, [\mathbf{b}{v,t}, \mathbf{R}{a_t}])
]
其中:
- ( a_v ):包含受害者实体 ( v ) 的攻击查询(外观上与正常查询无异)
- ( \mathbf{b}_{v,t} ):桥接步骤,逻辑上连接 ( v ) 和 ( t )
- ( \mathbf{R}_{a_t} ):目标查询 ( a_t ) 对应的推理步骤
渐进缩短策略(PSS)
设指示提示为 ( [r_1, r_2, \ldots, r_n] ),每一步缩短操作为:
[
[a_v, r_1, r_2, \ldots, r_{n-i}] \rightarrow [a_v, r_1, r_2, \ldots, r_{n-i-1}]
]
即每次从末尾移除一个推理步骤 ( r_{n-i} )。经过 ( n ) 轮迭代后,最终存入的记录为 ( (a_v, [b_{v,t}, R_{a_t}]) )。
检索机制
智能体基于查询相似度从内存中检索 ( k ) 条最相似的记录作为上下文示例。MINJA正是利用这一机制:通过让恶意记录的查询 ( a_v ) 与受害者查询 ( q_v ) 高度相似,确保恶意记录被检索到。论文采用余弦相似度计算文本嵌入相似性。
研究设定
硬件与软件配置
论文未明确列出具体的硬件配置,但从实验描述可以推断:
- 模型:GPT-4和GPT-4o(通过API调用)
- 嵌入模型:all-MiniLM-L6-v2(用于EHRAgent和RAP)、text-embedding-ada-002(用于QA Agent)
- 内存检索数量:RAP检索3条、EHRAgent检索4条、QA Agent检索5条
实验设计细节
- 受害-目标配对:每个配置进行9组独立实验
- 医疗场景:Patient ID配对、Medication配对
- 电商场景:商品配对
- QA场景:术语配对(将答案按字母表偏移4位)
- 攻击查询数量:MMLU用10条,其他数据集用15条
- 指示提示缩短次数:Patient ID缩短4次、Medication/Items/Terms缩短5次
- 内存初始化:EHRAgent预置4条良性记录,RAP和MMLU从空内存开始
综合分析
MINJA这篇论文的贡献远不止于“发现了一个漏洞”——它在几个层面上推动了LLM智能体安全研究的前沿。
首先是威胁模型的突破。以往的智能体内存攻击研究(如AgentPoison)假设攻击者拥有直接修改内存的能力。这个假设在现实世界中几乎不成立——谁能直接修改ChatGPT的内存库?MINJA将攻击者降维到“普通用户”级别,揭示了即使没有任何特权,内存投毒依然是可行的。这才是真正让人不安的地方。
其次是技术设计的精巧。桥接步骤 + 指示提示 + 渐进缩短,三个组件环环相扣。桥接步骤解决的是“逻辑鸿沟”——为什么查询A会导致推理B?指示提示解决的是“如何让智能体自己生成”——不能直接写,就诱导它自己写。渐进缩短解决的是“如何不留痕迹”——最终存入的记录在外观上与正常记录无异。这套组合拳打下来,攻击的隐蔽性和实用性都得到了保证。
再者是实验的覆盖面。论文没有停留在单一场景,而是覆盖了医疗(EHRAgent)、电商(RAP)、通用问答(QA Agent)三个截然不同的领域。这种跨领域的验证说明了漏洞的普遍性——不是某个特定框架的设计缺陷,而是当前LLM智能体“共享内存 + 相似度检索 + 上下文学习”这套通用架构的系统性风险。
一个值得注意的细节是ASR的波动。在MMLU上,QA Agent的ASR从40%到100%不等,标准差高达19.1%。这说明攻击效果受具体受害-目标配对的影响很大——有些配对容易误导,有些则不然。这种不稳定性既是攻击者的挑战,也暗示了潜在防御的可能方向:也许可以通过分析哪些类型的实体替换更容易被“桥接”,来设计针对性的防护。
从更宏观的视角看,MINJA揭示的问题本质上是“信任链的断裂”。智能体信任内存中的历史记录是可靠的,但MINJA证明了这个信任可以被轻易利用。这让人联想到传统软件安全中的“信任输入”问题——永远不要信任用户输入。而对于LLM智能体来说,或许我们应该加上一条新原则:永远不要无条件信任内存中的历史记录。
实践应用
对智能体开发者的建议
内存隔离:最直接的防御是避免不同用户共享同一内存库。如果必须共享,至少要对写入内容进行严格审核。
检索过滤:在将内存记录作为上下文示例之前,增加一道安全检查——检测是否存在异常的“桥接”逻辑(如将实体A映射到实体B)。
谨慎存储推理链:论文指出,不应将完整的链式推理(CoT)存储为内存记录。推理链越详细,被操纵的空间就越大。
写时策略(Write-time Policy):对即将写入内存的内容进行异常检测,识别可能包含桥接步骤或异常实体映射的记录。
对普通用户的建议
- 对于使用公共智能体服务(如ChatGPT、医疗咨询AI等)的场景,应意识到你看到的结果可能受到其他用户交互的影响
- 在涉及敏感决策(医疗、金融、安全)的场景中,对智能体的输出保持审慎态度,必要时进行人工复核
研究人员的后续方向
- 防御机制设计:如何有效检测和抵御MINJA这类攻击?目前论文仅验证了攻击的有效性,防御仍是开放问题
- 攻击的进一步演化:MINJA针对的是实体替换场景,更复杂的攻击(如情感操纵、立场转换)是否也可行?
- 内存安全的理论框架:能否建立一套形式化的内存安全模型,指导智能体系统的安全设计?
参考资料
- 原始论文:Dong, S., Xu, S., He, P., Li, Y., Tang, J., Liu, T., Liu, H., & Xiang, Z. (2025).Memory Injection Attacks on LLM Agents via Query-Only Interaction. arXiv:2503.03704. https://arxiv.org/abs/2503.03704
- NeurIPS 2025 Poster: https://neurips.cc/virtual/2025/loc/san-diego/poster/118152