paloalto agentic ai threats 智能体的威胁
执行摘要
https://unit42.paloaltonetworks.com/agentic-ai-threats/
代理应用程序是指利用人工智能代理(旨在自主收集数据并针对特定目标采取行动的软件)来驱动其功能的程序。随着人工智能代理在实际应用中越来越广泛地应用,了解其安全隐患至关重要。本文探讨了攻击者攻击代理应用程序的方式,并提出了九种具体的攻击场景,这些场景可能导致信息泄露、凭证窃取、工具利用和远程代码执行等后果。
为了评估这些风险的广泛适用性,我们使用不同的开源代理框架(CrewAI和AutoGen)实现了两个功能相同的应用程序,并对它们执行了相同的攻击。我们的研究结果表明,大多数漏洞和攻击向量与框架无关,源于不安全的设计模式、错误配置和不安全的工具集成,而非框架本身的缺陷。
我们还针对每种攻击场景提出了防御策略,并分析了它们的有效性和局限性。为了支持可重复性和进一步的研究,我们在GitHub上开源了源代码和数据集。
主要发现
- 提示注入并非总是能够攻陷 AI 代理的必要手段。范围不明确或不安全的提示即使没有明确的注入,也能被利用。
- 缓解:在代理指令中强制执行保护措施,以明确阻止超出范围的请求和指令或工具模式的提取。
- 即时注入仍然是最强大和最通用的攻击媒介之一,能够泄露数据、滥用工具或破坏代理行为。
- 缓解措施:部署内容过滤器以在运行时检测并阻止提示注入尝试。
- 配置错误或易受攻击的工具会显著增加攻击面和影响。
- 缓解:清理所有工具输入,应用严格的访问控制并执行常规安全测试,例如静态应用程序安全测试 (SAST)、动态应用程序安全测试 (DAST) 或软件组成分析 (SCA)。
- 不安全的代码解释器会使代理面临任意代码执行和未经授权访问主机资源和网络的风险。
- 缓解措施:通过网络限制、系统调用过滤和最小权限容器配置实施强沙盒。
- 凭证泄漏(例如暴露的服务令牌或机密)可能导致冒充、权限提升或基础设施受损。
- 缓解:使用数据丢失防护 (DLP) 解决方案、审计日志和秘密管理服务来保护敏感信息。
- 单一的缓解措施不足以有效降低代理应用程序的风险。需要采取分层的纵深防御策略。
- 缓解:结合代理、工具、提示和运行时环境的多种保护措施来构建有弹性的防御。
需要强调的是,CrewAI 和 AutoGen 本身并非易受攻击。本研究中的攻击场景凸显了系统性风险,这些风险源于语言模型在抵抗即时注入方面的局限性以及集成工具中的错误配置或漏洞,而非任何特定框架。因此,我们的研究结果和建议的缓解措施广泛适用于所有代理应用程序,无论其底层框架如何。
Palo Alto Networks 凭借Prisma AIRS(AI 运行时安全)重新定义 AI 安全,为您的 AI 应用程序、模型、数据和代理提供实时保护。通过智能分析网络流量和应用程序行为,Prisma AIRS 可以主动检测并防御诸如快速注入、拒绝服务攻击和数据泄露等复杂威胁。在网络和 API 层面实现无缝、内联的强制执行。
同时,AI Access Security 提供对第三方生成式人工智能 (GenAI) 使用的深度可视性和精准管控。这有助于通过策略执行和用户活动监控,防止影子人工智能 (Shadow AI) 风险、数据泄露以及人工智能输出中的恶意内容。这些解决方案共同构成了多层防御,既保障了人工智能系统的运行完整性,也保障了外部人工智能工具的安全使用。
Unit 42 AI 安全评估可以帮助您主动识别最有可能针对您的 AI 环境的威胁。
如果您认为自己可能已受到威胁或遇到紧急问题,请联系第 42 单元事件响应团队。
AI代理概述
人工智能代理是一种软件程序,旨在自主地从其环境中收集数据、处理信息并采取行动以实现特定目标,而无需人工直接干预。这些代理通常由人工智能模型(尤其是大型语言模型 (LLM))驱动,这些模型是其核心推理引擎。
人工智能代理的一个关键特征是能够将人工智能模型连接到外部函数或工具,从而使其能够自主决定使用哪些工具来实现目标。函数或工具是一种外部能力——例如 API、数据库或服务——代理可以调用这些功能来执行模型内置知识之外的特定任务。这种集成使它们能够推理给定的任务、规划解决方案并有效地执行操作以实现目标。在更复杂的场景中,多个人工智能代理可以组成一个团队进行协作——每个代理处理问题的不同方面——共同解决更大、更复杂的挑战。
人工智能代理在各个领域都有着广泛的应用。在客户服务领域,它们能够支持聊天机器人和虚拟助手高效处理咨询。在金融领域,它们可以协助进行欺诈检测和投资组合管理。医疗保健领域也可以利用人工智能代理进行患者监测和诊断支持。
图 1 是一个典型的 AI 代理架构,展示了代理如何使用 LLM 通过执行循环进行规划、推理和行动。它通过函数调用连接到外部工具,以执行访问代码、数据或人工输入等任务。

