Agentic 的十类风险
2025 年 12 月,OWASP GenAI Security Project 在 Black Hat Europe 和 Agentic Security Summit 上发布了第一份专门面向自主 Agent 的风险清单。它由 100 多位研究者、实践者和厂商花了一年多做出,编号用 ASI01–ASI10,版本标签是 2026。
第一份,是因为之前那份不够用。
1. 为什么 Agent 需要单独一份清单
LLM 清单(《大模型应用的十类风险》)假设的是"输入进来、文本出去"的模型。Agent 打破了这个假设,而且是在三个地方同时打破。
1.1 它会行动,不只是生成
一个被注入的聊天机器人最多说错话。一个被注入的 Agent 会用合法权限去做事:读不该读的、发不该发的、删不该删的。错误的影响从"信息不对"变成"状态被改了"。
1.2 错误会复合,不会停住
单轮对话里一个错误答案就是一次错误。Agent 链里,一个错误步骤会喂给下一个步骤、然后写进记忆、然后影响下一个 Agent。小错误被放大而不是暴露出来。
1.3 爆炸半径等于它的权限
Agent 通常跑在一个服务账号或继承的用户 token 下,持有它能调用的所有系统的权限之和。所以它的爆炸半径不是"某个功能坏了",而是"这些权限加起来能造成什么"。
审计日志上也会出问题:日志显示的是某个人或某个通用主体,而不是"Agent 在某封不可信邮件的指示下执行了这个动作"。归因是断的。
1.4 和 LLM 清单的关系
Agentic 清单扩展而非替代 LLM 清单。最典型的例子是 ASI01:它本质上等于"提示词注入 + 过度自主",被多步执行放大了。
如果团队已经按 LLM 清单做过映射,Agentic 清单是增量,不是推倒重来。两份清单重叠但互不覆盖。
2. 十条按循环位置分组
按 Agent 循环的四个位置分组,比按编号背更好记。
2.1 输入侧:ASI01 目标劫持
攻击者通过被投毒的内容改变 Agent 的目标。载体是它正常会读的东西——邮件、PDF、日历邀请、网页、RAG 检索到的文档。模型无法可靠地区分指令和数据,所以一条恶意输入就能把它导向有害动作。
公开案例是 EchoLeak(CVE-2025-32711,CVSS 9.3,2025 年 6 月由 Aim Security 披露):一封精心构造的邮件,在没有任何用户交互的情况下,让 Microsoft 365 Copilot 把内部内容拉进上下文并外发到攻击者控制的地址。微软已服务端修复,并称未发现在野利用。
值得记的不是这个具体漏洞,而是这一类:载荷是普通商业文档里的纯文本,没有恶意软件特征、没有可执行文件、没有需要沙箱的附件。SOC 常规会去抓的那些控制点,看不见它。
2.2 意图与身份:ASI02、ASI03
ASI02 工具滥用:Agent 用合法工具做不安全的事——参数被篡改、工具被链式调用、越权写入生产系统。MCP 场景下的"工具描述投毒"也在这一类。
ASI03 身份与权限滥用:Agent 继承用户会话、复用凭证、或者依赖 Agent 之间的隐式信任,导致权限提升和归因缺口。它是"非人类身份"问题的集中体现——一个 Agent 持有所有分配给它的密钥和服务账号的全部权限,就成了权限的聚合点。
2.3 执行侧:ASI05 意外代码执行
Agent 生成或执行攻击者控制的代码。自然语言到执行的路径,是传统应用安全工具根本没有预期的 RCE 通道。
这条也是"能不能直接执行生成物"这个问题的答案所在:能,就必须有沙箱;不能,就要在架构上真的断掉这条路径,而不是靠提示词说"不要执行"。
2.4 状态侧:ASI06、ASI08
ASI06 记忆与上下文投毒:往 Agent 记忆或 RAG 存储里塞恶意数据,影响之后的推理。它的可怕之处在于持久——一次污染,之后很多轮都被带偏,而且行为变化发生在初始交互很久之后。
这条和《记忆不等于上下文》直接相关:记忆是 Agent 自己写入的动态经验,写入环节必须有约束,否则一次错误就变成长期错误。
ASI08 级联失败:单点故障在多 Agent 工作流里传播放大。一个 Agent 的幻觉变成另一个 Agent 的输入,误差沿管线累积。
2.5 多智能体:ASI04、ASI07
ASI04 Agentic 供应链:被投毒的工具、插件、MCP Server、提示词模板、第三方 Agent,在运行时进入执行链。它跟传统供应链风险最大的区别是动态的——组件是在执行过程中被发现和集成的,不是部署时就固定下来的。
ASI07 不安全的 Agent 间通信:消息被伪造、篡改、拦截。多 Agent 工作流默认参与者之间互信,而这个假设在攻击者能冒充其中一个时就崩了。Agent 之间怎么发现、怎么委派本身也有规范(见《多智能体怎么分工》),但规范管的是互操作性,不管默认互信这个假设——信任仍要显式建立。
2.6 人:ASI09 人机信任利用
Agent 的输出自信、权威、像人写的,人因此不做独立验证就批准了有害动作——共享凭证、危险变更、转账。
这条的防御在 UI 侧而不在模型侧:审批界面不能让 Agent 自己起草同意文本,要过滤它生成的紧迫性话术,理由见《护栏要做在基础设施层》。
2.7 失控:ASI10 Rogue Agents
被攻陷或目标偏移的 Agent,行为偏离预期但看起来仍然合法。它可能自我重复动作、跨会话持续存在、冒充其他 Agent。
一旦漂移发生,检测非常困难——每一步单看都在权限内、格式也对。
3. 风险是连起来的
这份清单里最值得注意的一点不是任何单条,而是它们会串成链。OWASP 自己的框架给出的典型路径是:
ASI01 目标劫持 → ASI02 工具滥用 → ASI08 级联失败 → ASI09 人因过度信任而通过
只做单向量威胁建模,会漏掉绝大多数的真实攻击路径。所以威胁建模时要问"下一步是什么",而不是"这一条怎么防"。
4. 控制点挂在边界上
清单里影响最大的几条(ASI01、ASI02、ASI05)都发生在同一个位置:模型决定做什么与系统是否放行之间的那条边界。
无论你想施加什么控制,它都必须挂在那里。挂在其他地方——提示词里、模型层、输出之后再拦——都是可以绕过的。
4.1 三个可挂的位置
按 Agent 循环拆,控制可以落在:
- 输入进入上下文之前:来源标记、不可信内容隔离(这是《无状态 MCP Server 要点》里强调句柄是"名字不是能力"的同一个道理)
- 动作执行之前:白名单、参数校验、权限检查、人工确认
- 结果回灌之前:结果消毒、长度限制、是否允许进入记忆
第二处是唯一能强制生效的。
4.2 最小代理权与可观测性是一对
清单给出的框架级原则是 Least Agency(最小代理权):只授予完成任务所需的最小自主度。它是最小权限原则在"决策权"维度上的延伸。
OWASP 把它和可观测性成对提出,措辞很直白:
只有约束没有观测,是盲目的限制;只有观测没有约束,是在看着伤害发生。
这两句值得记住。只做护栏不埋点,你不知道护栏被触发了多少次、是否被绕开;只埋点不做护栏,你能完整地事后复现一次事故。
所以《护栏要做在基础设施层》和《给大模型链路装仪表》这两篇要一起看——它们不是两个可选优化项,是同一个防御姿态的两半。
5. 失控怎么发现
ASI10 的问题在于单步都合法。能用的观测信号主要是行为层面的异常:
- 动作频率:同一个工具在短时间内被反复调用,尤其是写操作
- 目标漂移:当前动作与初始任务描述的语义距离变大
- 权限使用变化:突然开始调用此前没用过的工具或数据范围
- 循环特征:工具调用序列出现重复模式(配合《工具调用的四段循环》里的步数上限一起看)
- 跨会话持久行为:某种行为在没有用户指示的情况下在多个会话里复现
前四条用 trace 就能算,第五条需要跨会话的记忆审计。
5.1 停机与撤销
两件事要预先做,不能等出事再想:
Kill switch:能在秒级停掉某个 Agent 或某类动作,且它本身不能依赖被停的系统。
撤销路径:可逆动作要记录足够的信息用于回滚。不可逆动作(付款、删除、对外发布)应该根本不进入自动执行范围——这是《护栏要做在基础设施层》里分级表的最后一行。
一个常被忽略的点:撤销的前提是知道做了什么。所以动作级审计(谁触发、Agent 当时的上下文、参数、结果)不是合规负担,是撤销能力的输入。
5.2 身份要单独管
Agent 不该"继承用户会话"就完事。它应该有自己的身份,携带自己的权限范围,动作可归因到它。
这条听起来是治理话题,落到实现上很具体:凭证按 Agent 维度发放而不是复用用户 token;权限按任务收窄;审计记录里的主体是 Agent 而不是人。否则 ASI03 无法缓解,事故也无法复盘。
6. Agent Control Standard
和 Agentic 清单配套的还有一个新东西:OWASP 在 2026 年 9 月宣布 Agent Control Standard(ACS) 捐入 GenAI Security Project。
它不是一个风险清单,而是一份运行时治理的技术规范,定义了三样东西:
- Agent Control System:被观测的 Agent 通过它与"守护 Agent"执行点交互
- 可观测层:用 OpenTelemetry 和 OCSF(Open Cybersecurity Schema Framework)追踪 Agent 事件
- Agent Bill of Materials(AgBOM):用 CycloneDX、SPDX、SWID 等组件清单格式暴露一个 Agent 的工具、模型和可访问数据
它提出一个 Agent 可信的三个属性:可检查(inspectable)、可追踪(traceable)、可插桩(instrumentable)——事后能确定它做了什么、为什么做,事前能约束它允许做什么。
版本状态值得留意:当前 v0.1,只覆盖核心定义;插桩与守护 Agent 参考实现目标是 v1,完整 AgBOM 组件格式支持是 v2,跨 A2A 与 MCP 的 deny/modify 强制执行动作是 v3。
所以目前它是值得跟的标准,不是可以拿来落地的完整方案。写方案时别把它当成现成能力。
7. 落地清单
按投入产出排序,前四条最值:
- 给每个 Agent 独立身份与最小权限,不复用用户 token
- 动作执行层做强制校验(白名单 + 参数校验 + 分级确认),不依赖提示词
- 步数上限、时间上限、预算上限三个都设,这是 ASI08 与 LLM03(2026 版的 Excessive Agency;2025 版里它是 LLM06)的共同缓解。预算要分单次与单会话两层——只限单次调用的话,一个死循环的 Agent 照样能一夜烧掉几万块
- 动作级 trace,把"谁触发、什么上下文、什么参数、什么结果"记全
之后是:记忆写入权限化、工具来源校验(ASI04)、Agent 间消息认证(ASI07)、审批界面防操纵(ASI09)、行为异常检测(ASI10)。
最后补一句关于节奏的话:Gartner 在 2025 年 6 月预测 40% 以上的 Agentic 项目会在 2027 年底前被取消,主因之一是风险控制不足。这个预测的 actionable 部分是——那些先建好治理再扩规模的团队,躲开的正是最常见的一类取消原因。治理不是拖慢上线,它是让项目活到上线之后的东西。