动作级实时护栏与中断机制

· 2026-10-20 22:00 · 36 阅读

原创 pandazhengzheng 2026-10-20 22:00 广东

目录

  • 1. 引言与问题定义

  • 2. 形式化模型

  • 3. 攻击与威胁模型

  • 4. 防御机制设计

  • 5. 形式化安全分析

  • 6. 系统架构与Python实现

  • 7. 评估框架与实验设计

  • 8. 前沿挑战与开放问题

  • 参考文献


1. 引言与问题定义

1.1 背景与动机

大语言模型(LLM)驱动的自主Agent系统正在从单轮对话工具演变为具备长时程、多步骤、多工具调用能力的自主执行体。在这一演进过程中,Agent不再仅仅生成文本,而是将模型输出映射为真实世界的动作(action)——文件系统操作、网络请求、代码执行、数据库读写、Shell命令调用、API调用乃至物理设备控制。每一个动作都可能对系统状态、数据机密性、服务可用性产生不可逆的影响。

传统的安全防护范式——如输入过滤、输出审查、沙箱隔离——主要作用于Agent与外部世界的边界,属于"粗粒度"的防护。然而,Agent执行链(execution chain)中的安全风险具有以下特征:

  1. 动作链组合爆炸:单个动作看似无害,但动作序列的组合可能产生危险效果。例如"创建文件→写入内容→修改权限→执行"这一链条中,每一步单独检查都可能通过,但组合起来构成了任意代码执行。

  2. 上下文依赖性:同一动作在不同上下文下安全等级不同。os.remove("/tmp/cache")在清理临时文件时安全,但在Agent被提示注入操纵后可能变为os.remove("/")。

  3. 实时性约束:Agent的执行节奏由模型推理速度驱动,通常每个动作间隔在百毫秒到秒级。护栏检查必须在此窗口内完成,否则将破坏Agent的交互流畅性甚至导致超时。

  4. 中断的原子性:一旦危险动作开始执行(如已发出网络请求),中断可能无法完全阻止其副作用。因此中断必须在动作提交到执行引擎之前完成,这要求护栏具有"预执行"(pre-execution)拦截能力。

动作级实时护栏(Action-level Real-time Guardrails)正是针对上述挑战设计的安全机制。其核心思想是:在Agent执行链中的每个动作被提交到执行引擎之前,插入一个轻量级、低延迟的安全检查层,对动作进行分类、评估,并在必要时实时中断执行。

1.2 问题定义

核心问题:给定Agent执行链 ,其中每个  为一个动作,如何设计一个护栏函数 ,满足:

  • 低延迟: 的执行时间 ,目标 ;

  • 高覆盖: 能覆盖所有预定义的危险动作类别 ;

  • 完备性:对于任何属于  的动作, 必须返回 ;

  • 最小误报:对于安全动作, 误报为  的概率 ;

  • 上下文感知: 的决策依赖执行上下文 ,包括历史动作、当前状态、用户意图等。

中断机制:当  返回  时,需要:

  1. 阻止  的执行;

  2. 通知Agent运行时(Runtime)采取恢复策略;

  3. 记录中断事件用于审计与后续分析;

  4. 可选地触发更高层的安全响应(如暂停整个会话、通知人类管理员)。

1.3 与相关概念的关系

概念

作用层级

时机

粒度

输入过滤

对话层

用户输入时

粗粒度

输出审查

对话层

模型输出时

粗粒度

沙箱隔离

系统层

执行环境

粗粒度

动作级护栏动作层动作提交前细粒度

能力令牌

权限层

能力请求时

中粒度

动作级护栏处于"对话层"与"系统层"之间,是连接Agent推理与物理执行的最后一道安全关卡。它与能力令牌(Capability Token)机制互补:能力令牌控制"Agent能做什么"(静态权限),动作级护栏控制"Agent此刻能做这个吗"(动态检查)。

1.4 本文贡献

本文在以下方面做出贡献:

  1. 形式化模型:提出动作级护栏的形式化模型,包括动作分类代数、护栏函数的数学定义、中断语义的形式化。

  2. 威胁模型:系统化分析针对Agent执行链的攻击面,包括直接危险动作、组合危险动作链、上下文操纵触发的危险动作。

  3. 防御机制:设计三级动作分类器(安全/可疑/危险)、预计算安全策略表、基于硬件中断的快速中断机制、上下文感知检查器。

  4. Python实现:提供完整的、可运行的Python实现(500+行),包括护栏核心引擎、动作分类器、中断处理器、上下文管理器、审计日志系统。

  5. 评估框架:设计覆盖延迟、准确率、中断有效性的评估指标与实验方案。


