AI 代理已经到来,威胁也随之而来
作者:Jay Chen, Royce Lu
原文:查看原文
执行摘要
所谓 AI 代理应用,是指借助智能体自主收集信息并执行动作,以完成特定目标的应用程序。随着这类系统在真实业务中越来越常见,理解它们的安全影响就不再是可选项。本文研究了攻击者可能如何针对 AI 代理应用发起攻击,并总结出九类具体场景,后果涵盖信息泄露、凭证窃取、工具滥用和远程代码执行等。
为了评估这些风险是否具有普遍性,研究团队分别用 CrewAI 和 AutoGen 两个开源代理框架,实现了两套功能相同的应用,并对它们执行同样的攻击。结果表明,大多数漏洞和攻击路径基本与具体框架无关,更常见的根源是不安全的设计模式、错误配置,以及不安全的工具集成,而不是框架本身存在缺陷。
研究还为每一种攻击场景整理了对应的防御思路,并分析了这些措施各自的有效性与局限性。为方便复现和后续研究,作者也在 GitHub 上公开了相关源代码和数据集。
主要发现
- 攻击者未必需要显式的提示注入,就能让 AI 代理偏离预期。只要提示范围界定不当,或指令本身缺乏约束,同样可能被利用。
- 缓解措施:在代理指令中明确加入安全约束,拒绝超出范围的请求,以及任何试图提取指令或工具模式的行为。
- 提示注入仍然是最强、最通用的攻击向量之一,既能诱导泄露数据,也能滥用工具,甚至直接改变代理行为。
- 缓解措施:部署内容过滤与运行时检测机制,识别并拦截提示注入尝试。
- 错误配置或本身存在缺陷的工具会显著放大攻击面和影响范围。
- 缓解措施:清理所有工具输入,实施严格访问控制,并定期执行 SAST、DAST、SCA 等安全测试。
- 不安全的代码解释器会让代理暴露在任意代码执行,以及对主机资源和网络的未授权访问之下。
- 缓解措施:实施强隔离沙箱,并配合网络限制、系统调用过滤和最小权限容器配置。
- 凭证泄露,例如服务令牌或敏感密钥暴露,可能进一步引发身份冒用、权限升级和基础设施失陷。
- 缓解措施:结合 DLP 方案、审计日志和机密管理服务保护敏感信息。
- 不存在一种单独的缓解措施足以兜住全部风险。要降低 AI 代理应用的整体风险,必须采用分层、纵深的防御策略。
- 缓解措施:在代理、工具、提示词和运行时环境多个层面同时布设保障机制。
需要特别说明的是,CrewAI 和 AutoGen 本身并不是“有漏洞的框架”。这项研究真正揭示的是一类系统性风险:它们主要来自语言模型在面对提示注入时的天然限制,以及工具集成中的错误配置或安全缺口,而不是某个特定框架单独造成的问题。
AI 代理概述
AI 代理是一类软件系统,能够从环境中自主收集信息、处理信息,并采取行动来实现特定目标,而不需要人工逐步干预。这类系统通常由 AI 模型驱动,其中最典型的是大语言模型(LLM),负责推理、规划和决策。
AI 代理的关键特征,在于它能够把模型与外部能力连接起来,并自主决定何时调用这些能力。这里的“能力”通常体现为工具,例如 API、数据库或外部服务,用来完成模型本身无法直接完成的具体任务。
典型 AI 代理架构
一个典型的 AI 代理架构通常包括:
- 规划与推理:利用 LLM 做任务规划和决策
- 执行循环:支持自主推进任务的循环机制
- 函数调用:连接外部工具与服务
- 记忆系统:管理短期与长期记忆
- 输入输出接口:通常以 API 形式对外暴露
AI 代理的安全风险
由于 AI 代理通常建立在 LLM 之上,它天然会继承 OWASP LLM Top 10 中提到的多类风险,例如提示注入、敏感数据泄露和供应链漏洞。但与传统 LLM 应用相比,AI 代理还会进一步接入由不同语言和框架实现的外部工具,因此攻击面会明显扩大。
这些外部工具会把经典软件安全问题重新带回智能体系统,比如 SQL 注入、远程代码执行和访问控制失效。再叠加代理与外部系统、甚至物理世界交互的能力,安全问题就不再只是“模型会不会答错”,而是系统边界能否承受真实攻击。
关键威胁类型
根据 OWASP 的 Agentic AI Threats and Mitigations 指南,主要威胁包括:
- 提示注入:攻击者向 GenAI 系统注入隐藏或误导性的指令,试图让应用偏离预期行为
- 工具滥用:攻击者诱导代理错误调用其已集成的工具
- 意图破坏与目标操控:通过影响代理对目标的理解或推理过程,改变其执行方向
- 身份欺骗与冒充:利用薄弱或受损的身份验证,冒充合法的代理或用户
- 非预期 RCE 与代码攻击:利用 AI 代理具备的代码执行能力发动攻击
- 代理通信中毒:向代理之间或代理与外部系统之间的通信通道注入攻击者控制的信息
- 资源过载:通过消耗资源压垮 AI 代理系统
研究案例:投资顾问助手
为了研究 AI 代理的安全风险,作者用两个流行的开源代理框架——CrewAI 和 AutoGen——分别构建了一个多用户、多代理的投资顾问助手。
系统架构
这套投资顾问助手由三个协作代理组成:
- 编排代理:负责管理用户交互、理解请求、分派任务并整合结果
- 新闻代理:负责收集和总结财经新闻
- 搜索引擎工具
- 网页内容读取工具
- 股票代理:负责管理股票投资组合
- 数据库工具
- 股票工具
- 代码解释器工具
九大攻击场景
| 攻击场景 | 描述 | 威胁类型 | 缓解措施 |
|---|---|---|---|
| 识别参与代理 | 暴露代理列表及其角色 | 提示注入、意图破坏 | 提示强化、内容过滤 |
| 提取代理指令 | 提取系统提示和任务定义 | 提示注入、通信中毒 | 提示强化、内容过滤 |
| 提取工具模式 | 获取工具的输入 / 输出模式 | 提示注入、通信中毒 | 提示强化、内容过滤 |
| 未经授权访问内部网络 | 利用 Web 阅读器访问内部资源 | SSRF、工具滥用 | 工具输入清理、网络隔离 |
| 挂载卷数据泄露 | 读取并外传挂载卷中的文件 | RCE、数据泄露 | 代码执行器沙箱 |
| 元数据服务令牌泄露 | 访问并泄露云服务账户令牌 | 身份欺骗、RCE | 沙箱、元数据服务限制 |
| SQL 注入 | 通过 SQL 注入提取数据库内容 | 工具滥用、数据泄露 | 输入清理、参数化查询 |
| BOLA 攻击 | 通过操纵对象引用访问他人数据 | 访问控制破坏 | 严格授权检查 |
| 间接提示注入 | 通过恶意网页泄露对话历史 | 提示注入、数据泄露 | 内容过滤、输出清理 |
防御策略
1. 提示强化
在代理指令中明确禁止:
- 提取系统提示或工具模式
- 响应超出范围的请求
- 尝试绕过安全策略
2. 内容过滤
部署运行时检测机制:
- 检测提示注入模式
- 过滤敏感信息输出
- 监控异常行为
3. 工具安全
- 做好输入验证与清理
- 落实最小权限原则
- 实施网络隔离与访问控制
- 定期执行安全扫描(SAST / DAST / SCA)
4. 代码执行沙箱
- 限制网络访问
- 过滤危险系统调用
- 采用最小权限容器配置
- 加上资源限制
5. 数据保护
- 部署 DLP 方案
- 保留审计日志
- 使用机密管理服务
- 对敏感数据做脱敏处理
6. 纵深防御
将多层保障措施组合起来:
- 代理层:提示强化
- 工具层:输入验证
- 运行时层:沙箱隔离
- 监控层:异常检测
结论
AI 代理应用带来了更强的自动化能力,也把系统安全问题推到了更靠前的位置。这项研究说明了三件事:
- 风险与框架无强绑定:多数漏洞来自设计方式和配置问题,而不是某个特定框架
- 多层防御不可省略:单一缓解措施无法覆盖复杂攻击链
- 持续监控非常关键:必须建立完善的可观测性与审计机制
因此,在构建 AI 代理应用时,安全不应是上线前补上的一层检查项,而应从设计阶段就被当作一等约束纳入系统方案。
研究团队:
- Jay Chen - Palo Alto Networks Unit 42
- Royce Lu - Palo Alto Networks Unit 42
开源代码:https://github.com/PaloAltoNetworks/stock_advisory_assistant