该代理还可以整合短期和长期记忆,以保留上下文并增强决策能力。应用程序通过输入和输出接口(通常以 API 的形式公开)发送请求并接收结果,从而与代理进行交互。
人工智能代理的安全风险
由于AI代理通常基于LLM构建,它们继承了OWASP十大LLM安全风险中列出的许多安全风险,例如即时注入、敏感数据泄露和供应链漏洞。然而,AI代理通过集成通常以各种编程语言和框架构建的外部工具,超越了传统的LLM应用程序。
这些外部工具的使用会使 LLM 面临 SQL 注入、远程代码执行和访问控制失效等常见软件威胁。这种扩大的攻击面,加上代理与外部系统甚至现实世界交互的能力,使得 AI 代理的安全尤为重要。
最近发表的文章《OWASP Agentic AI 威胁与缓解》重点介绍了这些新兴威胁。以下是与下一节中演示的攻击场景相关的主要威胁的摘要:
- 即时注入:攻击者潜入 GenAI 系统,试图使应用程序偏离其预期行为。这可能导致代理以意想不到的方式行事,例如忽略给定的规则和策略、泄露敏感信息或使用工具执行非预期操作。
- 工具滥用:攻击者通常会通过欺骗性提示操纵代理,滥用其集成工具。这可能涉及触发意外操作或利用工具中的漏洞,从而可能导致有害或未经授权的执行。
- 意图破坏和目标操纵:攻击者通过巧妙地改变人工智能代理的感知目标或推理过程,来破坏其规划和追求目标的能力。攻击者利用这些漏洞,将代理的行为偏离其原始意图。一种常见的策略包括代理劫持,即利用对抗性输入扭曲代理的理解和决策。
- 身份欺骗和冒充:攻击者利用薄弱或被破解的身份验证机制,冒充合法的人工智能代理或用户。代理凭证被盗是一大风险,攻击者可以利用虚假身份访问工具、数据或系统。
- 意外的 RCE 和代码攻击:攻击者利用 AI 代理执行代码的能力。通过注入恶意代码,他们可以未经授权访问执行环境的元素,例如内部网络和主机文件系统。这会带来严重的风险,尤其是在代理能够访问敏感数据或特权工具的情况下。
- 代理通信中毒:攻击者通过将攻击者控制的信息注入AI代理的通信通道,来攻击其之间的交互。这可能会破坏协作工作流程,降低协调能力,并操纵集体决策——尤其是在信任和准确信息交换至关重要的多代理系统中。
- 资源过载:攻击者利用人工智能代理分配的资源,超出其计算、内存或服务限制。这会降低性能、中断运行并使应用程序无响应,从而影响应用程序的所有用户。
对人工智能代理的模拟攻击
为了研究人工智能代理的安全风险,我们使用两个流行的开源代理框架:CrewAI和AutoGen ,开发了一个多用户、多代理的投资咨询助手。这两个实现功能相同,并共享相同的指令、语言模型和工具。
此设置凸显了安全风险并非特定于任何框架或模型。相反,它们源于代理开发过程中引入的错误配置或不安全的设计。需要注意的是,CrewAI 或 AutoGen 框架并非易受攻击。
图2展示了投资咨询助手的架构,它由三个合作代理组成:编排代理、新闻代理和股票代理。

