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

AgentTrust:在执行前审查智能体的工具调用

2026 年 5 月 6 日的一篇预印本提出 AgentTrust——一个在每次工具调用执行前进行检查的运行时层,返回放行 / 警告 / 拦截 / 复核,并能识别被混淆的 shell 载荷。

2026-06-08 // 5 min

这是什么?

2026 年 5 月 6 日,一篇题为 AgentTrust: Runtime Safety Evaluation and Interception for AI Agent Tool Use(arXiv:2605.04785)的预印本,针对当月不断暴露的一类问题提出了防御方案:AI 智能体如今会产生真实的副作用——文件操作、shell 命令、HTTP 请求、数据库查询——而单一一次不安全的动作(误删、凭据泄露、文件外泄)就可能造成不可逆的损害。AgentTrust 位于智能体与其工具之间,在每次调用执行之前判定是否放行。

该工作被 Adversa AI 的 2026 年 6 月智能体安全综述列为当月值得关注的防御之一。其动机十分具体:同一时期,微软记录了提示注入如何通过模型可调用函数到达主机级远程代码执行。如果注入能把提示变成 shell,那么最后一道防线就是审查智能体即将执行的那个动作的环节。

工作原理

AgentTrust 是一个运行时拦截层。智能体尝试的每一次工具调用都会被暂停、评估,并在执行前被赋予四种结构化裁决之一——放行、警告、拦截或复核。论文认为,这弥补了人们通常依赖的三类防御各自的不足,而这三类防御单独使用都不完整:

Existing control        What it does                      Where it falls short
----------------------  --------------------------------  ------------------------------------
Post-hoc benchmarks     Measure agent behavior            Judge after the action already ran
Static guardrails       Pattern-match inputs/outputs      Miss obfuscation and multi-step context
Infra sandboxes         Constrain WHERE code runs         Don't understand WHAT an action means

为弥合这一缺口,AgentTrust 组合了四个组件。shell 去混淆规范化器会还原用于躲避朴素模式匹配的各种把戏——变量展开、十六进制/八进制转义、别名解析、命令替换、ANSI-C 引用、相邻引号拼接——使裁决针对命令的真实行为,而非它的写法。SafeFix 是一个基于规则的引擎,它不只是拦截,还会为高风险调用给出更安全的替代方案。RiskChain 跨步骤审视,以捕捉逐次调用看似无害、合起来却构成攻击的多步攻击链。而带缓存的 LLM 裁判处理规则无法判定的模糊输入,缓存使延迟保持在低位。

在论文自建的 300 个场景基准(六类风险)上,仅生产规则集报告了 95.0% 的裁决准确率和 73.7% 的风险等级准确率,端到端延迟为毫秒量级。在另一组 630 个真实对抗场景上——在打过补丁的规则集下评估、且明确宣称为 zero-shot——报告了 96.7% 的裁决准确率,其中对被混淆 shell 载荷约为 93%。这些数字出自作者本人;与任何单篇论文的评估一样,宜视为起点,而非独立保证。

为何重要

智能体的威胁模型已从”模型说了什么”转向”模型做了什么”。2026 年不断累积的披露——编码智能体 RCE、提示注入到 shell 的攻击链、被投毒的工具与记忆记录——有一个共同原因:智能体被允许执行某个动作,而无人检查其真实效果。一个能理解工具调用含义、对其去混淆并能予以否决的层,正是对这一类失效的直接回应。

同样重要的是,AgentTrust 以 Model Context Protocol 服务器形式、在 AGPL-3.0 许可下发布。这使其能放在兼容 MCP 的智能体前而无需重建它们,去混淆规则也保持可审计而非黑箱。其代价是任何在线防护都有的取舍:每一次误拦合法动作都会带来摩擦,而自信却错误的”放行”比没有防护更糟;因此裁决质量与误报率决定了团队是否会持续启用它。

防御

AgentTrust 本身就是一种防御控制。对运行带工具智能体的团队,实务要点如下:

  1. 要中介工具调用,而非仅做沙箱。 沙箱限制代码在哪里运行;动作级中介决定某次调用是否应当运行。两者并用——它们覆盖不同的失效。

  2. 先规范化再判定。 任何基于命令原始文本的放行/拒绝决策,离出错只差一个混淆技巧。请对 shell 输入去混淆(变量展开、十六进制/八进制转义、别名、命令替换、引用技巧),再评估其规范形式。

  3. 对序列而非单次调用进行推理。 多步攻击链可能逐步无害、合起来却是外泄。请保留足够上下文以捕捉整条链,而不只是孤立的一次调用。

  4. 以更安全的替代方案优先于硬性拦截。 只会拦截的防护,在第一次打断真实工作时就会被关掉。提供更安全的改写(SafeFix 的思路)能保留可用性并让防护保持开启。

  5. 对”复核”等级保留人工介入。 为那些既不宜自动放行、又不宜自动拦截的高后果动作——不可逆删除、凭据访问、对外转移——保留一个裁决,并转交给人处理。

  6. 测量你自己的误报。 厂商或论文的准确率只是起点。在生产中信任一个在线防护之前,先用你自己的流量测试它,观察它误拦了什么,因为这才决定它能否经受住与你用户的实际接触。

现状

项目参考日期备注
预印本arXiv:2605.047852026-05-06运行时拦截;裁决放行/警告/拦截/复核;AGPL-3.0,附带 MCP 服务器
综述提及Adversa AI2026-06-01归入”Agentic AI defense”
威胁动机微软安全博客2026-05-07提示注入经模型可调用函数到达主机级 RCE

结论不是”工具调用拦截解决了智能体安全”。它更为狭义:一旦智能体能够行动,需要防守的边界就是动作——而非提示——而这条边界必须理解一次调用意味着什么,而不只是它怎么写。 AgentTrust 是让这条边界落地的一次公开、开源的尝试;所报告的数字出自作者本人,因此在依赖它之前,请用你自己的流量加以验证。

Sources