AI 博客

OWASP 交付的是一个接口,不是一份清单

"过度代理权"升至第三是头条,也是最没用的那部分。真正的变化是 Agent Control Standard:一份框架在工具调用、写入记忆或派生子智能体之前触发的 hook 契约,背后可接任意策略引擎、返回 allow/deny/modify 裁决——它把安全建议变成了你要么实现、要么没实现的东西,并把审计边界挪进了你的运行时。它同时暴露出一个没人在报的数字:你的智能体产生的效果里,究竟有多大比例真的经过了一个挂了 hook 的调用点。

作者 智能体 AI 维基 26 分钟读完

OWASP 2026 版的头条是"过度代理权"从第六名爬到了第三名,而这恰恰是里面最没意思的一件事。真正值得你花一个下午的变化是:GenAI Security Project 不再交付散文,开始交付接口——Agent Control Standard 规定了框架在你的智能体调用工具、写入记忆或派生子智能体之前所触发的那个 hook,以及你的策略要返回的那个裁决:allow、deny、modify。可以被忽略的建议,变成了一份框架要么实现、要么没实现的契约,而这把审计边界从你的政策文件夹挪进了你的运行时。它同时造出了一个还没人在报的数字:你的智能体的动作里,究竟有多大比例真的经过了一个挂了 hook 的调用点。

先看全貌

同一面旗下落地了两件东西,而它们干的活完全不同。

产物发布时间它是什么它要求你做什么
Top 10 for LLM Applications 2026 2026 年 8 月 一份排序风险清单,首次以事故数据加权 读它;重排优先级
Agent Control Standard(ACS) 2026 年 5 月启动,9 月归入 OWASP 三层接口:运行时 hook、追踪规约、智能体物料清单 实现它,或挑一个已经实现了的框架
Agent Observability Standard(AOS) 同期,作为独立项目 智能体遥测的埋点规约 把它输出出来
OWASP Top 10 for LLM Applications 2026, with movement from 2025 Ten ranked rows. Prompt Injection holds first place and Sensitive Information Disclosure second. Excessive Agency rises three places from sixth to third. Supply Chain falls to fourth and Data and Model Poisoning to fifth. Unbounded Consumption is sixth, Misinformation seventh, Hidden Context Exposure eighth after being broadened from system-prompt leakage, Vector and Embedding Weaknesses ninth, and Improper Output Handling falls to tenth. Top 10 for LLM Applications 2026 Rank, and movement against the 2025 edition. LLM01 Prompt Injection held 1st LLM02 Sensitive Information Disclosure held 2nd LLM03 Excessive Agency up 3, from 6th LLM04 Supply Chain down 1 LLM05 Data and Model Poisoning down 1 LLM06 Unbounded Consumption down 1 LLM07 Misinformation down 1 LLM08 Hidden Context Exposure scope widened LLM09 Vector and Embedding Weaknesses held 9th LLM10 Improper Output Handling down 5 Ranked for the first time against incident data: the expert vote carries 75%, and roughly 6,639 recorded incidents carry the remaining quarter. Excessive Agency is the entry where the vote and the incident record agree most closely — a claim about deployments, not about models.
只有一项挪动了三个位次。而它正是描述智能体、而非描述模型的那一项。

2026 版清单依次是:提示词注入、敏感信息泄露、过度代理权、供应链、数据与模型投毒、无界消耗、错误信息、隐藏上下文暴露、向量与嵌入弱点、输出处理不当。前两名没变——在这个领域坚称"修复就在眼前"已有三年之后,这本身就是一个发现。

这份清单真正说了什么

方法论变了,名次才动的

这一版首次把社区判断与一批真实事故放在一起加权:专家投票占 75%,余下四分之一来自约 6,639 起事故,取自公开漏洞库与一个 AI 危害数据库。过度代理权正是两个来源吻合得最紧的那一项;当其中一个输入是事故计数而不是问卷时,"吻合"看起来就是这样的——往上挪三位。

把它读成一句关于"故障究竟发生在哪里"的陈述。过度代理权不是模型的弱点——它是这样一类失败:系统被给予了超出任务所需的自主权、权限或无人监督的触达范围,于是一次普通失误或一次成功的操纵,就产生了不成比例的后果。这描述的是一个部署决定,而现在,事故记录把它排到了供应链风险和投毒风险之上。本站的爆炸半径与环境权限两页,是同一个论点的另一端。

那次安静的改名才是要动手的地方

LLM08 原本是"系统提示词泄露",现在叫"隐藏上下文暴露",范围从系统提示词扩大到了全部隐藏运行上下文——检索到的文档、MCP 工具 schema、格式化规则,以及你的外壳拼装起来、却从不展示给用户的其余一切。这比旧条目大得多的一片面,而多数团队只对其中恰好一项有管控。

