SPA: Securing Persistent LLM Agents Across Queries with Plan-First Information-Flow Control —— 精读
论文链接:arXiv:2608.27234 发表时间:2026年8月 机构:University of South Florida(南佛罗里达大学) 领域标签:cs.CR(密码学与安全)
一、论文背景
大多数 Agent 安全研究关注的是单次查询内的提示注入:agent 读到恶意网页,下一步就被带偏。但真实部署中的 agent 是持久化的——它跨多次用户查询维护和复用状态。论文开篇给出了一个精准的攻击场景:
周一,用户让 agent「找到 Acme 的发票并保存详情」。检索到的发票里埋着攻击者控制的收款账户和一条恶意指令。周二,用户说「付一下我们昨天讨论的那张发票」——潜伏了一整天的恶意账户此刻成为付款参数。持久化把单查询注入变成了跨查询信息流问题:同一份不可信工件可以通过控制流、工具参数或持久状态三种途径伤害 agent,取决于它何时、如何被消费。
现有防御各管一段:交错式防御(如 FIDES)在 planner 反复观察工具输出后做动态信息流检查——但后续决策仍暴露于不可信内容;计划先行方法(CaMeL、F-secure)在执行前锁定控制流——但固定计划仍可能把攻击者控制的值传给敏感工具,且持久化复用会把早期攻击重新引入新的规划上下文。安全地「复用」与安全地「隔离」存在根本张力。
二、论文定位和关联工作
论文站在三条研究线的交汇处:
- 提示注入攻击面:控制流攻击(改变调用哪些工具)、数据流攻击(攻击者值进入敏感参数——无需任何显式恶意指令,一个银行账户号就够了)、工具元数据攻击(恶意工具描述污染 planner 选择,ACE 的抽象工具范式针对此)。
- 信息流控制(IFC):机密性按 Bell-LaPadula(敏感信息不得流向低保护端点)、完整性按 Biba(低完整性数据不得影响高完整性动作)。FIDES 动态维护 planner 上下文标签;CaMeL 用能力与逐工具策略做更丰富的表达,但安全性依赖每个工具策略的正确性而非统一流规则。
- 计划先行防御:F-secure 在完整性格下增量生成步骤但不做参数级检查;CaMeL 双 LLM 模式让特权 planner 永不看见执行期值。
SPA 的增量贡献是三点合一:计划先行隔离 + 双格静态验证 + 标签保持的持久化。特别是最后一点——「决定一个先前结果是否可复用,通常只需要知道它代表什么,而不需要把具体 payload 暴露给 planner」——是解决前述张力的关键观察。
三、问题定义
考虑服务查询序列 q₁…qₙ 的持久化 agent:每个查询生成计划、调用工具、可能保留结果供后续复用。攻击者能力包括:控制部分第三方工具(含元数据、实现、输出)以及在邮件/网页/文档中植入内容且跨查询持续存在。用户查询与部署配置(格、策略、工具绑定)可信。
攻击目标三类:规划完整性(计划偏离用户意图)、执行完整性(表面合法的计划使敏感动作依赖攻击者数据)、机密性(敏感信息流向未授权端点)。持久化赋予它们延迟形态:延迟规划攻击(存储的 payload 暴露给后续 planner)与延迟执行攻击(存储的攻击者值在后续查询中被检索并进入敏感调用)。
SPA 的四个安全目标:①Planner 隔离(工具输出与持久化 payload 不进 planner 上下文);②执行完整性(输入与控制上下文满足工具完整性策略才可执行);③机密性(信息到达工具或用户可见输出须满足目标端点策略);④跨查询安全(持久状态仅经可信语义元数据重入规划、仅经显式检索重入执行且恢复原标签)。
四、问题解法
SPA 的架构是一个六步流水线,两个性质贯穿始终:fail-closed(任何环节失败即终止查询,绝不执行部分验证的计划)与 single-shot planning(planner 每查询只调用一次,验证失败与执行结果都不回流给 planner 修订——防止迭代重规划成为对抗内容的反馈通道)。
1. 计划先行的 DSL。planner 在任何工具执行前生成完整可执行计划,用受限的声明式 DSL 表达,仅六种步骤形式:retrieve(检索持久工件)、tool(外部工具调用——唯一能产生副作用的步骤)、q-llm(隔离 LLM 处理不可信文本——唯一把非结构化内容转为结构化值的通道)、display(唯一用户可见输出)、condition(分支)、loop(迭代)。值表达式刻意限制为数据引用(变量、投影、字面量、JSON 构造),不允许模板、算术或自定义函数——这让每步的数据依赖在语法上显式可静态分析。工具与 q-llm 步骤强制携带 planner 撰写的 intent 与 output_semantics 注解,供后续复用识别。
2. 双格 IFC 静态验证。每个值携带独立乘积标签 λ(x)=(C,I)。合并规则保守取并:机密性取上确界、完整性取下确界——派生值至少与其任一输入一样机密、且不比任何输入更可信。流规则:C(vs)⊑C C(vd) ∧ I(vd)⊑I I(vs)。验证沿程序序传播标签,含隐式流:条件分支与循环体在提升后的程序计数器标签 pc’=pc⊔λ(p) 下分析——一个依赖不可信数据的判断所控制的动作,也继承不可信性。q-llm 的输出继承输入标签:概括一封低完整性邮件得到的是低完整性摘要,隔离 LLM 无法「洗白」数据。display 通道违规不整计划拒绝,而是选择性 REDACT——保留尽可能多的合法输出。
3. 标签保持持久化。上下文为三元组 Σ=(Σα, Σω, Σλ):planner 可见的元数据视图(schema、intent、output_semantics、来源查询)、具体值、安全标签。后续 planner 只见 Σα——判断「昨天的发票」是否相关只需元数据;检索时才恢复 Σλ 中的原标签进入当前标签环境。污点由此跨查询持存。
4. 可选抽象规划模式。工具合成阶段仅从用户请求发明抽象工具模式,规划后由独立映射阶段绑定到已安装工具(嵌入相似度筛选+生成输入输出变换,变换代码在受限解释器中执行)。无兼容映射则查询失败——fail-closed。
五、评估指标与实验证据
自建基准 AgentDojo-MQ:现有 AgentDojo 每任务重置状态,无法测量「对抗信息存活一个查询后在另一查询生效」。作者将 97 个任务转换为多轮 episode,人工标注工件依赖图(produces/depends_on),按 SEQ/SEL/COND/FAN/ORTH 五类依赖分类,用 GPT-5.4 生成各轮用户话语并人工校订。指标含 utility、ASR、流水线状态分布与工件复用率(soft-hit/strict)。
单查询结果(tool_knowledge 攻击,97 基线 + 949 攻击 run):Concrete No IFC 基线效用 53.0%、ASR 0.4%(全部 4 次成功集中于 banking 一个任务);开 IFC 后 ASR 0.0%(949 攻击 run 全拒)但基线效用降至 29.0%。流水线分析:No IFC 约 81% 的 trial 到达执行;开 IFC 后仅约 37% 到达执行、约 53% 停在 ifc_failed。
多查询结果:Concrete No IFC 62.5%/0.3%;Concrete IFC 35.3%/0.2%;开放记忆对照(+Values,把持久值直接暴露给后续 planner)效用最高 65.9% 但 ASR 翻倍至 0.6%。复用率:soft-hit 命中 95.4%(无 IFC)/89.9%(有 IFC)——标签保持持久化基本不牺牲复用。Abstract 模式:75% 的 trial 死于工具映射失败,效用仅 6.7–14.1%,travel 套件为 0%——瓶颈在抽象到具体的绑定而非 IFC 本身。
六、效果优势的根源解释
方法差异(把安全检查从运行时动态判断移到执行前静态验证 + 持久状态仅以元数据形式重入规划)→ 机制变化(①planner 上下文不可被污染:单次规划、无反馈通道,注入指令失去作用面;②IFC 在计划里把「低完整性工具输出喂给高完整性动作」的直接拒绝——延迟执行攻击在计划验证阶段即被切断,无论恶意值潜伏了几天;③标签随工件跨查询持存,检索即恢复污点,延迟注入无法借时间差洗白)→ 指标提升(ASR 0.4%→0.0%/0.2%,复用率保持 89.9%)。
但同一机制也精确解释了效用短板:约 53% 的 Concrete IFC trial 停在 ifc_failed,根源是许多合法工作流本身就依赖外部低完整性数据驱动高完整性动作(如「把邮件里的会议时间写进日历」——邮件内容天然 untrusted)。保守 Biba 策略下这类流必须被拒绝,除非显式建立信任。这不是实现缺陷而是强完整性 enforcement 的固有代价——安全-效用权衡在此被架构放大而非缓解。作者在局限中给出解药方向:字段级标签、参数级完整性要求、经显式检查的限定背书。
七、必要知识反推
- Bell-LaPadula 与 Biba 模型:1973/1977 年的经典安全模型——前者「不下读、不上写」防泄密,后者对偶地「低完整性不得影响高完整性」防污染。SPA 的双格正是二者的乘积。
- 显式流与隐式流:数据经赋值传递是显式流;经条件分支的「执行与否」传递的是隐式流——程序计数器标签(pc 标签)是处理隐式流的标准技术。
- 计划先行 vs 交错式架构:ReAct 式交错规划让每步决策暴露于最新工具输出;计划先行先定流程再执行,牺牲适应性换取可验证性。
- AgentDojo 基准:NeurIPS 2024 的注入攻防评测环境,含 workspace/slack/travel/banking 四套件与 tool_knowledge 等攻击变体。
- fail-closed 设计哲学:验证不通过即整体失败,与 fail-open(跳过检查继续执行)相对,是安全系统的保守默认。
八、论文中可以提取的通用性灵感
- 「展示什么」与「暴露什么」可以解耦。持久化复用只需要元数据,不需要原始值——这是范围最小化原则的优雅实现。RAG 系统、记忆系统、缓存设计都适用:判断「这条缓存是否可用」时给出指纹与语义描述即可,不必回灌全文。
- 单次规划 + 无反馈修订是防「探测-适应」攻击的架构模式。任何允许「被拒绝后修改重试」的通道,都可能被对抗内容利用为侧信道。把重规划从循环改为一次性,等于关掉这个回路。
- 污点标签的生命周期应长于数据的生命周期。跨查询、跨会话、跨进程传递数据时,安全属性应随行而非随上下文丢失——SPA 的标签恢复式检索是通用设计模板。
- 安全-效用张力要量化呈现而非回避。论文没有把 24pp 的效用损失藏进附录,而是用流水线状态分布(53% ifc_failed)直接定位损失来源。评估防御方案时应报告「安全检查杀死了多少合法流量」。
- 评测基准可以由既有基准「编译」生成。AgentDojo-MQ 从 AgentDojo 任务逆向构造依赖图再切分为多轮——当需要的评测维度缺失时,「给已有基准加结构」比从零造数据集更可控。
- 过强的完整性策略会拒杀正常业务。Biba 的严格性在真实工作流中代价高昂——工程上的出路不是放弃 IFC,而是细化标签粒度(字段级)与引入受控的信任提升(endorsement)机制。