- 编排代理:该代理管理用户交互。它解释用户请求,将任务委托给相应的代理,整合它们的输出,并将最终响应返回给用户。
- 新闻代理:此代理收集并汇总有关特定公司或行业的最新财经新闻。它配备了两个工具:
- 搜索引擎工具:此工具使用 Google 检索指向相关财经新闻的 URL。我们使用 CrewAI 的SerperDevTool实现。
- 网页内容阅读器工具:此工具从给定网页获取并提取文本内容。我们使用 CrewAI 的ScrapeWebsiteTool实现。
- 股票代理:该代理帮助用户管理其股票投资组合,包括查看交易历史记录、买卖股票、检索历史股价以及生成可视化效果。它使用三个工具:
- 数据库工具:此工具提供读取或更新投资组合数据库、买卖股票以及查看交易历史记录的功能。
- 股票工具:此工具从纳斯达克获取历史股票价格。
- 代码解释工具:此工具运行 Python 代码来创建投资组合的数据可视化。
助手可以回答的示例问题:
- 显示有关 Palo Alto Networks 的新闻和观点
- 展示有关农业行业的新闻和观点
- 显示过去四周 Palo Alto Networks 的股票历史记录
- 显示我的投资组合
- 绘制过去 30 天我的投资组合表现
- 根据当前市场情绪推荐再平衡策略
- 购买两股 Palo Alto Networks 股票
- 显示我过去 60 天的交易
用户通过命令行界面与助手交互。初始数据库包含用户、投资组合和交易的合成数据集。助手使用短期记忆,仅保留当前会话内的对话历史记录。用户退出对话后,此记忆将被清除。
所有这些攻击场景都假设恶意请求是在新会话开始时发出的,并且不受先前交互的影响。有关详细的使用说明,请参阅我们的GitHub页面。
本节的其余部分介绍了九种攻击场景,如表 1 所示。
攻击场景 | 描述 | 威胁 | 缓解措施 |
识别参与者代理 | 揭示特工名单及其角色 | 即时注入、意图破坏和目标操纵 | 迅速强化,内容过滤 |
萃取剂使用说明 | 提取每个座席的系统提示和任务定义 | 即时注入、意图破坏和目标操纵、代理通信中毒 | 迅速强化,内容过滤 |
提取代理工具模式 | 检索内部工具的输入/输出模式 | 即时注入、意图破坏和目标操纵、代理通信中毒 | 迅速强化,内容过滤 |
未经授权访问内部网络 | 使用网络阅读器工具获取内部资源 | 提示注入、工具滥用、意图破坏和目标操纵、代理通信中毒 | 及时强化、内容过滤、工具输入清理 |
通过已安装的卷泄露敏感数据 | 从已安装的卷中读取并窃取文件 | 提示注入、工具滥用、意图破坏和目标操纵、身份欺骗和冒充、意外 RCE 和编码器攻击、代理通信中毒 | 即时强化、代码执行器沙盒、内容过滤 |
通过元数据服务窃取服务帐户访问令牌 | 访问并窃取云服务帐户令牌 | 提示注入、工具滥用、意图破坏和目标操纵、身份欺骗和冒充、意外的远程代码执行 (RCE) 和编码器攻击、代理通信中毒 | 即时强化、代码执行器沙盒、内容过滤 |
利用 SQL 注入窃取数据库表 | 通过 SQL 注入提取数据库内容 | 提示注入、工具滥用、意图破坏和目标操纵、代理通信中毒 | 及时强化、工具输入清理、工具漏洞扫描、内容过滤 |
利用损坏的对象级授权(BOLA)访问未经授权的用户数据 | 通过操作对象引用访问其他用户的数据 | 提示注入、工具滥用、意图破坏和目标操纵、代理通信中毒 | 工具漏洞扫描 |
间接提示注入以泄露对话历史记录 | 通过恶意网页泄露用户对话历史记录 | 提示注入、工具滥用、意图破坏和目标操纵、代理通信中毒 | 迅速强化,内容过滤 |
表 1.投资咨询助手攻击场景。
识别参与者代理
客观的
攻击者的目标是识别目标应用程序中的所有参与代理。这些信息通常可以被负责任务委托的编排代理访问,它必须了解所有参与代理及其功能。
图 3 显示我们的目标是仅从编排代理中提取信息。

