事件经过
在官方 A2A(Agent2Agent)Java SDK 1.3.0.Final 之前版本中,AuthInterceptor.intercept 直接使用远程 AgentCard 的 APIKeySecurityScheme.name() 作为承载凭据的 HTTP 头名称,而未检查声明的 location 是否为 HEADER。JdkA2AHttpClient 会跟随重定向(NORMAL),因此恶意或受损的远程代理可导致客户端通过跨源重定向将配置的 API 密钥转发给第三方服务器,即使标准 Authorization 头已被移除。
影响分析
此缺陷使得客户端正在通信的代理能够通过引导重定向窃取为该代理配置的 API 密钥。在通过 CredentialService 提供凭据的代理到代理部署中,非受信任的下游代理可以收集客户端的机密,并将其用于预期服务,从而打破了密钥仅保留在配置代理处的假设。
攻击途径
代理控制的 AgentCard + 跨源重定向将承载凭据的自定义头转发给第三方服务器
受影响系统
a2a-java (A2A Java SDK) < 1.3.0.Final
缓解措施
升级到 a2a-java 1.3.0.Final;验证安全方案位置为 HEADER 并限制重定向跟随