新时代 AI Agent 安全:一个安全从业者近期的几点思考
新时代 AI Agent 安全:一个安全从业者近期的几点思考
最近这段时间,我花了些时间在看和写各种 Agent,和各家的安全实践。
看得越多,我越觉得一件事很明显:Agent 安全已经不能只按“大模型安全”的思路来理解了。
以前我们谈大模型安全,更多会盯着两个点。一个是 prompt injection,一个是输出内容是否合规。这个角度当然还重要,但如果放到今天很多真正能“干活”的 Agent 身上,就明显不够用了。因为它们已经不只是回答问题了,它们会查知识库,会调 API,会读网页,会写状态,甚至会真正去执行动作。
所以,作为一个安全从业者,我现在越来越倾向于把 Agent 看成一个任务执行系统,而不是一个会聊天的大模型外壳。这个视角一变,很多安全判断也会跟着变。
一、AI Agent 的基本组成
我觉得很多关于 Agent 安全的讨论,一上来就容易掉进一个误区,就是默认 Agent 只是“模型 + prompt + tool call”。
但如果你真的去拆一个能跑起来的 Agent,会发现事情远不止这么简单。它至少会包含下面这些部分:
| 组件 | 它在做什么 | 安全上容易出什么问题 |
|---|---|---|
| 输入入口 | 接收用户请求、业务事件、API 调用、多模态内容 | 恶意输入、伪造任务、跨渠道注入 |
| 目标与指令层 | 定义角色、目标、约束和系统规则 | 策略污染、越权指令、提示词被覆盖 |
| 推理与规划核心 | 理解目标、拆任务、决定下一步做什么 | 概率性误判、危险路径选择、错误放大 |
| 编排控制循环 | 把推理、工具调用、状态推进串成闭环 | 死循环、异常重试、错误扩散 |
| 记忆与状态 | 保存上下文、长期记忆、任务状态 | 记忆投毒、跨用户污染、越权复用 |
| 知识与检索 | 从知识库、网页、数据库里拿信息 | 检索投毒、敏感信息带出、结果误用 |
| 工具与外部系统 | 调 API、查库、发消息、跑浏览器、执行代码 | 权限扩张、工具滥用、供应链风险 |
| 输出与反馈 | 给用户结果,或把结果送回下一轮继续推理 | 误执行、误触发、错误反馈闭环 |
| 运行底座 | 框架、运行时、会话管理、沙箱、执行器 | 身份混淆、隔离失效、审计缺失 |
也就是说,Agent 从来都不是一个单点能力,它更像是一条会持续接收信息、持续做判断、持续调用外部能力的执行链。
二、AI Agent 的通用结构
下面这张图,是我这段时间看各类 Agent 之后,觉得比较通用的一种抽象。它不属于某一家厂商,但基本能覆盖今天大部分 Agent 系统的关键部件。
flowchart TD
U[用户 / 业务系统 / 外部事件] --> I[输入入口<br/>Chat / API / Event]
I --> G[目标与指令层<br/>System Prompt / Role / Policy / Task]
G --> R[推理与规划核心<br/>LLM 理解意图 / 任务分解 / 决策]
R <--> M[记忆与状态<br/>短期记忆 / 长期记忆 / 会话状态]
R <--> K[知识与检索<br/>RAG / 文档库 / 业务知识]
R --> O[编排控制循环<br/>多轮执行 / 路由 / 重试 / 退出条件]
O --> T[工具与外部系统<br/>API / 数据库 / 搜索 / Browser / Code]
T --> F[执行结果与环境反馈]
F --> O
O --> A[输出与行动<br/>回答用户 / 调用系统 / 触发流程]
A --> U
subgraph P[运行底座]
AF[Agent Framework<br/>LangGraph / ADK / Strands / SDK]
AR[Agent Runtime<br/>State / Session / Worker / Sandbox]
MR[Model Runtime<br/>OpenAI / Bedrock / Vertex / 自托管模型]
end
I -.依赖.-> AF
O -.运行在.-> AR
R -.调用.-> MR
这张图真正提醒我的,不是“组件很多”这件事,而是 Agent 的很多环节都会继续反过来影响下一步决策。
输入会影响推理。
检索会影响推理。
工具返回结果会影响推理。
记忆会影响推理。
环境反馈还是会影响推理。
所以从安全角度看,Agent 不是一次请求处理完就结束的系统,而是一个不断吸收输入、不断改变状态的系统。
三、AI Agent 安全不只是提示词安全
如果只把 Agent 看成一个大模型,那安全工作就很容易收缩成两件事:防注入,管输出。
但问题在于,今天很多 Agent 已经不是“说完就结束”了,而是“说完之后还会继续做”。一旦进入这个阶段,风险就会明显变样。
现在更关注下面几类问题:
- 输入入口会不会被恶意任务或伪造指令污染。
- 指令层会不会被覆盖,导致原本的边界慢慢漂移。
- 检索、记忆和历史上下文会不会把错误内容持续带进系统。
- 工具调用会不会把一次错误判断放大成真实动作。
- 运行时和沙箱设计不当时,模型层问题会不会直接外溢到主机、网络和业务系统。
换句话说,Agent 安全已经并不是单点的防护,而是一个覆盖整个运行链路的系统级问题。
四、传统应用安全在 AI Agent 时代面临的挑战
在传统 Web 应用、移动应用或者 SaaS 系统里,很多安全设计默认成立的前提其实比较稳定,都是由一个确定的输入得到一个确定的输出:流程大体固定,调用边界相对清楚,用户自己显式触发敏感动作,输入点也比较集中,日志通常能覆盖主要问题。可一旦系统开始引入 Agent,这些前提就会一层层松动。
先看一个直观一点的对比:
| 对比维度 | 传统应用安全假设 | Agent 系统中的变化 |
|---|---|---|
| 行为路径 | 流程固定、接口可枚举 | 路径动态、推理驱动、难以完全枚举 |
| 权限控制 | 用户直接操作,应用内校验为主 | Agent 代执行,需要跨链路委托控制 |
| 调用对象 | 固定服务依赖 | 动态工具、MCP、外部系统持续扩展 |
| 输入风险 | 主要来自用户输入 | 用户输入、工具返回、记忆、检索内容共同构成上下文风险 |
| 结果风险 | 回答错误、内容违规、信息泄露 | 进一步扩展到真实动作执行和业务后果 |
| 运行环境 | 边界相对稳定 | 运行时更开放,包含浏览器、沙盒、代码执行等新环境 |
| 审计方式 | 接口日志和数据库日志即可覆盖大部分问题 | 需要覆盖推理、检索、工具调用、授权、执行与回放全链路 |
从这个对比里其实能看出一个很重要的点:传统安全体系并不是失效了,而是覆盖范围不够了。
身份认证、权限控制、网络隔离、日志审计、数据安全、漏洞管理,这些东西当然还都要做,而且一个都不能少。
问题在于,Agent 改变了系统运行的基本形态。传统应用里很多原本默认成立的安全假设,到了 Agent 环境下已经不再那么稳了。
从确定性流程,变成概率性决策
传统应用的大部分执行路径是预定义的。用户点击哪个按钮,触发哪个接口,后端按什么规则处理,通常都比较确定,也比较容易枚举。
但 Agent 不是这样。Agent 的核心行为来自模型推理,而由于现在llm的原理,导致推理本身就具有概率性。
- 同一个目标,Agent 可能拆解成不同的任务路径。
- 同一个问题,Agent 可能选择不同工具、不同顺序、不同参数。
- 同一个上下文,在不同模型版本或不同提示条件下,决策结果也可能变化。
这意味着安全问题不再只是“某个接口有没有权限校验”,还要回答“Agent 会不会在动态决策中走到一条原本没预想到的危险路径”,不能复用通过传统安全中的白名单思路来一劳永逸。
从固定接口调用,变成动态工具编排
过去的应用依赖通常比较固定,前端调哪些后端接口,后端依赖哪些微服务,服务之间依赖关系相对清晰,边界大体都清楚。
但在 Agent 系统中,工具调用往往是动态选择的。
- Agent 会根据上下文自主决定调用哪个工具
- 一个工具的结果又会触发下一轮工具选择
- 工具集合可能持续扩展,包括内部 API、MCP server、数据库、SaaS、浏览器和代码执行环境
这使得攻击面从“接口安全”扩展为“工具链安全”。风险也从单次 API 越权,上升为整条执行链路中的权限扩张、供应链污染和间接注入。
从用户直接操作,变成 Agent 代理执行。
传统应用中,大多数敏感操作都由用户显式触发,谁发起、谁确认、谁负责,关系相对清楚。
- 用户自己发起查询
- 用户自己点击审批
- 用户自己提交删除
因此传统安全设计主要围绕“用户是谁”,“用户能不能做这个动作”展开。
到了 Agent 时代,情况发生了变化。用户越来越多地不是直接操作系统,而是把目标交给 Agent,由 Agent 代为规划和执行。
- 用户说“帮我整理今天的待办并发给团队”
- 用户说“查询客户信息并生成一份跟进建议”
- 用户说“根据合同内容起草回复邮件并发送”
这时,真正执行动作的是 Agent,而不是用户的显式点击。所以这里的安全设计就不能只停留在“用户有没有权限”,还得继续往下看:Agent 能不能只在用户授权范围内代表用户行动。
从静态权限控制,变成委托链路控制
传统权限模型通常只需要处理一段较短的链路:
用户 -> 应用 -> 数据库而在 Agent 系统中,链路会迅速拉长:
用户 -> Agent -> 编排层 -> 工具网关 -> 下游服务 -> 数据系统 -> 外部系统这会带来几个新的安全难点:
- 身份如何跨多个组件连续传递
- 下游系统如何识别最终用户,而不是只看到 Agent 服务账号
- Agent 是否会在调用链中获得比用户本身更高的权限
- 多租户环境中,跨租户边界是否会在工具编排阶段被破坏
也就是说,Agent 安全中的“权限”已经不只是一个应用内的访问控制问题,而是一个跨多层系统的委托控制问题。
从数据输入风险,扩展为上下文污染风险
传统应用确实也面对输入风险,比如 SQL 注入、XSS、文件上传攻击,但其风险面主要集中在显式输入和明确的数据边界上。
Agent 系统则不一样。它的输入范围远比传统应用更广:
- 用户输入
- 系统提示词
- 工具描述
- 工具返回内容
- 检索文档
- 长期记忆
- 历史对话
- 外部网页
这些内容都会进入 Agent 的推理上下文。一旦这里面任何一部分被污染,影响的就不只是某个字段或某次请求,而可能是整个决策链。所以这类问题更应该是“上下文污染”和“上下文治理”,而不只是传统意义上的输入校验。
从边界清晰系统,变成开放耦合系统
传统企业应用通常边界相对稳定。
- 业务系统之间的依赖关系清楚
- 接口和角色模型相对固定
- 环境通常是内聚的、可控的
而 Agent 系统天然倾向于开放耦合:
- 接入更多第三方工具和 SaaS
- 引入 MCP、插件、远程浏览器、外部搜索
- 通过知识库和网页检索动态吸收外部信息
- 强烈的 Agent 自身的自我进化需求
这使得安全模型必须从“保护一个封闭系统”,转向“管理一个持续变化的开放执行网络”。
从结果输出安全,变成执行后果安全
传统大模型应用早期主要关注回答是否合规、是否有害、是否泄露隐私。这些问题当然仍然重要,但在 Agent 场景里,它们已经不是全部。
因为 Agent 不只是“说”,它还会“做”。
- 它会查数据库
- 它会打开网页
- 它会调用 API
- 它会运行脚本
- 它会发邮件、提工单、触发审批
这意味着安全问题的重心会从“输出内容本身是否安全”,进一步转向“执行动作及其后果是否可控”。
一句话概括就是:
在传统应用里,系统主要承担的是信息处理风险;在 Agent 应用里,系统开始承担行动执行风险。
五、Agent 时代,安全重心正在发生变化
在 Agent 时代面临的这些关键的安全问题,在学习了很多大佬的思路后,目前针对Agent 安全时代下最重要的几个安全能力,提出一些自己的拙见
一、Agent 的身份验证与委托授权(Agent Identity)
在 AI 时代,Agent 场景下最容易发生的问题就是混淆身份与委托越权
而身份上最容易出现的问题其实不是“用户有没有登录”,而是“当前到底是谁在代表谁做事”。
传统应用里,用户通常直接操作系统,身份链路相对简单,应用只需要校验当前用户是否有权限访问某个接口、某份数据、某个按钮即可。
但在 Agent 场景里,情况发生了变化。用户越来越多是把目标交给 Agent,再由 Agent 去访问工具、获取数据、调用系统、执行动作。这个时候,系统需要校验的就不再只是“用户有没有权限”,而是整条链路上的身份和授权关系:
- 用户是否有权发起这个代理请求
- Agent 是否有权代表该用户去调用某个工具或服务
- 下游工具或服务是否能够识别 Agent 代表的是哪一个真实用户
- 工具返回的数据是否是该用户本来就有权访问的数据
也就是说,在 Agent 时代,身份验证必须从单点登录校验,升级为端到端的全链路委托授权。
而这一部分的安全建设至少要包括以下几个方面:
- Agent 入方向的认证和授权
对要求进行代理的用户进行认证和授权,包括通过第三方身份提供商登录进来的用户。系统要明确知道是谁发起了请求、请求的目标是什么、是否允许 Agent 代为执行。
- 外部工具或服务对 Agent 的授权
不论是企业内部研发的一方工具,还是第三方商业化工具、开源工具,都不能默认信任 Agent。工具端必须承担认证和授权职责,同样需要判断:当前这个 Agent,和这个 Agent 所代表的用户,是否被允许访问该工具及其对应数据。
- Agent 出方向访问能力的约束
为了配合外部工具或服务完成授权,Agent 本身需要具备标准化的受控访问能力,例如 OAuth 客户端能力,包括 2LO 和 3LO 两种模式。如果访问的是云资源,则需要具备获取和使用短期凭证的能力,例如 IAM Role 或 STS,而不是长期持有固定密钥。
二、Agent 的专用沙箱和受控执行环境 (Agent Sandbox)
在 Agent 的执行范式下,安全风险的重心正在发生明显变化。
过去我们更关注的是输出内容本身是否安全,例如:
- 回答是否有害
- 是否泄露敏感信息
- 是否包含不当内容
但在 Agent 时代,仅仅关注“说了什么”已经不够,因为 Agent 开始真正“做事情”了。
- 它会访问网页
- 它会执行脚本
- 它会下载和上传文件
- 它会操作浏览器
- 它会调用系统接口
也正因为如此,安全问题开始从 “输出内容安全” 转向 “执行结果是否可接受、是否可控、是否可追责 ”。
所以Agent 一旦进入执行态,就必须被当作一个高动态、高权限敏感、高不确定性的自动化工作负载来管理。所有会造成高危结果,线上生产变更的行为都必须由人来卡控。对这样的东西,专用沙箱不是加分项,而是基本盘。
至少应该做到:
- 将 Agent 的执行环境与主业务系统隔离
- 将不同用户、不同任务、不同会话的执行过程隔离
- 限制 Agent 的文件系统、网络、浏览器和命令执行能力
- 在任务结束后自动清理临时文件、凭证和会话状态
- 在发生异常时可以快速终止执行并保留审计证据
因为一旦没有这层隔离,模型层的误判就很容易直接变成执行层事故。
三、 Agent 执行全流程的可发现、可观测、可管控、可审计
无论是身份验证还是沙箱隔离,最终都会指向一个更底层的问题:企业是否真的知道哪里有 Agent、这些 Agent 在做什么、它们连了什么、能做什么,以及企业是否真的有能力在关键时刻把它控制住,并在事后完整追溯每一环。
首先是 可发现。企业必须先知道系统里到底有哪些 Agent 资产存在,它们分别服务于什么业务场景,接入了哪些工具、知识库和外部系统,又具备怎样的执行能力和权限边界。
- 发现有哪些 Agent 正在运行
- 发现它们服务于哪些业务流程
- 发现它们接入了哪些工具、数据源和外部系统
- 发现它们具备哪些执行能力和权限范围
- 发现新接入的 Agent 或能力是否已经超出原有治理范围
其次是 可观测。企业必须知道:
- Agent 当前接收了什么输入
- 当前使用了哪些上下文
- 进行了怎样的任务拆解
- 调用了哪些工具
- 最终输出了什么动作和结果
再次是 可管控。企业必须能够:
- 决定哪些工具可以被调用
- 决定哪些内容可以进入主推理链
- 决定哪些高风险动作需要人工确认
- 在异常情况下中断、降级或接管 Agent
最后是 可审计。企业必须能够在事后回答:
- 谁发起了这个任务
- Agent 当时代表的是谁
- 它为什么调用了这个工具
- 哪个上下文影响了它的决策
- 问题最终发生在哪一个环节
如果缺少这四项能力,Agent 系统即使在功能上能够跑起来,在安全上也仍然是一个黑盒。它可能看起来很聪明,但一旦出错,企业既无法及时干预,也无法在事后完成责任界定和经验回收。
因此,站在生产环境的角度看,Agent 最先要重建的不是某一条具体规则,而是一整套围绕身份、执行、工具和审计建立起来的基础安全能力。
六、AI Agent 安全新范式下的前瞻思考
前文探讨的诸多安全设计,更多是聚焦于为 AI Agent 构建运行前的“默认安全”环境。其实在aws的博客中提到的基于Agentic AI的特性总结的安全威胁中有个很有意思的2个点:
- Overwhelming Human in the Loop:这种威胁针对的是具有人类监督和决策验证的系统,旨在利用人类的认知局限性或破坏交互框架。
- Human Manipulation:在Agentic AI与人类用户直接交互的场景中,信任关系会降低用户的怀疑程度,增强对Agent响应和自主性的依赖。这种隐性信任和人机直接交互会带来风险,因为攻击者可以胁迫Agent操纵用户、传播虚假信息并采取隐蔽行动。
这两点深刻揭示了一个反直觉的现象:在复杂的 Agent 系统中,过度依赖人类监督反而可能成为安全链条中最脆弱的一环。
但其实这也是很现实的一点,类比于现在AI Coding的发展中,代码生成的效率瓶颈早已不再是 AI 的算力或吞吐量,而是人类开发者根本无法跟上 Review 的节奏来验证代码是否符合预期。当 AI 生成海量代码时,必然会逐渐演变为“用 AI 来 Review AI 生成的代码”。在这个过程中,人类最终退居二线,仅负责审计高价值的简短摘要,而大量底层的实现细节则被隐匿。
我对这种趋势其实并不持负面态度。相反,在 AI 技术高速迭代的今天,我认为这必然会成为主流范式。人类对 AI 的信任度将会不断攀升,最终人类的角色将全面转向审计高价值、高信息密度的数据。
然而,正是在这种高度信任、高度依赖的背景下,我们愈发的要对这类新型威胁建立更加严密的防范机制,需要在 HITL(Human-in-the-Loop) 的决策中为人类提供足够丰富且精准的上下文信息以保护决策质量,并从机制上预防“决策疲劳”漏洞,防止攻击者通过欺骗性的 AI 行为使人类超负荷运转、操纵 AI 意图或绕过现有的安全机制。
此外,由于 LLM本质上仍是一个黑盒的程序,安全防护的重心必须向 Agent 运行时的动态表现、决策过程和最终结果转移。综合上述思考可以发现,除了基础设施的安全加固,Agent 安全的核心其实在于运行时上下文 。上下文直接决定了 Agent 后续的决策与行为。只有让安全机制深度介入运行时上下文,才能准确分辨 Agent 的动作是否偏离了全局任务目标和预设职责。
而在传统应用安全领域,RASP(运行时应用自我保护) 技术被广泛用于应用运行时的实时防护。那么,在 Agent 安全体系中,我们完全可以借鉴 RASP 的核心理念,构建针对 AI Agent 的“运行时实时检测与防护”机制(即 Agent-RASP)。这种机制不仅能够完成实时监测,甚至可以深度介入 Agent 的运行状态,进行实时的行为检测,纠偏和高危恶意指令的即时阻断等等操作。在最近的RSAC中已经出现了类似思路产品的创业公司(Geordie AI)感兴趣的可以去看一下他们的路演
我相信,基于运行时的动态上下文安全防护,一定会成为新时代 AI Agent 安全防御矩阵中重要的一环。