攻击载荷解释
- CrewAI:我们希望协调器代理能够回答此请求,因此我们明确要求它不要将请求委托给其他同事代理。
- AutoGen:编排代理依赖一组内置工具将任务转移给同事。这些工具遵循一致的命名约定,以transfer_to_为前缀,并且同事的功能也在工具描述中指定。Swarm文档描述了此交接机制的具体细节。
整合起来
表 2 列出了用于识别参与者代理的示例攻击者输入。
设置场景 |
||||||
攻击者 | 助手的最终用户 | |||||
受害者 | 助理业主 | |||||
相关威胁: | 即时注入、意图破坏和目标操纵 | |||||
攻击载荷 |
||||||
框架 | CrewAI | 自动生成 | ||||
攻击者输入 |
|
|
||||
保护和缓解措施 |
||||||
迅速强化,内容过滤 |
表 2. 用于识别参与者代理的示例攻击者输入。
提取剂说明
客观的
攻击者试图提取每个代理的系统指令(例如,角色、目标和规则)。虽然用户只能直接访问编排代理,但他们可以明确要求编排代理将查询转发给特定代理。图 4 显示,攻击者可以利用代理之间的通信通道,向每个代理传递相同的攻击载荷。

攻击载荷解释
要提取编排代理的指令,代理请求不得委托给其他代理。要访问参与代理的指令,必须将提示转发给目标代理。由于没有关于如何委托任务的严格规则,编排代理通常会将任务转发给请求中明确指定名称的代理。
整合起来
表 3 列出了用于从股票咨询助手中的每个参与代理中提取代理指令的示例攻击者输入。
设置场景 |
||||||
攻击者 | 助手的最终用户 | |||||
受害者 | 助理业主 | |||||
相关威胁: | 即时注入、意图破坏和目标操纵、代理通信中毒 | |||||
攻击载荷 |
||||||
框架 | CrewAI | 自动生成 | ||||
攻击者对协调器代理 的输入 |
|
|
||||
攻击者输入的新闻代理 |
|
|
||||
攻击者输入股票代理 |
|
|
||||
保护和缓解措施 |
||||||
迅速强化,内容过滤 |
表 3. 用于提取代理指令的攻击者输入示例。
提取代理工具模式
客观的
攻击者的目标是提取每个代理的工具模式。虽然用户只能直接访问编排代理,但他们可以明确指示编排代理将查询转发给特定代理。图 5 显示,攻击者可以利用代理之间的通信通道,向每个代理传递相同的利用载荷。

攻击载荷解释
与代理指令提取攻击类似,表 4 中所示的每个提示都针对特定的目标代理。在 CrewAI 中,协调器将任务“委托”给同事代理;而在 AutoGen 中,协调器将任务“转移”给同事代理。
整合起来
设置场景 |
||||||
攻击者 | 助手的最终用户 | |||||
受害者 | 助理业主 | |||||
相关威胁: | 即时注入、意图破坏和目标操纵、代理通信中毒 | |||||
攻击载荷 |
||||||
框架 | CrewAI | 自动生成 | ||||
攻击者对 Orchestrator 代理的输入 |
|
|
||||
攻击者输入的新闻代理 |
|
|
||||
攻击者输入股票代理 |
|
|
||||
保护和缓解措施 |
||||||
迅速强化,内容过滤 |
表 4. 用于提取工具模式的示例攻击者输入。
未经授权访问内部网络
客观的
攻击者滥用 Web 内容读取工具访问内网的私有 Web 服务器。此攻击是服务器端请求伪造 (SSRF) 的一种变体,它依赖于未受保护的服务器(在本例中为 Web 读取工具)将攻击载荷转发到内网中的另一个目标。图 6 展示了载荷是如何被传递到目标服务器的。

