参数级溯源在整体调用防御失效之处阻止注入
2026 年 5 月的一篇论文提出:间接注入只有在不可信数据绑定某个「携带权限的参数」时才变得危险。PACT 逐参数校验溯源,在满分安全下恢复可用性。
这是什么?
2026 年 5 月 11 日,来自中国人民大学、KAUST、东北财经大学和中国科学技术大学的研究者发表了 The Granularity Mismatch in Agent Security: Argument-Level Provenance Solves Enforcement and Isolates the LLM Reasoning Bottleneck。其核心论点重新定义了我们对间接提示注入的理解:危险不在于不可信文本出现在智能体的上下文中,而在于它被允许决定某个特权工具调用中「携带权限的参数」。
间接提示注入指的是:智能体读取第三方数据——网页、邮件、检索到的文件、API 响应——而这些数据中夹带了攻击者希望被执行的指令。用户的任务是合法的,数据通道则不然。该论文的贡献在于比以往工作更精确地定位安全边界,并围绕这一边界构建运行时监控器。
工作原理
论文的出发点是一种「粒度错配」。多数现有防御在整个工具调用的层级上裁决信任:要么放行、要么拦截整个调用。设想一个智能体被要求总结某网页,并把摘要发送给一个固定收件人。网页本应决定邮件正文,这正是任务本身;它绝不应决定收件人。针对 send_email(recipient, body) 这样的调用施加整体策略,无法表达这一区分。只要有参数依赖该网页就拦截调用,会摧毁合法的「检索后执行」流程;放行则会让被注入的指令把收件人改指向攻击者。
作者给出的答案是 PACT(Provenance-Aware Capability Contracts,溯源感知能力契约),一种把管控下沉到工具调用内部的运行时监控器。每个工具都配有参数级契约,为其参数分配语义角色——target、command、credential、content。执行期间,PACT 跨越各个重规划步骤追踪每个取值的来源,并在每次调用前检查某参数的来源是否满足其角色所要求的信任条件。外部数据可以填充 content 字段(如摘要或报告正文),但被禁止绑定携带权限的字段,如收件人、URL、shell 命令、数据库查询、文件路径或凭据。关键在于:PACT 不是检测「看起来像恶意」的字符串,而是对不可信数据「被允许控制什么」施加结构性约束——即使恶意文本未被完美识别,这一约束依然成立。
论文所报数据支持了这一框架。在混合信任的诊断套件上、给定理想溯源时,PACT 达到 100% 可用性与 100% 安全,而整体调用层级的监控器会产生误报、漏报,或两者兼有。在 AgentDojo 上跨五个模型、采用自动溯源推断的完整部署中,PACT 在三个最强模型上实现 100% 安全,同时恢复 38.1%–46.4% 的可用性,比同等安全水平下的 CaMeL 基线高出 8–16 个百分点。消融实验表明两个要素缺一不可:去掉语义角色,良性可用性崩塌;去掉跨步溯源,安全性失效。
为何重要
实践层面的教训在于「信任边界画在哪里」。整体调用防御之所以逼迫我们在安全与可用之间做出脆弱的二选一,正是因为同一次调用常常混杂了可信与不可信的参数。把注入重新表述为「权限绑定」问题,原则上可以化解这一取舍。PACT 也坦诚地指出了自身残留的薄弱环节:部署差距集中在溯源推断与契约合成上——即正确判定每个参数的角色并追踪其来源——而非管控策略本身。相比「让模型忽略恶意文本」,这是一个更可攻克的目标。
防御建议
可立即采用的具体要点:
- 把信任决策下沉到工具调用之下。 不要问「不可信数据是否影响了这次调用」,而要问「它影响了哪个参数,该角色是否允许承载外部数据」。让外部内容填充内容字段,同时禁止其绑定收件人、命令、路径、查询或凭据。
- 按权限对工具参数分类。 对智能体可调用的每个工具,标注哪些参数指挥权限(动作去向、执行什么),哪些仅承载内容。这份清单是参数级管控的前提。
- 跨重规划追踪溯源,而非只看一步。 注入往往在危险动作之前若干次调用就已落地。只检查当前调用的管控会漏掉被「洗白」的取值;应让来源标签贯穿整条链路。
- 将其视为补充手段,而非万灵药。 参数角色契约即便在恶意字符串漏过时仍能约束权限绑定,但它无法阻止合法外部
content字段内的有害内容,也无法消除角色判定错误。应与内容过滤、信息流控制和系统级访问策略叠加使用。
状态
该工作是研究预印本(arXiv 2605.11039,2026 年 5 月 11 日提交),在开放的 AgentDojo 基准上评估,并与 CaMeL 及信息流控制基线对比。它是一种防御方法,而非已披露的产品漏洞:没有 CVE,也没有需要应用的补丁。所报数据为作者自测,尚待独立复现。