可信动作清单:一种防止Agent间接越狱攻击的工程实践
介绍 PlanGuard 方案:先在隔离环境生成可信参考计划,再对每次工具调用做两层校验(硬规则+语义意图),从系统工程角度解决 Agent 间接越狱中的"工具劫持"与"参数劫持"问题。

今天要介绍的这篇论文关注的是 Agent 的间接越狱攻击。
所谓”间接”,意思是用户自己并没有说危险的话,但 Agent 在处理外部内容时,被外部内容带偏了。作者把这类攻击大致分成两种。
第一种,是工具被劫持
本来用户只是让 Agent 去读邮件、总结网页、整理资料,但 Agent 最后却被诱导去调用另一个高风险工具,比如:发送邮件、转发隐私数据、修改文件、调用支付接口、执行系统命令。
第二种,是参数被劫持
工具本身可能没问题,但传进去的参数已经变了味。比如用户原本是让 Agent 删除一个临时目录,结果恶意内容把参数改成了更危险的路径;用户原本是让 Agent 支付某张账单,结果金额、对象、账户都被外部内容悄悄篡改。
这类问题更隐蔽,因为表面上看,Agent 调用的还是那个”正确工具”,但它执行的,已经不是用户真正授权的对象了。
所以从工程角度看,Agent 安全至少要回答两个问题:
- 这一步动作本身是否应该发生?
- 这一步动作的参数,是否仍然忠于用户原始意图?
先生成一张”可信动作清单”
论文提出的方法叫 PlanGuard,本质上是一套”可信动作清单校验机制”。
核心思想一句话:先在干净环境里,单独生成一份参考计划;再拿 Agent 后续的真实动作,逐项对照这份计划。

第一步:先让一个”隔离规划器”只看用户原始任务
整个方案里最关键的设计,是先引入一个与外部内容隔离的规划器。这个规划器只允许看到两样东西:
- 用户原始指令
- 当前系统有哪些工具可用
它看不到邮件内容、网页内容、文档正文、搜索结果,也看不到工具返回值。
这样做的目的很明确:让参考计划的生成过程,不受外部污染。
这个规划器要先回答一个问题:如果系统只听用户自己的原始需求,不看任何外部内容,那么这一轮任务理论上应该允许哪些动作出现?
最终,它会生成一组参考动作,也就是一份”可信工作清单”。这份清单记录的不是最终执行结果,而是一个边界定义:这轮任务允许调用哪些工具、哪些动作大方向上是合理的、哪些工具调用本来就不该出现。
第二步:每次真实调用工具前,都先拿来核对
每当 Agent 真要调用工具时,PlanGuard 不会直接放行,而是先做一次比对:这次要调用的工具是否在清单里?如果在,参数是否合理?如果不在,直接拦截。
论文把这一步做成了两层:
第一层:硬规则校验
先做最直接的规则比对,如果 Agent 当前要调用的工具不在参考计划里,直接拦截。优点是判断明确、实现成本可控,能快速挡住高风险越界动作。但纯字符串匹配容易误伤语义等价但形式不同的参数。
第二层:语义意图校验
当工具本身没问题,但参数形式存在差异时,再交给一个额外的模型判断:这次参数变化,是正常表达差异,还是已经偏离了用户原始任务?
整个流程形成清晰分工:第一层负责守边界,第二层负责保可用性。
为什么这套方法值得关注
很多安全方案的默认思路是:模型看到了恶意内容 → 希望模型识别出来 → 希望模型拒绝执行。这条路径把太多希望押在”模型自身足够可靠”上。
PlanGuard 的思路更接近系统工程:
- 不先假设模型永远可靠
- 先假设外部内容可能污染上下文
- 把”定义执行边界”的环节独立出来
- 让真正的工具调用必须经过额外核验
它更像是在 Agent 外面补了一层执行控制面,不负责生成内容,而是负责回答:你这一步到底有没有权限做。
实验结果
论文使用了 InjecAgent 基准来评测,任务覆盖了多类工具调用场景,包括直接造成危害的操作,以及隐私数据外泄类场景。
结果:没有防护时,Agent 在间接攻击下的成功越狱率相当高。引入 PlanGuard 后,攻击成功率被显著压低。尤其是第一层硬规则,本身就能挡住大部分明显越界动作;再叠加第二层语义复核后,整体误报率也能明显下降。
Agent 安全的核心瓶颈,往往不在模型回答得好不好,而在工具调用前有没有可靠的检查关口。
局限性
- 额外开销:系统多了一套隔离规划和分层校验流程,推理次数、时延和 token 成本都会增加
- 复杂参数问题:对于”参数本身必须来自外部上下文”的场景(如按邮件里的金额付款),隔离规划器和语义核验之间存在天然张力
- 第二层仍是模型能力:语义判断能显著改善可用性,但不代表有绝对形式化的安全保证
三点启发

1. 高风险动作应该和外部内容”隔一层”
凡是涉及发信、支付、文件删除、执行命令、配置变更、向外部系统提交数据的工具调用,在进入执行层之前,最好都有一个独立的可信计划核验过程。
2. 工具权限不该只是静态白名单
传统权限控制回答的是”某个用户能不能用某个工具”;Agent 场景还需要回答”在这一轮具体任务里,这个工具这一步该不该出现”。PlanGuard 的参考计划,本质上是一种动态任务级白名单。
3. 安全校验最好分层做
先用确定性规则守住明显边界,再用语义校验处理模糊地带,最后把高风险动作接入审计、确认或人工兜底机制。这样既不会太脆,也不会太死。
这篇论文最适合用”可信动作清单”来理解:它不是给 Agent 的所有行为贴一个模糊的”安全/不安全”标签,而是提前明确这次任务允许哪些动作、合理边界在哪里、超出清单的不执行、接近边界的再复核。
内容安全护栏解决的是”说什么”;可信动作清单解决的是”做什么”。在 Agent 时代,后者的重要性会越来越高。
同专题推荐
查看专题LASM:Agent 安全的七层攻击面
论文 LASM 提出七层攻击面模型与四类时间性分类,重构 Agent 安全的分析框架:从模型层、认知层、记忆层、工具执行层、多 Agent 协同层、供应链层到治理层,揭示 Agent 安全本质是分布式系统安全问题
AgentBound:给 MCP Server 套上权限边界
MCP 解决了 Agent 接入工具和资源的标准化问题,但安全机制没有同步跟上。 MCP 规范定义了 Host、Client、Server 之间的角色和消息交互,但在实际落地中,很多安全责任被交给应用开发者和宿主应用自行处理。 结果就是,MCP Server 往往以“默认可信”的方式运行。 这和移动…
当 Mythos 成为对手:高能力 AI 的安全边界正在失效
这两天,一篇题为 《When the Agent Is the Adversary》 的论文在安全圈引发了不小关注。它讨论的不是传统意义上的提示注入,也不是常见的越狱绕过,而是一个更让人不安的问题:当高能力 Agent 不再只是“被保护对象”,而开始成为“主动对手”时,我们今天熟悉的那些安全边界,还…