攻击载荷解释
表 5 中的示例输入非常简单。由于我们要求助手阅读“新闻”网站,因此编排代理会将任务委托给新闻代理,而无需任何特殊指令。由于 Web 阅读器工具具有不受限制的网络访问权限,攻击者可以利用它来扫描并枚举内部网络中的资源。
整合起来
设置场景 |
||||||
攻击者 | 助手的最终用户 | |||||
受害者 | 助理业主 | |||||
相关威胁: | 提示注入、工具滥用、意图破坏和目标操纵、代理通信中毒 | |||||
攻击载荷 |
||||||
框架 | CrewAI | 自动生成 | ||||
攻击者输入 |
|
|
||||
保护和缓解措施 |
||||||
及时强化、内容过滤、工具输入清理 |
表 5. 获取内部网络未授权访问的攻击者输入示例。
通过挂载卷泄露敏感数据
客观的
攻击者滥用库存代理使用的代码解释器工具来访问可能被错误挂载到容器中的凭证文件。为了在代理和代码解释器之间实现文件交换,通常会将主机上的目录挂载到容器中。但是,如果挂载的卷包含敏感数据(例如凭证、源代码或配置文件),攻击者就可以利用解释器窃取这些资产。
如图 7 所示,攻击者向股票代理的代码解释器发送恶意负载。该负载在容器内执行代码,以从挂载目录中定位并提取敏感文件。

攻击载荷解释
表 6 中的示例攻击者输入指示代理在已挂载卷中搜索文件以获取凭证。请注意,攻击者输入将股票代理称为投资组合管理代理。挂载目录的路径通常在工具描述或代理指令中明确指定,从而允许代理在正常操作期间读取和写入文件。有效载荷还指示代理对输出进行 Base-64 编码,因为大多数 Frontier LLM 都具有内部安全措施,以防止生成包含敏感信息(例如机密和凭证)的响应。
整合起来
设置场景 |
||||||
攻击者 | 助手的最终用户 | |||||
受害者 | 助理业主 | |||||
相关威胁: | 提示注入、工具滥用、意图破坏和目标操纵、身份欺骗和冒充、意外 RCE 和编码器攻击、代理通信中毒 | |||||
攻击载荷 |
||||||
框架 | CrewAI | 自动生成 | ||||
攻击者输入 |
|
|
||||
保护和缓解措施 |
||||||
即时强化、代码执行器沙盒、内容过滤 |
表 6. 通过已安装的卷泄露敏感数据的攻击者输入示例。
通过元数据服务泄露服务帐户访问令牌
客观的
攻击者滥用库存代理使用的代码解释器工具来访问GCP 元数据服务。大多数云提供商都公开了类似的元数据端点,允许在虚拟机 (VM) 上运行的应用程序查询有关实例的信息。如图 8 所示,攻击者将利用有效载荷发送到库存代理的代码解释器,然后在容器中执行恶意代码以访问云基础设施的元数据服务。

一个关键的元数据是虚拟机的服务帐户,它授予虚拟机访问其他云服务和资源的权限。如果攻击者获取了服务帐户的访问令牌,他们就有可能冒充代理或其工具,甚至升级攻击,从而破坏底层云基础设施。
攻击载荷解释
表 7 中的示例攻击者输入指示代理查询 Google Compute Engine 的元数据服务器 URL,并检索虚拟机的服务帐户访问令牌。为了成功执行,请求必须包含元数据服务器验证请求所需的特殊 HTTP 标头 ( Metadata-Flavor: Google )。
整合起来
设置场景 |
||||||
攻击者 | 助手的最终用户 | |||||
受害者 | 助理业主 | |||||
相关威胁: | 提示注入、工具滥用、意图破坏和目标操纵、身份欺骗和冒充、意外 RCE 和编码器攻击、代理通信中毒 | |||||
攻击载荷 |
||||||
框架 | CrewAI | 自动生成 | ||||
攻击者输入 |
|
|
||||
保护和缓解措施 |
||||||
即时强化、代码执行器沙盒、内容过滤 |
表 7. 通过元数据服务窃取服务帐户访问令牌的攻击者输入示例。
未经授权访问应用程序数据库
利用 SQL 注入窃取数据库表
客观的
攻击者利用代理工具之一中的 SQL 注入漏洞来转储包含所有用户交易历史记录的数据库表。
图 9 说明了攻击者如何通过提示注入的方式将利用负载发送到存在漏洞的函数。