2. 形式化模型

2.1 动作空间定义

定义 2.1(动作):一个动作  是一个六元组:

其中:

  • :动作名称, 为动作名称空间(如 file.write, http.post, shell.exec);

  • :动作参数(键值对);

  • :动作作用目标(文件路径、URL、进程ID等);

  • :动作预期效果描述(副作用类型与程度);

  • :执行上下文(调用栈、历史动作、环境状态);

  • :动作发起时间戳。

定义 2.2(动作空间):动作空间 ,其中  为名称为  的所有可能动作实例的集合。

定义 2.3(动作分类):动作分类函数 ,将动作在给定上下文下映射到三个类别:

  • (Safe):安全动作,允许执行;

  • (Questionable):可疑动作,需要额外检查或人类确认;

  • (Dangerous):危险动作,必须中断。

2.2 执行链与状态转移

定义 2.4(执行链):Agent执行链是一个动作序列 ,其中每个  在系统状态  上执行,产生新状态 :

定义 2.5(护栏拦截执行):引入护栏后的执行链变为:

其中  为中断恢复函数, 为动作修改函数(如参数净化)。

2.3 护栏函数的数学定义

定义 2.6(护栏函数):护栏函数 ,其中:

护栏函数由多个子检查器组合而成:

其中每个  为一个原子检查器(如路径检查器、参数检查器、频率检查器), 为聚合策略(如最严格策略、加权投票)。

2.4 中断语义

定义 2.7(中断):中断是一个事件 ,表示在时间  对动作  执行了中断,原因为 ,严重性为 。

定义 2.8(中断原子性):中断是原子的,当且仅当:

即中断发生当且仅当动作未被执行且中断事件被记录。

定义 2.9(中断及时性):中断是及时的,当且仅当中断决策在动作提交前完成:

2.5 预计算安全策略表

为满足低延迟要求,护栏的大部分决策通过预计算的安全策略表(Pre-computed Safety Policy Table, PSPT)完成。

定义 2.10(PSPT):PSPT 是一个映射 ,其中  为参数模式(如通配符、正则表达式)。PSPT 在系统初始化时构建,运行时通过  或  查找完成决策。

定理 2.1(PSPT 查找复杂度):若 PSPT 以哈希表组织,则平均查找时间为 ;若以有序表组织,则查找时间为 ,其中  为表项数量。

2.6 上下文感知检查

对于无法通过 PSPT 静态决策的动作,需要上下文感知检查。

定义 2.11(上下文):执行上下文 ,其中:

  • :历史动作序列 ;

  • :当前系统状态(文件系统快照、网络连接、进程列表);

  • :用户意图估计(从对话历史推断);

  • :环境配置(安全策略、白名单、黑名单)。

定义 2.12(上下文感知护栏):上下文感知护栏  利用上下文信息进行决策:

其中  为决策组合算子(如取最严格结果)。

2.7 动作链分析

单个动作的安全检查不足以覆盖组合危险,需要动作链分析。

定义 2.13(动作链危险):动作链  是危险的,当且仅当:

即存在一个子序列,其中每个动作单独非危险,但组合效果属于危险链类别 (如"写入+执行"构成任意代码执行)。

定义 2.14(滑动窗口链检查):为平衡延迟与覆盖,使用滑动窗口  对最近  个动作进行链分析:


3. 攻击与威胁模型

3.1 威胁模型概述

我们考虑一个对抗性环境,其中Agent可能面临来自以下方面的威胁:

  • 外部攻击者:通过提示注入、数据投毒等方式操纵Agent行为;

  • 恶意工具/插件:Agent调用的第三方工具可能包含恶意逻辑;

  • 模型自身缺陷:模型可能因对齐不足、幻觉等原因产生危险动作;

  • 环境 compromise:Agent运行环境可能被部分攻破。

攻击者能力假设:

  • 攻击者可以控制Agent的部分输入(如工具返回的数据);

  • 攻击者无法直接控制Agent的模型权重或护栏策略表;

  • 攻击者可以观察Agent的公开输出。

3.2 攻击类型分类

3.2.1 直接危险动作

攻击者通过提示注入诱导Agent直接执行危险动作。

跳转微信打开

本文转载自微信公众号「安全分析与研究」,查看原文。版权归原作者所有,如有侵权请联系删除。