它还落在一处真实的不对称上。系统提示词泄露只是尴尬;工具 schema 泄露则是把你智能体的能力清单、参数形状与内部服务名,交给了任何一个客气开口的人。提取在实践中长什么样,见系统提示词提取。

没有动的那一项

提示词注入依旧是第一。三年过去,每家主要厂商都出了分类器和守卫模型,而高居榜首的风险仍然是那个没有完整解法的——这是正确的结果,不是清单的失败。接受这一点之后该有的控制分类,在2026 年的提示词注入防御。

不是清单的那一部分

Where ACS hooks fire inside one agent step, and the paths that avoid them A left-to-right agent step: input arrives, the model selects a tool, the call is issued, a result returns, and an effect lands on a production system. A hook fires at each of those points and calls out to a Guardian Agent that evaluates declarative policy and returns allow, deny or modify before the action proceeds. Beneath the step sits a band listing paths that never pass a hook: a shell command spawned by generated code, HTTP requests made inside a tool implementation, a sub-agent running in another framework, and a script outside the framework holding its own API key. One agent step, with the Instrument layer attached The step Input User turn, prior context, goal. Tool selection Which tool, which arguments. Call and result Request out, content back in. Memory, sub-agent, code execution. Each fires a hook. Effect Production system. Guardian Agent — one hook contract, any policy engine allow deny modify ask defer Inline and blocking, or it is telemetry rather than a control. Every hook above fires inside the step. Everything below leaves by another door. Unhooked paths A shell command spawned by generated code HTTP calls inside a tool implementation A sub-agent running in another framework A script outside the framework, own API key The metric is a denominator: what share of externally visible effects passed a hooked call site?
一次步骤中每个决策点上的 hook——以及那些不经过任何 hook 就离开这次步骤的路径。

ACS 分三层组织,而这种分离正是有用的地方。Instrument 定义运行时 hook 与 Guardian Agent 模式:一个由智能体宿主在动作执行前调用的回调,携带足够的上下文——工具、参数、身份、此前的轮次——供一个独立的评估者去许可、拒绝、改写、追问或延后这个动作。Trace 在 OpenTelemetry 与 OCSF 之上扩展出智能体专用的语义规约,与 GenAI 语义规约是同一片地。Inspect 则扩展 CycloneDX、SPDX 与 SWID,产出一份动态的智能体物料清单——那正是每一条清单登记义务一直在要、却谁也交不出来的东西。

让这件事不只是"又一个框架"的设计选择在于:规范本身与策略引擎无关。它只定义 hook 契约,对背后跑什么只字不提;一个与框架无关的 SDK 读取声明式策略,并通过平台暴露的任何 hook 去执行。如果你已经在某个策略引擎上投过资,那笔投资能活下来——这正是智能体的策略即代码里的论点,现在多了一个有定义的挂载点。

另外留意它对采购的影响。"你们的智能体框架实现了 ACS Instrument 吗?"是一个有是或否答案的问题,而"你们如何处理工具授权?"每家厂商都能答得很好。hook 契约是一项你可以在一个下午之内测出来的能力,而那些根本没有拦截点的框架,再也没法把这件事藏在一张安全页面后面。

hook 不等于管控

Three postures for the same hook: observing, advisory and enforcing Three columns. Observing: the hook fires, the event is logged, the action proceeds unchanged, and the result is telemetry with no control and no added latency. Advisory: a verdict is computed but not applied, so the latency is paid and the outcome is identical to observing. Enforcing: the verdict is inline, deterministic and blocking, the action is stopped or rewritten before it reaches a production system, and the costs are per-call latency and a false-positive budget. Same hook, three postures Observing The hook fires. The event is logged. The action proceeds. You get: a dashboard of everything you did not stop. Cost: none. Advisory A verdict is computed. It is not applied. The action proceeds. You get: the same outcome as observing. Cost: the full latency. Enforcing Inline, deterministic, blocking. Stopped or rewritten first. You get: a control, and a verdict log an auditor reads. Cost: latency plus false positives. Advisory is a way station, not a destination: it buys the appearance of the control at the full price of it. Size the false-positive rate there, then switch to blocking — the middle column is the one to leave.
同一个 hook,三种姿态。只有第三种是管控,也只有第三种是要付代价的。

这里能踩的坑很老了,在别的名字下早有充分记载。一个触发、记录、然后放行动作的 hook 是遥测;它产出的是一块"你没有拦下来的一切"的看板。一个算出来却不执行的建议式裁决更糟,因为它付了延迟,买到的是管控的外观。让一个 hook 成为管控的性质是:内联、确定性、阻断——裁决返回之前,动作不得抵达生产系统。