攻击载荷解释
表 8 中的提示示例指示代理使用攻击者提供的包含 SQL 注入有效载荷的输入来调用“查看事务”工具。此有效载荷旨在从事务历史记录表中提取行。为了避免达到语言模型的输出上下文限制,查询将返回的行数限制为 20 行。
整合起来
设置场景 |
||||||
攻击者 | 助手的最终用户 | |||||
受害者 | 助理所有者和助理用户 | |||||
相关威胁: | 提示注入、工具滥用、意图破坏和目标操纵、代理通信中毒 | |||||
攻击载荷 |
||||||
框架 | CrewAI | 自动生成 | ||||
攻击者输入 |
|
|
||||
保护和缓解措施 |
||||||
及时强化、工具输入清理、工具漏洞扫描、内容过滤 |
表 8. SQL 注入窃取数据库表的攻击者输入示例。
利用 BOLA 访问未经授权的用户数据
客观的
攻击者利用代理工具之一中的损坏对象级别授权 (BOLA) 漏洞来访问其他用户的交易历史记录。
攻击者以与上图 9 所示相同的方式发送利用负载。
攻击载荷解释
表 9 中的查询示例要求助手返回具有特定 ID 的交易。与之前的 SQL 注入示例不同,攻击者提供的函数输入没有任何恶意迹象。攻击者只需提供一个属于其他用户的交易 ID,助手就会使用 Get TransactionByID 工具检索该交易。由于BOLA的根本原因是后端访问控制不足,因此利用它通常很简单,不需要特制的有效载荷。这也使得 BOLA 攻击的检测变得困难。
整合起来
设置场景 |
||||||
攻击者 | 助手的最终用户 | |||||
受害者 | 助理所有者和助理用户 | |||||
相关威胁: | 提示注入、工具滥用、意图破坏和目标操纵、代理通信中毒 | |||||
攻击载荷 |
||||||
框架 | CrewAI | 自动生成 | ||||
攻击者输入 |
|
|
||||
保护和缓解措施 |
||||||
工具漏洞扫描 |
表 9.利用 BOLA 获取未经授权访问用户数据的攻击者输入示例。
间接提示注入,窃取对话历史记录
客观的
攻击者入侵目标受害者经常访问的网站,通过间接提示注入,在网页中嵌入恶意指令,诱骗助手将用户的对话历史记录发送到攻击者控制的域名。
此次攻击分为三个阶段(如图 10 所示):
- 该助手代表受害用户使用网络阅读器工具从受感染的网站检索内容。
- 检索到的网页包含恶意指令,指示助手从攻击者控制的网站加载其他内容。作为该指令的一部分,助手被要求包含一个查询参数:summary=[SUMMARY],其中[SUMMARY]应替换为用户的对话历史记录。
- 按照注入的指令,助手会总结用户的对话历史记录,对其进行 URL 编码,并在不知不觉中将其作为请求的 URL 的一部分发送到攻击者的域。

