8
月
在社区成长 8 月
LEVEL 50
100 XP
执行摘要
我们发现了一种新的攻击技术,我们称之为代理会话走私。该技术允许恶意AI 代理利用已建立的跨代理通信会话向受害者代理发送秘密指令。在这里,我们讨论使用Agent2Agent (A2A) 协议的通信会话中可能出现的问题,该协议是管理代理之间连接的流行选项。 A2A 协议的状态行为让代理能够记住最近的交互并保持连贯的对话。此攻击利用此属性将恶意指令注入对话中,将它们隐藏在其他良性的客户端请求和服务器响应中。
许多人工智能威胁涉及使用单个恶意数据(例如欺骗性电子邮件或文档)来欺骗代理。我们的研究强调了一种更高级的危险:恶意代理。
对受害代理的直接攻击可能涉及一次性欺骗其按照文档中的有害指令执行操作,而不寻求用户的确认。相比之下,流氓特工是一种更加动态的威胁。它可以进行对话、调整策略并在多次交互中建立错误的信任感。
这种情况尤其危险,因为正如最近的一项研究表明,代理通常被设计为默认信任其他协作代理。代理会话走私利用了这种内置信任,允许攻击者在整个会话中操纵受害代理。
这项研究并未揭示A2A 协议本身的任何漏洞。相反,该技术利用了代理之间隐式信任关系影响任何有状态协议的方式——这意味着任何可以记住最近交互并执行多轮对话的协议。
缓解需要分层防御策略,包括:
关键操作的人机交互(HitL) 执行
远程代理验证(例如,加密签名的代理卡)
用于检测偏离主题或注入指令的上下文基础技术
Palo Alto Networks 客户通过以下产品和服务得到更好的保护:
Prisma AIRS 旨在通过检测和阻止威胁、防止数据泄露以及在各种人工智能应用程序中执行安全使用策略,为人工智能系统提供分层、实时的保护。
AI Access Security 旨在实现对第三方GenAI 工具使用的可见性和控制,通过策略执行和用户活动监控,帮助防止敏感数据泄露、风险模型的不安全使用和有害输出。
Cortex Cloud AI-SPM 旨在提供人工智能资产(商业和自我管理模型)的自动扫描和分类,以检测敏感数据并评估安全态势。上下文由人工智能类型、托管云环境、风险状态、态势和数据集决定。
Unit 42 AI 安全评估可以帮助您主动识别最有可能针对您的AI 环境的威胁。
如果您认为自己可能已受到威胁或有紧急事项,请联系Unit 42 事件响应团队。
相关单元42 主题
GenAI,Google
A2A 协议概述以及与 MCP 的比较
A2A 协议是一种开放标准,可促进AI 代理之间的互操作通信,无论供应商、架构或底层技术如何。其核心目标是使智能体能够发现、理解并相互协调,以解决复杂的分布式任务,同时保留自主性和隐私。在A2A协议中:
本地代理与发起代理在同一应用程序或进程中运行,从而实现快速的内存通信。
远程代理作为独立的、可通过网络访问的服务运行。它使用A2A协议创建一个安全的通信通道,使其能够处理其他系统甚至其他组织委托的任务,然后返回结果。
有关A2A 基础知识和安全注意事项的更多详细信息,请参阅我们的文章: 保护AI 代理: 深入了解A2A 协议风险和缓解措施。
A2A 与模型上下文协议(MCP) 具有显着的相似之处,后者是一种广泛使用的标准,用于将大型语言模型(LLM) 连接到外部工具和上下文数据。两者都旨在标准化人工智能系统的交互方式,但它们在代理系统的不同方面运行。
MCP 充当通用适配器,提供对工具和数据源的结构化访问。它主要通过集中式集成模型支持LLM 到工具的通信。
A2A 重点关注代理之间的互操作性。它支持分散的点对点协调,代理可以在协作工作流程中委派任务、交换信息并保存状态。
简而言之,MCP强调通过工具集成执行,而A2A强调跨代理的编排。
尽管存在这些差异,但这两种协议都面临着类似的威胁类别,如表1 所示。
攻击/威胁
MCP
A2A
工具/代理描述中毒
工具描述可能会受到在工具选择和执行过程中操纵LLM 行为的恶意指令的影响
AgentCard 描述可以嵌入提示注入或恶意指令,在使用时操纵客户端代理的行为
地毯拉动攻击
以前受信任的MCP 服务器在集成后可能会意外地转变为恶意行为,利用已建立的信任关系
受信任的代理可能会通过更新其代理卡或操作逻辑而意外地变得恶意
工具/代理影子
恶意服务器注册与合法工具名称相同或相似的工具,导致工具选择时出现混乱
流氓特工创建特工卡,通过相似的名称、技能或误植技术来模仿合法特工
参数/技能中毒
可以操纵工具参数以在对外部服务器的请求中包含非预期数据(例如对话历史记录)
可以精心设计AgentCard 技能和示例来操纵代理的交互方式,从而可能暴露敏感上下文或凭据
表1. MCP 和A2A 攻击的比较。
代理会话走私攻击
代理会话走私是一种特定于状态跨代理通信(例如A2A 系统)的新攻击媒介。如果通信能够记住最近的交互,例如双方都跟踪正在进行的上下文的对话,那么它就是有状态的。攻击的核心涉及恶意远程代理,该代理滥用正在进行的会话,在合法客户端请求和服务器响应之间注入附加指令。这些隐藏指令可能会导致上下文中毒(破坏人工智能对对话的理解)、数据泄露或在客户端代理上执行未经授权的工具。
图1 概述了攻击序列:
步骤1: 客户端代理通过向远程代理发送正常请求来发起新会话。
步骤2: 远程代理开始处理请求。在此活动会话期间,它会通过多个回合交互秘密地向客户端代理发送额外指令。
步骤3: 远程代理返回对原始请求的预期响应,完成事务。
图1. 代理会话走私攻击流程。攻击的关键属性Stateful: 该攻击利用远程代理管理长时间运行的任务和保留会话状态的能力。这意味着代理会保存交互的上下文,就像一个人在听句子结尾时记住句子的开头一样。在此上下文中,有状态意味着代理在多个回合中保留并引用特定于会话的信息(例如,与会话ID 相关的对话历史记录、变量或任务进度),因此后续消息可以依赖于较早的上下文。
多轮交互: 由于有状态属性,两个连接的代理可以进行多轮对话。恶意代理可以利用这一点来发动渐进式、自适应多轮攻击,在之前的研究中,这种攻击已被证明更难以防御(例如,请参阅Nathaniel Li 等人在Scale 上的“LLM 防御对于多轮人类越狱尚不稳健”)。
自主和自适应: 由人工智能模型支持的恶意代理可以根据实时上下文(例如客户端输入、中间响应和用户身份)动态地编写指令。
最终用户无法检测到:注入的指令发生在会话中间,这使得最终用户看不到它们,而最终用户通常只能看到来自客户端代理的最终综合响应。
原则上,任何具有状态代理间通信的多代理系统都可能容易受到这种攻击。然而,完全包含在单个信任边界内的设置的风险较低。信任边界是系统中所有组件默认受信任的区域,例如ADK 或LangGraph 多代理系统,其中一个管理员控制所有参与代理。
因此,我们的研究重点是A2A 协议,该协议是为跨界互操作性而明确设计的。这种互操作性使代理能够跨不同系统、模块或组织进行协作。
与已知的MCP 威胁相比,代理会话走私以MCP 中不可能的方式利用A2A 的状态和自适应设计。 MCP 服务器通常以无状态方式运行,执行隔离的工具调用而不保留会话历史记录,这限制了攻击者使用它们发起多回合或不断演变的攻击的能力。
MCP 服务器通常也是静态和确定性的,因为它们不依赖于AI 模型。相比之下,A2A 服务器可以持久保存stat