A2A Java SDK przesyła dane uwierzytelniające klienta pod nazwą nagłówka HTTP kontrolowaną przez serwer, umożliwiając wyciek danych przez przekierowanie
Wpływ
Złośliwy lub przejęty agent A2A może spowodować przesłanie klucza API klienta do dowolnego serwera strony trzeciej. Agent zwraca AgentCard z obiektem APIKeySecurityScheme określającym niestandardową nazwę nagłówka, a następnie odpowiada przekierowaniem HTTP. Narzędzie JDK HttpClient podąża za przekierowaniem i przekazuje niestandardowy nagłówek z poświadczeniami, ponieważ przy przekierowaniach cross-origin usuwany bywa wyłącznie standardowy nagłówek Authorization.
Gdzie występuje
client/transport/spi/src/main/java/org/a2aproject/sdk/client/transport/spi/interceptors/auth/AuthInterceptor.java:69 w intercept
Szczegóły problemu
Pole apiKeySecurityScheme.name() z karty AgentCard zdalnego agenta (niezaufane dane kontrolowane przez serwer) jest bezpośrednio używane jako nazwa nagłówka HTTP przy dodawaniu poświadczeń klienta. W połączeniu z polityką followRedirects(NORMAL) stosowaną przez JdkA2AHttpClient, dane uwierzytelniające w niestandardowych nagłówkach są zachowywane przy przekierowaniach między domenami (w nowszych wersjach JDK usuwany jest tylko Authorization), co pozwala na ich wyciek na serwery osób trzecich. Ponadto AuthInterceptor nie sprawdza, czy zachodzi location==HEADER, przed umieszczeniem poświadczenia w nagłówku.
Scenariusz ataku
- Klient konfiguruje dane uwierzytelniające klucza API dla schematu bezpieczeństwa agenta
myAuth. - Złośliwy agent zwraca AgentCard, w którym
securitySchemeszawieramyAuthjakoAPIKeySecuritySchemezname='X-Leaked-Cred'orazlocation=HEADER. AuthInterceptorumieszcza poświadczenia w nagłówkuX-Leaked-Cred.- Agent odpowiada przekierowaniem HTTP 302 na adres
https://evil.com/collect. JdkA2AHttpClientpodąża za przekierowaniem, przekazując wszystkie niestandardowe nagłówki, w tymX-Leaked-Cred, doevil.com. Atakujący przejmuje dane uwierzytelniające klienta.
Warunki wstępne
- Aplikacja klienta ma skonfigurowane poświadczenia klucza API za pomocą
CredentialServicedla schematu zabezpieczeń agenta. - Agent jest złośliwy lub przejęty (kontroluje swoją odpowiedź AgentCard).
- Używane jest domyślne
JdkA2AHttpClient(zfollowRedirects=NORMAL). - Wersja JDK nie usuwa nagłówków niestandardowych przy przekierowaniach cross-origin (dotyczy wszystkich obecnych wersji).
Rozwiązanie
Zweryfikuj pole APIKeySecurityScheme.name() pod kątem białej listy bezpiecznych nazw nagłówków. Sprawdź, czy apiKeySecurityScheme.location() jest równe Location.HEADER, zanim poświadczenia zostaną dodane jako nagłówek. Rozważ użycie followRedirects(NEVER) i wdrożenie ręcznej obsługi przekierowań, która usuwa wszystkie nagłówki uwierzytelniające przy przekierowaniach cross-origin.
Weryfikacja
Potwierdzone za pomocą weryfikatorów soczewkowych 2/3.
Co trzeba zrobić
Należy zweryfikować pole APIKeySecurityScheme.name() pod kątem listy bezpiecznych nazw nagłówków. Przed dodaniem poświadczeń do nagłówka upewnij się, że apiKeySecurityScheme.location() jest równe Location.HEADER. Warto rozważyć użycie followRedirects(NEVER) oraz wdrożenie ręcznej obsługi przekierowań usuwającej nagłówki uwierzytelniające w zapytaniach cross-origin. Zaktualizuj bibliotekę do wersji 1.3.0.Final lub nowszej.
Czego dotyczy
Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.
| Platforma | Paczka | Podatne wersje | Poprawka w wersji |
|---|---|---|---|
| Java / Kotlin (Maven) | org.a2aproject.sdk:a2a-java-sdk-parent | < 1.3.0.Final | 1.3.0.Final |
Odnośniki
- https://github.com/a2aproject/a2a-java/security/advisories/GHSA-4fpj-g9jf-9rgg
- https://github.com/a2aproject/a2a-java/security/advisories/GHSA-9rhm-2h4x-jwmx
- https://nvd.nist.gov/vuln/detail/CVE-2026-111763
- https://github.com/a2aproject/a2a-java/pull/1097
- https://github.com/a2aproject/a2a-java/commit/2a36530d75e11bcf9b81f543464dbe193ca6478e
- https://github.com/a2aproject/a2a-java
- https://github.com/a2aproject/a2a-java/releases/tag/v1.3.0.Final
- Wektor CVSS
CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N- Słabość (CWE)
CWE-522- Platforma
- Java / Kotlin (Maven)
- Paczka
org.a2aproject.sdk:a2a-java-sdk-parent- Ujawniono
- 20.10.2026
- Aktualizacja
- 21.10.2026 00:18
Źródła i licencje · Redakcja lub tłumaczenie: DockRay. Zachowano prawa źródeł i obowiązujące licencje.
OSV / GitHub Advisory Database - GHSA-9rhm-2h4x-jwmx - CC BY 4.0
Historia podatności: org.a2aproject.sdk:a2a-java-sdk-parent
Wszystkie opisane podatności tej paczki (Java / Kotlin (Maven)), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.
To jedyna znana podatność tej paczki.
Dowiedz się, które podatności dotyczą Twojej aplikacji
Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.