攻击载荷解释
表 10 所示的注入提示会指示助手调用 Web 阅读器工具,并访问一个由攻击者控制的 URL,该 URL 包含一个特殊的查询参数[SUMMARY]。假设攻击者知道该工具的名称和架构,恶意指令会明确指定要调用哪个工具以及如何构造请求。该结构包括将用户的对话历史记录嵌入到[SUMMARY]参数中。
整合起来
设置场景 |
||||||
攻击者 | 任何能够向助手可以访问的网页注入提示的一方 | |||||
受害者 | 助理用户和助理所有者 | |||||
相关威胁: | 提示注入、工具滥用、意图破坏和目标操纵以及代理通信中毒 | |||||
攻击载荷 |
||||||
框架 | CrewAI | 自动生成 | ||||
网页中的恶意指令 |
|
|
||||
保护和缓解措施 |
||||||
迅速强化,内容过滤 |
表 10. 间接提示注入以窃取对话历史记录的攻击者输入示例。
保护和缓解
保护代理应用程序扩展且复杂的攻击面需要分层的纵深防御策略。没有任何一种防御措施能够应对所有威胁——每种缓解措施在特定条件下仅针对一部分威胁。本节概述了与本文演示的攻击场景相关的五种关键缓解策略。
- 快速硬化
- 内容过滤
- 工具输入清理
- 工具漏洞扫描
- 代码执行器沙盒
快速硬化
提示符定义了代理的行为,就像源代码定义了程序一样。范围不明确或过于宽松的提示符会扩大攻击面,使其成为操纵的主要目标。
在 GitHub 上托管的股票咨询助手示例中,我们还提供了“强化”提示(CrewAI、AutoGen)。这些提示设计有严格的约束和防护措施,以限制代理的功能。虽然这些措施提高了成功攻击的门槛,但仅靠提示强化是不够的。高级注入技术仍然可以绕过这些防御措施,因此提示强化必须与运行时内容过滤相结合。
快速强化的最佳实践包括:
- 明确禁止代理人透露其指示、同事代理人和工具模式
- 严格定义每个代理的职责并拒绝超出范围的请求
- 将工具调用限制为预期的输入类型、格式和值
内容过滤
内容过滤器充当内联防御机制,可实时检查并选择性地阻止代理的输入和输出。这些过滤器能够有效地检测并阻止各种攻击,使其无法传播。
GenAI 应用程序长期以来一直依赖内容过滤器来防御越狱和快速注入攻击。由于代理应用程序继承了这些风险并引入了新的风险,内容过滤仍然是关键的防御层。
Palo Alto Networks AI Runtime Security等高级解决方案针对 AI 代理提供了更深入的定制检查。除了传统的提示过滤功能外,它们还可以检测:
- 工具模式提取
- 工具滥用,包括意外调用和漏洞利用
- 内存操作,例如注入指令
- 恶意代码执行,包括 SQL 注入和漏洞利用负载
- 敏感数据泄露,例如凭证和机密
- 恶意 URL 和域名引用
工具输入清理
工具绝不能默认信任其输入,即使由看似良性的代理调用也是如此。攻击者可以操纵代理,使其提供精心设计的输入,从而利用工具中的漏洞。为防止滥用,每个工具都应在执行前对输入进行清理和验证。
关键检查包括:
- 输入类型和格式(例如,预期的字符串、数字或结构化对象)
- 边界和范围检查
- 特殊字符过滤和编码,防止注入攻击
工具漏洞扫描
所有集成到代理系统中的工具都应定期接受安全评估,包括:
- 用于源代码分析的 SAST
- 用于运行时行为分析的 DAST
- SCA 检测易受攻击的依赖项和第三方库
这些做法有助于识别可能因工具滥用而被利用的错误配置、不安全的逻辑和过时的组件。
代码执行器沙盒
代码执行器使代理能够通过实时代码生成和执行来动态地解决任务。虽然此功能功能强大,但也带来了额外的风险,包括任意代码执行和横向移动。
大多数代理框架依赖基于容器的沙盒来隔离执行环境。然而,默认配置通常不够用。为了防止沙盒逃逸或滥用,请应用更严格的运行时控制:
- 限制容器网络:仅允许必要的出站域。阻止对内部服务的访问(例如,元数据端点和私有地址)。
- 限制挂载卷:避免挂载宽泛或持久路径(例如./、/home)。使用tmpfs将临时数据存储在内存中
- 删除不必要的 Linux 功能:删除特权权限,例如CAP_NET_RAW、CAP_SYS_MODULE和CAP_SYS_ADMIN
- 阻止有风险的系统调用:禁用kexec_load、mount、unmount、iopl和bpf等系统调用
- 强制执行资源配额:应用 CPU 和内存限制,以防止拒绝服务 (DoS)、失控代码或加密劫持
结论
代理应用程序继承了 LLM 和外部工具的漏洞,同时通过复杂的工作流、自主决策和动态工具调用扩展了攻击面。这放大了入侵的潜在影响,其后果可能从信息泄露和未经授权的访问升级到远程代码执行和全面基础设施接管。正如我们的模拟攻击所展示的,各种各样的即时有效载荷都可能触发相同的漏洞,这凸显了这些威胁的灵活性和规避性。
保护人工智能代理需要的不仅仅是临时修复,还需要一套纵深防御策略,涵盖快速强化、输入验证、安全工具集成和强大的运行时监控。
仅靠通用安全机制是不够的。企业必须采用专用解决方案(例如 Palo Alto Networks Prisma AIRS)来发现、评估和防御代理应用程序特有的威胁。