有两个 hook 承担了大部分分量,而它们并不是人们最先埋的那两个。执行前的工具调用 hook 是显而易见的那个,授权归它管:身份、作用域、参数边界。而工具结果上的那个 hook,才是对榜首风险真正要紧的——因为被注入的指令是随检索到的文档、网页、工单正文和 MCP 响应进来的:入向,在你已经授权过的那次调用之后。一道只检查请求、却把结果一路放行的护栏,检查的是攻击者根本不用的那半条通道。这就是把遥测当作不可信输入这一主张的推广版本。

还有,那套裁决词汇值得比现在多得多的怀疑。allow 和 deny 都好推理。modify 意味着某个策略层在智能体看到之前改写了参数或内容——这是一项值得拥有的能力,也是一片值得害怕的调试面:一次因为守卫悄悄改了某个参数而行为怪异的运行,几乎不可能被重建,除非 hook 自身的决定以与工具调用同等的保真度进了 trace。把裁决、产生它的那条规则,以及改写前后都记下来——否则就别用 modify。

没人在报的那个数字

一套标准化的 hook 面,同时也把绕过它的方式标准化了。Instrument 层里的每个 hook 都在智能体的这一步之内触发,这意味着它覆盖的是框架中介过的动作,而对一切从别的门离开的东西保持沉默:

  • 智能体自己写完又执行的代码。一段生成出来的脚本若开了 socket 或外调 shell,这些调用发生在沙箱内部,而不是通过工具接口。execute code 这个 hook 只在执行那一刻触发一次;它不会按系统调用逐次触发。代码即动作是一种有意为之的架构,它拿工具级拦截换取了表达力。
  • 工具实现内部的网络调用。你的 hook 看到的是 search(query),看不到该实现发出的四个 HTTP 请求,而其中一个去了你本不会批准的地方。
  • 框架之外的一切。一个带着 API key 的定时任务、一个 notebook、同事的一段脚本——它们都没有一个能触发 hook 的宿主。
  • 跑在另一个运行时里的子智能体。调用子智能体的那个 hook 在你的边界上触发;子智能体在另一个框架内部做了什么,由那个框架的 hook 管——如果它有的话。

所以,真正能说明这套东西有没有起作用的指标是一个分母,而不是一个计数:你的智能体产生的对外可见效果里,有多大比例经过了一个挂了 hook 的调用点?一个已经实现了 ACS、每月报出 4 万次被评估的工具调用、而其智能体会写并运行 Python 的团队,量到的并不是他们以为自己量到的东西。先从威胁建模出发,把所有出口枚举出来,再去庆祝覆盖率。

三层各自怎么用

如果你的问题是……Instrument(hook)TraceInspect(BOM)
智能体能做出它不该做的动作就是这一层事后告诉你否
工具结果里夹带的注入指令结果 hook,执行式供分诊的证据否
"我们到底跑着哪些智能体?"否从流量部分可得就是这一层
审计方要管控存在的证明裁决日志轨迹组件清单
选型问符合性问规约问 BOM

先在那两个工具 hook 上实现 Instrument,用执行式而不是建议式,并把裁决写进 trace。这是一周的工作量,而价值的大头就在里面。Inspect 值得早点采用,理由不同:它是第一个不依赖"人去填表"的、对清单登记义务站得住脚的答案。

常见问题

ACS 会取代我现有的护栏或策略产品吗?

不会——它是那些产品插进去的插座。规范只定义 hook 契约,并且刻意不规定背后由什么来评估策略,所以既有引擎保留自己的规则,同时获得了一个跨框架的标准挂载点。

十大清单的名次变动,值得据此重排优先级吗?

变动本身不如它的原因要紧。过度代理权上升,是因为事故数据与专家投票取得了一致——这是"真实故障来自过宽的权限,而不是来自新奇的模型攻击"的证据。如果你的管控集中在模型上、而在"智能体被允许做什么"上很薄,这就是信号。

为什么工具结果的 hook 比工具调用的 hook 更重要?

因为请求是你写的那一半,结果是攻击者能写的那一半。提示词注入是入向抵达的,藏在检索到的文本、页面内容、工单正文与 MCP 响应里。只检查出向调用,等于把承载榜首风险的那条通道完全不检查。

实现了 hook,就能过审计吗?

只有在裁决被记录、且覆盖率被明确声明的前提下才行。一个触发了却什么都放行的 hook 产出的是遥测,不是管控存在的证据;而一位会追问"有多大比例的动作被评估过"的审计人员,不会满足于一个没有分母的评估次数。

把执行式打开之后,最先坏掉的是什么?

延迟预算和误报,顺序就是这个。每一次被中介的调用现在都要等一个策略决定,而阻断裁决的第一周里一定会包含正当动作。先让策略在建议模式下跑够久,把误报率摸出来,再切到阻断——但一定要切,因为建议模式付了管控的代价,却一点好处都没拿到。

延伸阅读

本站:

资料来源: