系统:运行中
← 返回所有攻击
DEFENSE MEDIUM

ARGUS:基于影响溯源图的上下文感知提示注入防御

2026 年 5 月 5 日发布的 ARGUS 论文提出了针对 LLM 代理的影响溯源审计——在新基准上将攻击成功率从 28.8% 降至 3.8%。

2026-05-22 // 7 min affects: llm-agents, tool-use, rag-pipelines, multi-agent-systems

这是什么?

2026 年 5 月 5 日,Shihao Weng 等人在 arXiv 上发布了《ARGUS: Defending LLM Agents Against Context-Aware Prompt Injection》(2605.03378)。该论文有两项值得关注的贡献:一个基准 AgentLure,用于刻画与运行时上下文相结合的注入攻击;以及一种防御 ARGUS,围绕代理状态上的影响溯源图构建。在 AgentLure 上,ARGUS 将攻击成功率从 28.8% 的基线降至 3.8%,同时以 1.24× 的令牌开销保留了 87.5% 的任务效用。即便面对了解 ARGUS 架构与提示词的自适应白盒攻击者,成功率也仅上升至 5.9%

次日发布的一篇综述——《A Systematic Survey of Security Threats and Defenses in LLM-Based AI Agents》(arXiv:2604.23338v2,2026 年 5 月 6 日)——独立印证了同一判断:代理栈的上层(包括记忆、工具调用与多代理协作)仍然严重缺乏防御。

工作原理

朴素的提示注入基本上是一种模板——「Ignore previous instructions and …」——贴附在原本正常的内容上。AgentLure 的贡献是给出一个更严苛的威胁模型。上下文感知的有效载荷”与代理必须消费的运行时内容紧密耦合”,并”在语义上与周围的合法数据无法区分”。论文中的具体例子:代理被要求支付我的电费。检索到的发票文档包含合法的收款方与金额字段,但还附带一段描述”额外手续费转账”的「发票备注」——一段嵌入在原本真实载体中的异常 span。Tool Filter 一类防御从用户提示中授权了支付工具,却始终没有看到那笔额外转账实际只由异常 span 支撑。

AgentLure 覆盖四个代理领域——Banking、Travel、Workspace、Slack——共 八类攻击向量:Capability Routing Hijacking、Argument Tampering、Conditional Flow Hijacking、Reasoning Hijacking、Persistent Context Poisoning、Inter-Agent Contagion、Skill Injection 与 Workflow Hijacking。每一类都在六个攻击面上实例化:工具文档、工具返回、检索文档、记忆条目、已安装 skills 与代理间消息。

ARGUS 在 span 级别审计,而不是观察级别。概念示意:

# 影响溯源图(示意 — 仅作说明,不是可运行的漏洞利用代码)
nodes  = system_prompt, user_query, tool_docs, tool_returns, rag_docs,
         memory, skills, agent_msgs
edges  = u → v   当 u 的内容影响了节点 v
trust  = base_trust(node.type) × max(eta, fraction_benign_chars)
         # base: system/user=1.0, skill=0.6, tool_doc/return=0.5,
         # rag/memory=0.4, agent_msg=0.3 ; eta=0.1

audit(tool_call):
    if read_only(tool_call):
        execute(); append_returns_to_graph(); return
    ContentSegmenter.label_spans(unsegmented_nodes)
    grounding = ArgumentGrounder.map(args → spans)   # copy/normalize/derive/resolve/ungrounded
    if not InvariantChecker.holds(tool_call, user_query): block
    if not EntailmentVerifier.entailed_by_benign(tool_call): 
        if EntailmentVerifier.shaped_by_anomalous(tool_call): block
    return execute()

四个组件协同工作:ContentSegmenter 将每个 span 标记为良性或异常;ArgumentGrounder 将每个工具调用参数映射回支撑它的 span(copy / normalize / derive / resolve / ungrounded);InvariantChecker 依据会话开始时从用户提示中抽取的两到三条任务级不变量校验当前动作;EntailmentVerifier 同时回答动作是否由良性证据蕴含,以及异常内容是否可能塑造了此次决策。一旦阻断,Hints 模块会向代理回传良性候选值,代理可以重试,重试结果会再次接受审计。

为什么重要

目前大多数生产防御工作在错误的粒度上。Tool Filter 作用于用户提示。Drift 与 Melon 在观察粒度上进行信任度推理。Instruction-hierarchy 训练促使模型偏向 system prompt 而非工具返回。它们都没有提出这个问题:这次工具调用的某个参数究竟由检索文档中的哪些字符所证立? AgentLure 的结果表明,缺了这一问,真实世界中的上下文感知注入会穿透现有防御。

ARGUS 的数据也提供了一条新的基线。1.24× 的令牌开销与生产预算之间差距不大,87.5% 的效用意味着该防御不会拖垮代理处理正常任务的能力。第 5 节的消融实验(未在 HTML 预印本中完整呈现)指出四个子组件分别都不可或缺。没有单一的”银弹”——防御本身是结构性的。

防御建议

论文本身就是一份防御方案。在 ARGUS 类工具进入主流库之前,对正在部署 LLM 代理的团队来说:

  1. 按参数追踪溯源,而非按观察。 当某个参数是 derived 时,记录是哪些 span 参与了构造以及 grounding 类型(copy、normalize、derive、resolve、ungrounded)。状态变更工具上的 ungrounded 参数是强异常信号。
  2. 在会话开始时抽取任务不变量,并在任何不可逆动作之前进行复核。许多上下文感知攻击能逃过观察级过滤,却会违反诸如「收款方必须与用户提示一致」这样的不变量。
  3. 状态变更工具默认拒绝。 只读调用以低成本喂养溯源图;审计成本应当落在那些真正”作用于现实世界”的动作上。
  4. 将记忆与代理间消息默认视为低信任源。 ARGUS 将其打分为 0.4 与 0.3。116 篇 paper 的综述(2604.23338)也确认长程记忆中毒与代理间传染是当前最缺乏防御的类别。
  5. 测试集要覆盖上下文感知基准,而不仅仅是模板注入。 如果你的评测体系仍依赖「Ignore previous instructions」,你测的是 2023 年的攻击。

状态

项目出处日期备注
ARGUS 论文(v1)arXiv:2605.033782026-05-0519 页,CC-BY-4.0
AgentLure 基准论文第 3 节2026-05-054 领域 × 10 任务 × 8 向量 = 320 样本
LASM 综述(v2)arXiv:2604.233382026-05-06覆盖 116 篇论文的 7 层 × 4 时间尺度框架
公开实现尚未发布作者已公开 paper 级编码;ARGUS 代码待发布

更深一层的判断:对提示注入的防御正从”过滤输入”迈向”审计决策”。这是一个更合适的抽象层次,也正是代理真正向外部世界作出承诺的那个层次。

Sources