A2A Java SDK: Dane uwierzytelniające powiadomień push zapisywane jawnym tekstem w logach przy błędzie parsowania protobuf
Wpływ
Tokeny bearer powiadomień push oraz poświadczenia uwierzytelniające przesyłane przez klientów są zapisywane w plikach dziennika serwera w postaci jawnego tekstu. Każdy operator, system agregacji logów lub atakujący posiadający dostęp do dzienników może odczytać te poufne dane i wykorzystać je do uwierzytelnienia się w punktach końcowych powiadomień push klienta, potencjalnie przesyłając sfałszowane aktualizacje statusu zadań.
Gdzie
transport/rest/src/main/java/org/a2aproject/sdk/transport/rest/handler/RestHandler.java:676 w parseRequestBody
Szczegóły
Metoda parseRequestBody rejestruje całą treść żądania JSON na poziomie SEVERE, gdy JsonFormat.parser().merge() wyrzuca InvalidProtocolBufferException. Metoda ta jest wywoływana z createTaskPushNotificationConfiguration (linia 377), gdzie treść zawiera dostarczone przez klienta tokeny bearer powiadomień push (pole token) oraz poświadczenia uwierzytelniające (pole authentication.credentials). Te poufne dane trafiają w całości do logów serwera.
Scenariusz ataku
Klient tworzy konfigurację powiadomień push, wysyłając żądanie POST pod adres /v1/tenants/{tenant}/tasks/{taskId}/pushNotificationConfigs z treścią zawierającą {"url": "https://client.example.com/webhook", "token": "secret-bearer-token", "authentication": {"scheme": "Bearer", "credentials": "oauth-access-token"}, "extraField": "value"}. Dodatkowe pole powoduje, że JsonFormat.parser().merge() zgłasza InvalidProtocolBufferException. Cała treść żądania, w tym secret-bearer-token oraz oauth-access-token, zostaje zarejestrowana na poziomie SEVERE. Atakujący posiadający dostęp do logów przejmuje poświadczenia w postaci jawnego tekstu.
Warunki wstępne
- Atakujący musi mieć dostęp do plików dziennika serwera (scentralizowane logowanie, agregacja logów, współdzielona infrastruktura lub dostęp wewnętrzny).
- Funkcja powiadomień push musi być włączona.
- Treść żądania musi spowodować błąd deserializacji protobuf, pozostając poprawnym formatem JSON (nieznane pola przy ścisłym parsowaniu, niezgodności schematów).
Rozwiązanie
Nie należy rejestrować nieprzetworzonej treści żądania. Należy logować wyłącznie oczyszczone podsumowanie — długość treści oraz typ zawartości, a nie samą treść. Wywołanie logowania powinno zostać zastąpione czymś na wzór: log.log(Level.SEVERE, "Error parsing JSON request body (length={0})", body != null ? body.length() : 0).
Weryfikacja
Potwierdzone przez weryfikatory lens 3/3.
Co trzeba zrobić
Zaktualizuj pakiet org.a2aproject.sdk:a2a-java-sdk-transport-rest 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-transport-rest | < 1.3.0.Final | 1.3.0.Final |
Odnośniki
- https://github.com/a2aproject/a2a-java/security/advisories/GHSA-x32g-jvvm-4725
- https://nvd.nist.gov/vuln/detail/CVE-2026-111762
- https://github.com/a2aproject/a2a-java/commit/88827105fee0daaac0d883a4a68eb644571d7230
- 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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X- Słabość (CWE)
CWE-532- Platforma
- Java / Kotlin (Maven)
- Paczka
org.a2aproject.sdk:a2a-java-sdk-transport-rest- Ujawniono
- 20.10.2026
- Aktualizacja
- 21.10.2026 00:21
Źródła i licencje · Redakcja lub tłumaczenie: DockRay. Zachowano prawa źródeł i obowiązujące licencje.
OSV / GitHub Advisory Database - GHSA-x32g-jvvm-4725 - CC BY 4.0
Historia podatności: org.a2aproject.sdk:a2a-java-sdk-transport-rest
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.