AI 智能体安全:工具调用与自主行动的风险
当大语言模型(LLM)从一个「只会聊天的文本生成器」进化为能够调用工具、读写文件、发邮件、执行命令、甚至自主规划多步任务的智能体(Agent)时,它的安全边界也发生了质变。过去越狱与提示注入主要让模型「说错话」,而自主智能体一旦被诱导,可能直接「做错事」——把数据外发、删库、发起支付、在代码仓库里写入后门。本文面向构建或部署 LLM 智能体的工程师,系统梳理智能体区别于普通聊天机器人的特有风险面,给出可落地的防御原则,并说明它如何与越狱防御、提示注入两道防线衔接,最后概述评测与红队的思路。文中只描述风险机理与防御概念,不提供任何可复现的攻击载荷。
一、为什么智能体是新的攻击面
普通 LLM 应用的威胁模型相对简单:用户输入文本,模型输出文本。即便被越狱,危害通常停留在「内容层面」——产生有害文本。智能体则不同,它在「感知-推理-行动」的闭环里接入了外部世界:
- 它通过工具(tool)与外部系统交互,工具可能是函数调用、浏览器、Shell、SQL 接口、第三方 API;
- 它往往具备一定的自主规划能力,能在无需每步人工干预的情况下连续决策;
- 它的上下文里混合了系统指令、用户输入、工具返回结果、检索到的外部文档等多路来源。
这种「能行动、能循环、能触碰真实资源」的特性,使攻击的「影响半径」从一段对话文本扩展到真实世界的资产与操作。OWASP 在《Top 10 for Large Language Model Applications》中早已把「Excessive Agency(过度代理)」与「Insecure Plugin Design(不安全的插件设计)」单独列为高危条目,而 OWASP 当前的 GenAI 项目也明确把 agentic AI 系统纳入覆盖范围(已核验:OWASP LLM Top 10 项目页与 v1.1 条目 LLM06、LLM07)。MITRE ATLAS 威胁库则专门收录了 AI Agent Tool Invocation、AI Agent Context Poisoning 等针对智能体的技术编号(已核验:MITRE ATLAS 官网)。这说明智能体安全已经是行业公认的独立命题,而非聊天机器人安全的简单延伸。
二、智能体特有的风险面
以下五类风险是智能体场景特有的或显著放大的,理解它们是布防的前提。我们仅描述概念,不给出可复现的攻击脚本。
工具滥用
工具滥用指模型在受到诱导后,把本应用于正常任务的工具用于其设计目的之外的操作。例如一个被授权的「读取网页」工具,可能被重定向去访问内网管理端口;一个「发送消息」工具,可能被用来向大量用户广播垃圾内容。其本质是工具的「能力」与「意图约束」脱节——工具本身功能正常,但触发它的上下文已经被污染。
命令执行
当智能体拥有执行系统命令或运行代码的能力时,风险被放大到操作系统层面。被污染的提示可能引导智能体拼接出危险的命令、读取敏感文件、修改系统配置,或在宿主机上建立持久化通道。命令执行类风险与传统的远程代码执行(RCE)威胁高度相似,只是触发入口从「网络请求」变成了「模型对提示的理解」。
权限过大
权限过大(excessive permissions)是指智能体及其工具被赋予了超出任务必需的权限:既能读又能写、既能删库又能发款、既能在测试环境运行也能触达生产网络。即使模型本身没有被攻破,一个设计草率的授权策略也会让任何一次误操作或轻微诱导都演变成重大事故。它是「过度代理」在授权层面的具体表现。
提示注入跨工具传播
这是智能体最微妙、也最危险的一类风险。在普通 RAG 应用里,一次提示注入通常影响「这一次回答」;而在智能体里,注入可以借助工具链路「跨边界传播」:模型读取了一封带毒邮件,被指示去调用日历工具,日历结果又带出新的指令,进而触发外发操作。污染沿着「数据进入模型、模型调用工具、工具返回数据、数据再次进入模型」的环路层层传导,单个入口的注入最终在远离源头的地方产生后果。这把提示注入从「单点内容污染」升级为「跨工具的状态传播问题」。
无限循环与资源消耗
智能体的自主循环特性带来一类传统应用少见的可用性风险:当规划逻辑陷入自指或错误恢复失败时,智能体可能反复调用工具、反复生成 token、反复发起外部请求,造成算力账单飙升、下游服务被限流、甚至自身所在进程被拖垮。OWASP 把这类资源过载问题归入「Model Denial of Service」的范畴(已核验:OWASP LLM Top 10 v1.1, LLM04)。它不一定是恶意攻击,也可能源于糟糕的提示设计与缺乏预算约束。
三、防御原则
针对上述风险面,业界形成了几条可工程化落地的防御原则。它们彼此互补,应按「纵深防御」组合使用,而不是单押某一条。
最小权限
最小权限(least privilege)要求智能体及其每只工具只拥有完成任务所必需的最低权限:默认不联网、默认只读、默认不能触达生产数据。即便模型被越狱或提示被注入,攻击者能实际造成的损害也被约束在授权边界内。实现上应为每只工具单独声明权限清单,并在调用前做权限校验。
def authorize_tool_call(tool_name, action, user):
# 先查白名单,再判断是否需要人工确认
if tool_name not in TOOL_WHITELIST:
raise PermissionError("工具不在白名单内")
if action in SENSITIVE_ACTIONS:
# 关键操作必须进入人工确认队列
return route_to_human_review(user, tool_name, action)
return call_with_least_privilege(tool_name, action)
工具白名单
工具白名单(tool whitelist)从「能做什么」收束到「只允许做清单内的事」。智能体的可用工具集合应在部署时静态固化,运行时不允许动态加载未知工具或插件;对工具的入参也要做结构化校验(类型、范围、目标地址),拒绝超出预期的调用。白名单与最小权限共同构成「即使被诱导也无处下手」的硬约束。
人类确认关键操作
对人类确认(human confirmation)指对发邮件、删除数据、支付、调用生产 API 等高风险动作,强制在产生真实后果前插入人工审批节点。这是对抗提示注入与工具滥用最可靠的兜底——任何被污染的指令在落地前都需经过一个有判断力的真人。代价是增加交互摩擦,因此通常只对「不可逆、高影响」的操作启用,而非所有调用。
SENSITIVE_ACTIONS = {"send_email", "delete_record", "transfer", "deploy"}
def need_human_approval(action):
# 高影响动作一律要求人工确认后才放行
return action in SENSITIVE_ACTIONS
def execute(action, payload):
if need_human_approval(action) and not pending_approval(action, payload):
# 未获人工批准,绝不执行
return block_and_request_review(action, payload)
return dispatch(action, payload)
输入输出沙箱
沙箱化把智能体的行动限制在受控边界内。输入侧,对来自外部文档、网页、邮件的不可信内容做显式隔离与结构化解析,降低其伪装成指令的可能;输出侧,对模型生成的工具参数、待执行命令、待发送内容进行校验与过滤。网络与文件系统层面,用容器或网络策略把工具的出口收束到可信范围。
iptables -A OUTPUT -p tcp --dport 25 -j DROP
iptables -A OUTPUT -d 10.0.0.0/8 -j ACCEPT
# 工具调用的网络出口被收束到可信内网,阻断对外邮件等高危通道
审计日志
审计日志(audit logging)要求所有工具调用、决策路径、人工确认记录、拦截原因都可回溯地留存。它既是事后追责与事件复盘的依据,也是下一轮红队测试的样本来源,形成「评测-布防-复盘-再评测」的闭环。实践中要注意日志自身的隐私合规:对用户输入做哈希或脱敏,避免审计系统成为新的泄露点。
audit_log = []
def record(step, decision, meta=None):
# 每次工具调用与关键决策都落审计日志
audit_log.append({
"ts": now(),
"step": step,
"decision": decision,
"meta": meta or {},
})
给循环加上预算
针对无限循环与资源消耗,应给智能体设定硬性预算:最大步数、最大 token、最长墙钟时间、单次任务工具调用次数上限。一旦触顶即强制终止并告警,把「可用性风险」转成「可控的提前退出」。
BUDGET = {"max_steps": 25, "max_tokens": 8000, "wall_clock_sec": 120}
def run_agent(agent, task):
# 资源消耗的硬性上限,防止智能体陷入无限循环
used = {"steps": 0, "tokens": 0}
while not agent.done(task):
if used["steps"] >= BUDGET["max_steps"]:
# 超出步数预算,强制终止并告警
return abort("超出最大步数预算")
used["steps"] += 1
used["tokens"] += agent.step(task)
四、与越狱防御、提示注入的衔接
智能体安全不是孤立的防线,而是越狱防御与提示注入防御在「行动层」的延伸,三者应共享同一套纵深体系。
- 与提示注入的衔接:第二、三节谈到的「提示注入跨工具传播」正是《提示注入与越狱攻防实战》中「间接注入」的升级形态。普通应用里注入止于「一次回答」,智能体里注入沿工具链传播。因此智能体必须复用提示注入的防御手段——不可信内容的显式隔离、结构化承载、输入/输出分类器——并额外在「工具返回结果重新进入上下文」的边界上补一道校验。
- 与越狱防御的衔接:越狱试图突破的是模型的安全对齐护栏,让模型「愿意做危险的事」。《越狱防御纵深:输入过滤、输出沙箱与围栏策略》里的输入过滤、输出沙箱、权限最小化、人机回环,对智能体同样适用且更为关键——因为一旦越狱成功且智能体又握有工具,后果不再是文本而是真实操作。越狱防御里的「架构层防御」一整节,本质上就是智能体防御的前置基础。
一句话概括:提示注入与越狱解决「模型会不会被骗着说坏话」,智能体安全解决「被骗之后它能不能真的做坏事」。前两者把风险挡在语言层,后者把风险挡在行动层。
五、评测与红队思路概述
防御成色必须用系统化的评测与红队来度量,而不能靠主观信心。以下思路仅作概述。
评测维度至少应覆盖:工具调用的越权率(模型是否会尝试调用未授权工具)、注入鲁棒性(在跨工具传播场景下是否仍被劫持)、权限收敛度(实际可触达的敏感操作范围)、资源预算有效性(是否能触发并成功拦截无限循环)、以及人工确认机制的覆盖率。可把这些维度组织成可重复执行的回归测试集,随版本迭代持续跑分。
红队(red teaming)则从对手视角出发,模拟攻击者如何把污染引入智能体的多路上下文,并观察风险是否沿工具链扩散到真实操作。MITRE ATLAS 提供了一套结构化的对手战术与技术知识库,其中 AI Agent Tool Invocation、AI Agent Context Poisoning、Exfiltration via AI Agent Tool Invocation 等条目可作为红队用例的编排蓝图(已核验:MITRE ATLAS 官网,含 16 个战术、178 个技术)。OWASP LLM Top 10 则提供了面向开发的漏洞清单,可与 ATLAS 的攻击视角互补,形成「攻击面清单 + 对手技术库」的双轴覆盖。
Google 的 SAIF(Secure AI Framework)把智能体安全单列为一类关注对象,定义了「敏感数据泄露、失控行为(rogue actions)」两类智能体风险,并对应给出「用户控制、权限(permissions)、可观测性(observability)」三类控制手段,与本文的最小权限、人工确认、审计日志原则高度一致(已核验:Google SAIF 官网 Focus on Agents 页面)。把 SAIF 的控制项、OWASP 的漏洞项、ATLAS 的攻击项放进同一张映射表,是建立可审计评测体系的可行起点。
需要强调的是,红队与评测都应「只描述不实操」地在文档与沙箱内进行,使用隔离的测试工具与虚构数据,绝不在生产环境或真实账户上验证攻击路径。
小结
智能体把 LLM 从「会说话的文本生成器」变成了「能行动的系统」,其安全边界也随之从语言层扩展到行动层。特有的风险面包括工具滥用、命令执行、权限过大、提示注入跨工具传播、无限循环与资源消耗,其中跨工具传播的注入与失控的循环最易被低估。防御应以纵深体系组合最小权限、工具白名单、人类确认关键操作、输入输出沙箱、审计日志五条原则,并给自主循环显式设定资源预算。智能体安全并非另起炉灶,而是越狱防御与提示注入防御在行动层的延伸:前两者把风险挡在语言层,后者把风险挡在真实操作之前。最后,用 OWASP LLM Top 10、MITRE ATLAS、Google SAIF 共同编织的「漏洞-攻击-控制」映射,配合常态化红队与可重复评测,才能把智能体安全当作持续的风险信号来管理,而非一次性认证。
参考与延伸阅读
- OWASP. Top 10 for Large Language Model Applications(含 LLM01 Prompt Injection、LLM02 Insecure Output Handling、LLM04 Model Denial of Service、LLM06 Excessive Agency、LLM07 Insecure Plugin Design;当前项目已扩展至 GenAI 与 agentic AI)。【已核验:OWASP 项目官网与 v1.1 条目】
- MITRE. ATLAS: Adversarial Threat Landscape for Artificial-Intelligence Systems(16 个战术、178 个技术,含 AI Agent Tool Invocation、AI Agent Context Poisoning 等智能体条目)。【已核验:MITRE ATLAS 官网】
- Google. Secure AI Framework (SAIF) 及其 Focus on Agents 页面(定义敏感数据泄露、失控行为两类智能体风险,对应给出用户控制、权限、可观测性三类控制)。【已核验:Google SAIF 官网】
- 本系列《越狱防御纵深:输入过滤、输出沙箱与围栏策略》——智能体防御在架构层的前置基础。
- 本系列《提示注入与越狱攻防实战》——理解间接注入如何升级为跨工具传播。
- OWASP GenAI LLM Top 10 2026(最新版本,明确纳入 agentic AI 系统)。【待核实:官网存在但正文因浏览器校验未能完整抓取,建议读者直接访问 genai.owasp.org 核对最新条目】