文章总结: 微软AGT工具实测:以确定性代码治理AIAgent工具调用,每次动作经策略引擎、身份验证和防篡改审计,全栈开销仅0.069毫秒。映射OWASP智能体十大风险7项全控3项部分,但存在中间件层局限、跨会话攻击盲区、提示注入检测弱等短板。适合需为Agent加护栏的团队,建议先接策略与审计再逐步扩展。
综合评分: 88
文章分类: 安全工具,ai安全,安全建设,安全运营
「AI Agent安全治理实测」微软AGT:OWASP智能体十大风险映射,0.07毫秒拦下危险工具调用
原创
句芒安全实验室
句芒安全实验室
句芒安全实验室
2026年9月23日 21:33
上海
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
昨天句芒讲的是 open·kritt——让 AI Agent 自己去挖漏洞。今天反过来看另一面:Agent 自己就是最大的攻击面,谁在管它。
先摆一个很多人都听过的说法:在提示里写一句”不要做危险操作”,就算安全防护了。OWASP 的 LLM01:2025 把这句话直接否掉,原文写的是”目前不清楚是否存在万无一失的提示注入防护方法”。数字也支持这个判断:Andriushchenko 等人在 ICLR 2025 的论文里,用带 logprob 访问的自适应攻击加后缀优化,在 GPT-4o、GPT-3.5、Claude 3、Llama-3 上拿到了 100% 的攻击成功率,评测基准是 JailbreakBench。微软自己红队过 100 个生成式 AI 产品,总结里也留了一句”缓解措施无法完全消除风险”。
提示层面的安全,不是控制面。它只是对一个随机系统说”请守规矩”。
今天句芒深推的工具,就是冲着这句话来的:Agent Governance Toolkit(AGT),仓库 microsoft/agent-governance-toolkit。
先核身份
按老规矩,发布前用 GitHub API 当天核实:6317 颗星、1126 个 fork,Python 为主,MIT 协议。2026 年 3 月 2 日建仓,最近一次推送是 2026 年 9 月 23 日——就是今天,仓库还在动。最新 release 是 v4.1.0(2026-06-09)。README 开头自己挂了一行重要提示:Public Preview,GA 之前可能还有破坏性变更。
一句话定位:它不打算在提示里赢下这场攻防,而是把 Agent 的每一次工具调用、消息发送、任务委派,拦在确定性代码里——模型意图上线之前,就已经被判定过能不能放行。
它要回答的三个问题
README 开头就把问题列成三句。
第一,这个动作被允许吗? 一个能调 send_email 和 query_database 的 Agent,不该有能力 drop_table。OAuth scope 和 IAM role 管的是 Agent 能连到哪些服务,管不了它连上之后干什么。
第二,是哪个 Agent 干的? 多 Agent 系统里五个 Agent 可能共用一把 API key,出事之后”有个 Agent 干的”不算事件响应。
第三,能不能证明发生了什么? 审计和监管要的是每一次决策的防篡改记录:当时生效的是哪条策略、Agent 请求了什么、为什么被放行或被拒绝。
AGT 的答案是把这三件事做成确定性代码。
机制:每一次调用都过一遍策略
链路是:Agent 动作 → 策略引擎(YAML/OPA/Cedar)→ 身份(SPIFFE/DID/mTLS)→ 审计日志(防篡改)→ 放行执行,或拒绝并抛 GovernanceDenied → 决策记录(Decision Record)。每一层都是可选的,先从 govern() 起步,风险涨了再加层。
上手两行:
from agentmesh.governance import govern
safe_tool = govern(my_tool, policy="policy.yaml") # 每次调用都检查、记录、执行
策略文件是一份 YAML:默认放行,block-destructive 规则把 drop、delete、truncate 判为 deny,require-approval-for-send 规则把 send_email 变成需要 security-team 审批。调 safe_tool(action="read", table="users") 正常返回;调 safe_tool(action="drop", table="users") 直接抛 GovernanceDenied。
README 里有一句定位值得抄下来:被内核拒绝的动作不是”不太可能发生”,而是”结构上不可能发生”。这就是”请求 Agent 守规矩”和”让 Agent 没有能力不守规矩”的差别。
组件拆开看,每个都能单独装:Agent OS(策略引擎、生命周期、治理门)、Agent Control Specification(无状态、确定性、fail-closed 的策略决策运行时,Rust 核心)、Agent Mesh(发现、路由、信任网络,Ed25519/SPIFFE 证书、0-1000 信任分)、Agent Runtime(四层特权环的执行沙箱)、Agent SRE(kill switch、SLO、混沌测试)、Agent Compliance(OWASP 校验、策略 lint)、Agent Hypervisor(执行审计、delta 引擎、命令黑名单)。另有 MCP 安全网关(工具投毒、漂移监控、仿冒名、隐藏指令扫描)、影子 AI 发现(在进程、配置、仓库里找没登记的 Agent),以及一个 12 向量的 PromptDefense 评估器。
SDK 覆盖 Python、TypeScript、.NET、Rust、Go 五种语言;开发面直接做成了 Claude Code 插件、Copilot CLI 和 OpenCode 的安装包;框架侧对 OpenAI Agents SDK、LangGraph、CrewAI、Google ADK、LlamaIndex、Dify 等都有适配。核心包不依赖 Azure,MIT 协议,agt doctor 可以自查本地装了哪些包、有没有云依赖。
开销实测:0.069 毫秒
这是今天最值得看的部分,也是句芒推荐它的主要原因——它把开销摊开写了,而不是只喊一句”亚毫秒”。
仓库 docs/benchmarks/governance-overhead.md 的实测环境是 Windows 11、13 代 i7、Python 3.12.8,每组 1000 次迭代、丢弃 100 次预热:
| 模式 | p50 | p99 | ops/sec |
| — | — | — | — |
| 无治理 | 0.0005 ms | 0.0007 ms | 2,000,000 |
| 仅策略 | 0.0086 ms | 0.0321 ms | 103,315 |
| 全栈(策略+信任+特权环+Merkle 审计) | 0.0690 ms | 0.4160 ms | 11,227 |
全栈治理单次动作开销 p50 约 0.069 毫秒、p99 约 0.416 毫秒。对照一次 LLM API 调用通常 200-2000 毫秒,这个开销在端到端里不到 0.04%。
开销花在哪,它也拆开了:Merkle 审计写入 0.047 毫秒,占 68%;策略评估(10 条规则)0.006 毫秒,占 9%;信任评估 0.004 毫秒;特权环计算加检查 0.002 毫秒,不到 3%。Merkle 审计是主要成本——如果不需要密码学级别的审计完整性,把 AuditLog 换成普通追加列表,开销掉到约 0.02 毫秒。
另外两组数字值得记:策略评估在 100 条规则时 p50 仍然不到 0.02 毫秒,随规则数线性增长;token 哈希校验 0.0008 毫秒,Merkle 链验证 100 条 0.66 毫秒,但那是离线操作,不在热路径上。
合规映射:7 项全控、3 项部分、0 项空缺
AGT 把 OWASP 2026 智能体十大风险(ASI01–ASI10)逐条映射,README 徽章上写的是 7 Full / 3 Partial,文档里也是这个数:ASI01 目标劫持、ASI02 工具滥用、ASI03 身份与权限滥用、ASI05 意外代码执行、ASI07 不安全的 Agent 间通信、ASI08 级联失败、ASI10 失控 Agent 是 Full;ASI04 Agent 供应链、ASI06 记忆与上下文投毒、ASI09 人机信任利用是 Partial。
三个 Partial 的原因文档里写得很直白:ASI04 只做了策略层的工具版本固定,没有 SBOM;ASI06 的 MemoryGuard 完整性校验是 opt-in 的,得你自己接;ASI09 只有动作绑定的审批协议和审批后端,没有通用的 UI 集成。
除此之外还对上了 NIST AI RMF 1.0、EU AI Act、SOC 2、AARM Extended(R1–R9,2026-06-14 验证)和 ATF 五要素。规范侧是 10 份 RFC 2119 正式规范加 992 条一致性测试,另有 29 份架构决策记录。
避坑:五条要提前知道
第一,它管的是中间件层,不是内核层。 策略引擎和 Agent 在同一个进程边界里。官方给的量产建议是每个 Agent 单独一个容器做操作系统级隔离。别把它当沙箱用。
第二,它管”做什么”,不管”想什么”。 文档自己列了缺口:策略允许 read_database 也允许 send_slack_message,Agent 就能先读客户名单再发到公开频道——两个动作单独看都合规。跨会话变体更麻烦:Agent 在第一个会话里写入攻击状态,在第二个会话里接着执行下一阶段,每个会话的动作都合规,整条攻击链只在会话序列上才成立。Dai 等人的论文报告,在供应链 SFT 投递下四种基座模型有 80–95% 的攻击成功率。目前的缓解只有内容策略正则拦 PII、max_tool_calls 限制调用数,序列级策略还在做。
第三,审计日志记的是”尝试”,不是”结果”。 它记下 Agent 请求了什么、治理层放行还是拒绝,但不验证这个动作在外部世界是否真的成功。
第四,自带的规则型提示注入检测器实测很弱。 仓库 benchmarks/prompt-injection/ 的 smoke 语料里,110 条攻击只抓到 7 条(召回 0.0636),170 条良性误报 16 条(FPR 0.0941);官方自己写明这不是生产检测器性能、也不是通用安全基准,并解释误报压力主要来自讨论提示注入的安全文档、培训材料这类良性文本。所以别拿它当提示注入防线。
第五,Public Preview 加包名合并,升级前先读变更说明。 v4.1.0 把 45 个包合并成 5 个发行包,旧包名只剩重定向的 stub;import agent_os 会打 DeprecationWarning,要换成 agent-governance-toolkit-core;旧的 agent_os.policies 规则模型已经移除。另外文档里那份 OWASP 映射是自我评估,不是第三方审计。
适合谁
要给已经在跑的 Agent 加确定性护栏、而不是继续往提示里加”请不要”的团队;多 Agent 共用一把 API key、需要归因和审计的团队;要过审计合规、需要防篡改决策记录的团队;以及在 Claude Code、Copilot CLI 里开发、想把治理装到开发面上的团队。如果只是本地跑个 demo 玩,这套企业级治理栈对你是过重的。
上手一行:pip install "agent-governance-toolkit[full]"(前置要求写 Python 3.10+)。先把 govern() 的策略和审计接上,再按风险逐步加信任网络、特权环和 SRE——大部分团队只跑策略加审计就够了。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:句芒安全实验室 句芒安全实验室
句芒安全实验室《「AI Agent安全治理实测」微软AGT:OWASP智能体十大风险映射,0.07毫秒拦下危险工具调用》