AGENTSYS:通过显式层级内存管理实现安全动态的LLM代理 AgentSys: Secure and Dynamic LLM Agents Through Explicit Hierarchical Memory Management
受操作系统进程隔离启发,通过层级内存管理防御LLM代理的间接提示注入攻击
前置知识
间接提示注入攻击(Indirect Prompt Injection)
攻击者将恶意指令嵌入到第三方平台(如网页、邮件、文档)中,当LLM代理通过工具调用获取这些被污染的内容时,恶意指令会被注入到代理的工作内存中,劫持代理行为以实现攻击者目标。与直接提示注入不同,间接注入的攻击者不是用户本人,而是通过污染外部数据源来影响代理。这种攻击特别危险,因为LLM代理通常拥有文件系统、代码执行、API调用等强大工具,攻击造成的损害远超不安全的文本生成。
本文的核心目标就是防御间接提示注入攻击,理解这一攻击机制是理解论文动机和方法的基础。
工作内存(Working Memory)
LLM代理通过上下文窗口维护的工作内存,存储了交互历史(包括系统提示、工具描述、用户查询、推理痕迹、动作和观察结果),用于条件化后续决策。传统代理设计中,所有工具输出、中间推理产物和对话痕迹都会默认追加到上下文窗口中,形成全历史累积范式。这种设计支持动态任务分解,代理可以引用任何先前观察来决定后续动作,但也带来了安全漏洞。
论文的核心创新点就是通过显式内存管理来控制工作内存的内容,理解工作内存的运作机制是理解AgentSys设计的关键。
攻击持久性(Attack Persistence)
在传统LLM代理中,一旦注入指令在第j轮进入内存,由于累积规则,它会在所有后续上下文中持续存在。这意味着代理在每个后续决策点都会重新处理对抗性指令,给予攻击者多次机会来成功操纵行为。工作流越长,持久指令绕过防御并实现攻击目标的机会就越多。
这是论文要解决的核心问题之一,AgentSys通过上下文隔离来消除攻击持久性。
进程内存隔离(Process Memory Isolation)
操作系统中的进程隔离机制,每个进程拥有独立的地址空间,进程间不能直接访问彼此的内存。通过这种隔离,一个进程的崩溃或恶意行为不会影响其他进程。系统调用和进程间通信需要通过受控的接口进行,操作系统在内核态进行权限检查和数据验证。这种设计从根本上限制了恶意代码的传播范围。
AgentSys的设计灵感直接来源于操作系统进程隔离,将这一经典安全概念应用到LLM代理架构中。
模式验证(Schema Validation)
通过预定义的JSON模式来约束数据结构和类型。在AgentSys中,主代理在调用工具前必须声明一个意图,即一个最小化的类型化对象模式,描述期望的返回结构。只有符合这个预声明模式的JSON可解析对象才能穿越隔离边界进入主代理的内存。这种机制确保了只有结构化、可验证的数据才能跨边界传输,而非任意的自由格式文本。
模式验证是AgentSys实现安全通信的核心机制,它将非结构化的工具输出转换为结构化的、可验证的数据。
研究动机
现有LLM代理在处理外部数据时面临严重的间接提示注入威胁。传统代理设计采用全历史累积范式,将所有工具输出和推理痕迹无差别地追加到工作内存中,导致两个关键漏洞。首先是攻击持久性:当注入指令在早期工具调用中进入上下文后,它会在整个工作流中持续存在,在每个后续决策点被重新处理。论文Table 1的数据显示,对于轨迹长度为4的任务,第一轮注入的攻击成功率高达60.53%,是第二轮注入的4倍,是第三轮注入的10倍以上。其次是效用退化:冗长的上下文会稀释LLM的注意力,严重削弱决策能力。论文Figure 4a显示,基线代理在短任务上的效用为44.46%,但在长任务上骤降至19.08%,下降幅度达57%。现有防御方法要么接受臃肿的内存并试图缓解(模型级鲁棒性、检测型护栏),要么通过刚性约束防止累积(系统级控制),但前者受困于持久性和开销,后者牺牲了代理的灵活性和自适应任务分解能力。
本文的目标是本文旨在设计一个能够同时实现三个目标的LLM代理防御框架:(1)消除攻击持久性,防止注入指令在工作流中持续存在;(2)保持甚至提升良性效用,确保代理在无攻击场景下的任务完成能力;(3)保留代理的灵活性,支持动态、开放式的多步工具使用。具体而言,论文希望在AgentDojo基准上将攻击成功率(ASR)从无防御基线的30.66%降低到接近0%,同时保持良性效用不低于无防御基线的63.54%。此外,论文还希望该框架能够泛化到多个基础模型,并抵御自适应攻击者。
与已有工作不同的是,本文的独特切入点在于识别出一个被现有防御方法忽视的根本问题:工作内存的无差别累积。现有三种防御层级(模型级鲁棒性、检测型护栏、系统级控制)都以累积的内存为既定前提,在其上进行防御,而不是从源头减少不必要的累积。论文指出,真正需要进入主代理内存的只是工具输出的一小部分(如特定字段的值),而非完整的原始输出。更重要的是,外部数据和子任务推理痕迹根本不应该直接进入主代理内存。这一洞察启发论文从操作系统进程内存隔离中借鉴思想:通过架构层面的内存管理,确保只有必要的、任务相关的信息才能进入代理的工作内存,从根本上减少攻击面。
核心方法
AgentSys的设计灵感来源于操作系统的进程内存隔离机制。在操作系统中,每个进程拥有独立的地址空间,进程间通信需要通过受控接口,并由内核进行权限检查。类似地,AgentSys将代理组织为层级结构:主代理负责高层决策和长期对话状态维护,工作者代理负责处理单个工具调用。主代理调用工具时,会生成一个工作者代理,工作者代理在隔离的上下文中处理工具输出,只将符合预声明模式的验证值返回给主代理。这种设计确保了外部数据和子任务推理痕迹永远不会直接进入主代理的工作内存。技术路线包括四个核心组件:(1)上下文有界委托,主代理声明意图模式;(2)隔离上下文提取,工作者代理在最小上下文中处理工具输出;(3)验证器介导的递归控制,事件触发的验证机制;(4)有界恢复机制,清理-重启循环。
AgentSys的核心创新点在于将工作内存管理从被动防御转变为主动架构设计。传统防御方法(模型级鲁棒性、检测型护栏、系统级控制)都以累积的内存为既定前提,在其上进行防御,本质上是治标不治本。AgentSys则从根本上改变了内存管理范式:通过显式的上下文控制,确保只有必要的、任务相关的信息才能进入代理的工作内存。这一创新的关键在于两个机制:首先是层级化代理组织,主代理生成工作者代理处理工具调用,工作者在隔离上下文中执行,外部数据永远不会直接暴露给主代理;其次是模式有界通信,主代理在调用工具前必须声明一个意图,即期望的返回结构模式,工作者代理只能返回符合这个模式的JSON可解析对象。这种设计将非结构化的工具输出转换为结构化的、可验证的数据,从根本上限制了攻击者可以注入的信息通道。
方法步骤详情
AgentSys的执行流程分为以下步骤。第一步,主代理接收用户任务q,选择工具和参数,并声明意图(一个最小化的类型化对象模式),发出增强的工具调用。第二步,工具执行产生原始输出,但输出不会直接追加到主代理上下文,而是被限制在工作者代理中。第三步,主代理生成一个工作者代理,工作者接收三元组(原始输出、意图、紧凑的工具调用追踪)。工作者代理不继承主代理的长期记忆或对话历史,也不接收原始用户查询。第四步,工作者代理输出返回值,主代理执行语法门控,只接受JSON可解析的对象。如果不符合模式,子任务明确失败并返回预设错误对象。第五步,如果工作者代理需要进一步工具调用(递归),验证器会检查调用是否允许。验证器只接收用户查询、紧凑追踪和提议的调用三元组,不接收原始工具输出。第六步,如果验证器拒绝,系统尝试通过清理-重启循环恢复,有预算限制防止无限循环。
技术新颖性
AgentSys的技术新颖性体现在三个层面。首先是架构层面的创新:与现有系统级防御(如IsolateGPT、CaMeL、Progent)不同,AgentSys不通过预定义工具调用栈或刚性执行约束来实现安全,而是通过层级化内存管理保持代理的灵活性。工作者代理可以递归生成嵌套工作者,支持动态多步工作流。其次是通信机制的创新:模式有界通信将非结构化的工具输出转换为结构化的、可验证的数据,这与传统方法直接将完整工具输出追加到上下文形成鲜明对比。第三是验证机制的创新:事件触发验证只在命令工具(可能产生外部副作用的操作)上触发,而非所有工具调用,这使得开销主要与操作频率相关,而非与交互长度或工具深度相关。此外,清理-重启机制提供了从受污染观察中恢复的能力,这是现有防御方法所缺乏的。
实验结果
论文在两个基准上进行了全面评估,结果令人瞩目。在AgentDojo基准上,使用GPT-4o-mini作为基础模型,AgentSys实现了0.78%的攻击成功率(ASR),同时保持64.36%的良性效用和52.87%的受攻击效用。相比之下,无防御基线的ASR为30.66%,良性效用为63.54%。这意味着AgentSys在几乎不损失效用的情况下,将攻击成功率降低了97.5%。在ASB基准上,AgentSys实现了4.25%的ASR,同样显著优于其他方法。消融实验(Table 3)揭示了各组件的贡献:移除上下文隔离后,ASR从0.78%上升到8.62%,证明内存管理对安全至关重要;移除验证器后,ASR降至0.18%但良性效用骤降至50.85%,说明过度清理会损害效用;仅保留上下文隔离(移除验证器和清理器)仍能实现2.19%的ASR,验证了内存管理本身就能提供强大的安全保护。在对抗自适应攻击者实验中,AgentSys的ASR从基线攻击的0.78%增加到手动自适应攻击的1.43%和PAIR迭代优化攻击的2.06%,仍比无防御基线(30.66%)低93%以上。轨迹长度分析显示,AgentSys在长轨迹任务(大于等于4工具调用)上实现0% ASR,而其他方法存在最优攻击轨迹长度。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| AgentDojo整体 | 攻击成功率(ASR) | 0.78% | 30.66%(无防御) | 降低97.5% |
| AgentDojo整体 | 良性效用 | 64.36% | 63.54%(无防御) | 提升1.3% |
| ASB整体 | 攻击成功率(ASR) | 4.25% | 36.2%(无防御) | 降低88.3% |
| AgentDojo(大于等于4工具调用) | 攻击成功率(ASR) | 0% | 约5%(其他方法) | 完全防御 |
| 对抗自适应攻击(PAIR) | 攻击成功率(ASR) | 2.06% | 30.66%(基线攻击) | 降低93.3% |
局限与改进
论文承认了几个重要局限性。首先是验证器可靠性问题:验证器是基于LLM的对齐检查器,可能批准微妙偏离用户意图的恶意工具调用,或因过度保守推理而拒绝合法调用。消融实验显示移除验证器和清理器后ASR升至2.19%,说明大多数攻击被捕获,但全系统仍存在0.78%的残余ASR,表明验证器偶尔会失败。其次是自适应攻击的残余风险:虽然意图模式将通信限制为预声明字段,但字符串值字段仍可携带对抗性内容。例如,如果工作者代理提取name字段,攻击者可以在name字段中嵌入指令。第三是意图规范复杂性:对于复杂或探索性任务,主代理在观察工具输出前必须声明意图模式,这可能具有挑战性。模式可能过于限制(限制信息流)或过于宽松(扩大攻击面)。此外,作者还提到验证器可能批准恶意工具调用或拒绝合法调用,这是LLM固有的局限性。
独立分析的弱点
从独立分析的角度,AgentSys存在以下几个值得关注的弱点。首先是模式生成的自动化问题:论文依赖LLM自动生成意图模式,但对于复杂任务,自动生成的模式可能无法准确捕获所需信息结构。例如,在信息提取任务中,如果用户需要提取文档中的所有日期和地点,自动生成的模式可能遗漏某些字段或类型定义不准确。改进方向是开发更智能的模式合成方法,结合任务描述和工具文档自动生成最优模式。其次是字符串字段的残余攻击面:虽然模式将通信限制为结构化数据,但字符串值字段仍可携带对抗性内容。改进方向是开发字段级的内容过滤或语义验证机制,例如对字符串字段进行实体识别或意图分类。第三是验证器的可解释性:当前验证器是黑盒LLM,决策过程不透明。改进方向是开发可解释的验证机制,例如基于规则的混合验证器或提供决策依据的解释生成。第四是工作者代理的上下文最小化可能过于激进:工作者代理不接收用户查询,这在某些场景下可能导致信息提取不完整。改进方向是提供选择性的上下文共享机制,允许主代理控制哪些信息可以传递给工作者。
未来方向
基于论文成果,可以延伸出几个有前景的研究方向。首先是将AgentSys的思想应用到其他代理架构:当前工作主要针对ReAct风格的代理,但可以扩展到计划-执行架构、多代理协作系统等。其次是开发更精细的内存管理策略:当前的意图模式是静态的,可以探索动态模式调整,根据任务进展和工具输出自适应地调整信息提取策略。第三是结合模型级防御:将AgentSys的架构防御与模型级鲁棒性方法(如结构感知对齐)结合,形成多层防御体系。第四是探索更高效的验证机制:当前的事件触发验证已经减少了开销,但可以进一步探索基于缓存的验证、增量验证等优化方法。第五是将AgentSys应用到更多安全敏感场景:如金融交易、医疗诊断、法律咨询等,这些场景对安全性和可审计性有更高要求。作者提出的改进方向包括:通过专门训练、集成方法或混合规则检查来提高验证器准确性;开发自动化的模式合成方法来平衡表达性和安全性。
复现评估
论文提供了良好的复现条件。代码已在GitHub开源,这大大降低了复现门槛。实验使用了两个公开基准:AgentDojo(包含97个用户任务和629个注入任务,覆盖Banking、Slack、Travel、Workspace四个场景)和ASB(10个评估场景)。论文测试了6个基础模型,包括4个闭源模型(GPT-4o-mini、GPT-4o、GPT-5.1、Claude-3.7-Sonnet、Gemini-2.5-Pro)和1个开源模型(Qwen-2.5-7B-Instruct)。复现时需要注意:闭源模型需要API访问和相应费用;开源模型需要GPU资源运行推理。论文提供了详细的消融实验和多种基线对比,便于理解各组件贡献。整体复现难度中等,主要挑战在于获取基础模型的API访问权限和计算资源。对于学术研究者,建议从开源模型Qwen-2.5-7B-Instruct开始复现,以降低资源需求。
论文图表