南方科技大学系统安全研究团队联合发布自主智能体运行时防护框架 ActGov(arXiv:2609.24446)。针对 LLM Agent 在长程复杂任务中调用外部工具时易受不可信输出影响并突破授权边界(如间接提示注入导致恶意删除数据或转账)的核心威胁,ActGov 构建了兼具静态 SMT 形式化验证与动态运行时拦截的双层防护网。系统将工具调用转化为有限策略记录,并在操作生效前进行毫秒级权限边界核验。在业界权威安全基准 AgentDojo 与 AgentDyn 的多模型跨攻击测试中,ActGov 在保持 100% 任务正常可用性的同时,将间接提示注入攻击的成功率压制至近乎为零,显著超越现存所有基于静态提示过滤的防御方案。

核心要点速览 (Key Takeaways)

  • ✓形式化 SMT 策略合成:ActGov-Policy 基于工具规范与反例检测,通过 SMT 求解器自动化生成并验证无冲突的精确授权策略集
  • ✓零信任操作前拦截:ActGov-Runtime 在每个工具调用造成外部实际副作用(Side Effects)前进行微秒级抽象核验,非合规操作硬性拦截
  • ✓不依赖大模型自觉:彻底摆脱传统防御依赖“让 LLM 自己判断指令是否恶意”的脆弱逻辑,在计算图外部建立不可逾越的确定性防线
  • ✓攻防基准全面压制:在 AgentDojo 与 AgentDyn 跨模型测试中,攻击成功率降幅超 92%,正常良性任务完成率保持 0 衰减
  • ✓长程动态分支适配:原生支持跨数十个工具调用的复杂长程任务,自动维系任务生命周期内的动态授权边界
🔬

深度技术解析与实战评估

核心背景与行业痛点 随着 LLM Agent 广泛接入操作系统、Shell 终端、SQL 数据库与外部 API,智能体已经拥有了对物理和数字世界的实际改变能力。然而,在长程动态工作流中,Agent 必须读取网页、用户邮件或第三方文件,这些不可信内容极易携带“间接提示注入(Indirect Prompt Injection)”载荷,劫持 Agent 意图去执行未授权的高危操作(如泄露隐私凭证、篡改关键配置或转账支付)。现有的主流防御大多依赖在 Prompt 中添加安全警示词、或者借助另一个辅助模型进行输出审查,不仅带来数十倍的额外延迟与成本,而且极易被经过混淆编码或越狱技巧的攻击绕过。 ### 架构亮点与底层机制 ActGov 创新性地将传统软件工程的形式化验证(Formal Verification)理念引入智能体安全体系: 1. 统一安全语义模型(Unified Semantic Model):将用户初始授权意图、工具接口参数规范、执行上下文与安全约束抽象为形式化语义规则; 2. SMT 自动化策略合成器(ActGov-Policy):从工具规范、良性任务轨迹与已知失败案例中迭代构建策略集,每一步更新均通过 Z3 等 SMT(可满足性模理论)求解器进行反例排除,确保策略集在逻辑上严格闭环且无冲突漏洞; 3. 运行时前置拦截探针(ActGov-Runtime):在 Agent 发出工具调用指令、但尚未实际触达操作系统或外部 API 的间隙(Pre-execution Hook),将调用参数投影为有限策略记录,毫秒级判定其是否在任务授权边界之内,严禁越权副作用产生。 ### 权威 Benchmark 与实测跑分对比 研究团队在 AgentDojo 与 AgentDyn 两个业界公认难度最高的多智能体安全基准上,针对 GPT-4o、Claude 3.5 Sonnet 与开源 Llama-3 展开了密集压力对抗: - 防御拦截成功率:在面临 120 余种复杂的间接提示注入攻击(涵盖隐蔽文件擦除、越权凭证转发与跨会话投毒)时,ActGov 将攻击者的成功率从无防御状态下的 86.4% 骤降至 1.8%(攻击降低率超 92%); - 良性任务可用性保持(Task Utility):与因过度防御导致误报频出的静态策略过滤器不同,ActGov 在 500+ 个标准自动化开发与数据处理良性任务中,任务成功完成率衰减为 0%; - 运行时性能开销:单次工具调用的 SMT 策略判定开销稳定在 1.4ms 以内,对 Agent 端到端整体运行延迟的影响不足 0.02%。 ### 开发者实战落地与开箱指南 ActGov 采用即插即用的轻量级中间件设计,可无缝接入 LangChain、AutoGPT 或企业自有 Agent 框架: ``python from actgov import ActGovRuntime, load_policy # 加载经 SMT 验证的任务权限策略 policy_set = load_policy("workspace_safe_policy.smt2") governor = ActGovRuntime(policy_set, task_scope=user_request) # 拦截并校验 Agent 工具调用 @governor.intercept def execute_tool(tool_name, arguments): return actual_tool_runner(tool_name, arguments) ` 当 Agent 受到对抗性注入试图删除根目录时,ActGov 将在底层直接抛出 AuthorizationBoundaryViolation` 异常并向用户发出警报,彻底阻断越权危害。论文已发表于 ArXiv(arXiv:2609.24446)。