무슨 일이 있었나
공식 A2A(Agent2Agent) Java SDK 1.3.0.Final 이전 버전에서 AuthInterceptor.intercept는 자격 증명을 보유한 HTTP 헤더 이름으로 원격 AgentCard의 APIKeySecurityScheme.name()을 직접 사용하며, 선언된 위치가 HEADER인지 확인하지 않습니다. JdkA2AHttpClient는 리디렉션을 따르므로(NORMAL), 악의적이거나 손상된 원격 에이전트가 표준 Authorization 헤더가 제거된 경우에도 교차 출처 리디렉션을 통해 구성된 API 키를 타사 서버로 전달하도록 클라이언트를 유도할 수 있습니다.
왜 중요한가
이 실패로 인해 클라이언트가 이미 통신 중인 에이전트가 리디렉션을 조작하여 해당 에이전트를 위해 구성된 API 키를 탈취할 수 있습니다. CredentialService를 통해 자격 증명이 공급되는 에이전트 간 배포에서 신뢰할 수 없는 다운스트림 에이전트가 클라이언트의 비밀을 수집하여 의도된 서비스에 사용할 수 있으며, 이는 키가 구성된 에이전트에 유지된다는 가정을 깨뜨립니다.
공격 경로
에이전트가 제어하는 AgentCard + 교차 출처 리디렉션이 자격 증명을 포함한 사용자 정의 헤더를 타사 서버로 전달
영향받는 시스템
a2a-java (A2A Java SDK) < 1.3.0.Final
완화 방안
a2a-java 1.3.0.Final로 업그레이드; 보안 스킴 위치가 HEADER인지 검증하고 리디렉션 추적 제한