Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend message with malicious push-notification config
-
DeliveryServer stores webhook URL unvalidated
-
ExploitTask status/artifact update fires
-
ExecutionServer POSTs task data to internal address
-
ImpactAttacker-influenced data reaches internal infrastructure
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Credential Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires the server to have push notifications enabled, which is the DEFAULT (a2a.push-notification.enabled=true per the vendor configuration docs). An unauthenticated caller then supplies an attacker-controlled destination URL either via an inline SendMessage pushNotification config or via CreateTaskPushNotificationConfig for an existing task; BasePushNotificationSender/InMemoryPushNotificationConfigStore store and use it verbatim with no scheme restriction, destination validation, or redirect bounds. Exploitation further depends on network routing actually permitting the server to reach the chosen loopback/private/link-local/cloud-metadata/IPv6-ULA/multicast target. Key LIMITING factors: the attack is blind - the fetched response is discarded and no delivery success/failure is exposed, so there is no data read-back; a webhook redirect converts the POST to a GET and drops the body, so only direct (non-redirected) POST delivery pushes task data into internal services; and the fixed releases plus default-deny validation (allow-private-network-targets=false, https-only schemes) remove the condition once upgraded. |
| Impact | This is a CWE-918 Server-Side Request Forgery in the A2A Java SDK rated CVSS 5.8 (medium). The CVSS vector (AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:L/A:N) aligns well with the description: network-reachable, low-complexity, unauthenticated abuse in the default configuration (push notifications enabled), with a changed scope because the forged requests leave the A2A server and reach separate internal systems. Crucially, impact is constrained - C:N and A:N with only I:L - because the sender discards the fetched response and exposes no success/failure, making this BLIND SSRF with no response read-back, and a webhook redirect downgrades the POST to a GET that drops the body. No EPSS score, KEV entry, or POC was supplied, and there is no public exploit identified at time of analysis, so the real-world exploitation signal is currently weak despite the unauthenticated, network-facing nature. Net assessment: a legitimate medium-priority SSRF worth patching (especially in cloud environments exposing 169.254.169.254 metadata endpoints), but not a drop-everything emergency - the blind, low-integrity-only impact and absence of any exploitation evidence argue against treating it as a high-real-risk issue. The vendor acknowledges residual DNS-rebinding exposure even after the fix, so network-level egress filtering remains advisable. |
| Exploit ScenarioDerived | An unauthenticated attacker sends a message to a default A2A Java server (push notifications enabled) with an inline push-notification config pointing the webhook URL at an internal address such as the cloud metadata endpoint (169.254.169.254) or a loopback/private service. When the task's status or artifacts update, the server issues a POST from its own network position to that internal destination, pushing attacker-influenced task data into services the attacker cannot normally reach. No POC is publicly identified; exploitation is blind because the server never returns the fetched response. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 20, 2026
Server-side request forgery in the A2A Java SDK before 1.3.0.Final allows an unauthenticated caller to register an attacker-chosen push-notification destination and make the server send task updates to loopback, private, link-local, cloud-metadata, IPv6 unique-local, or multicast addresses where routing permits. Push notifications are enabled by default, and the vulnerable BasePushNotificationSender sends to the stored TaskPushNotificationConfig URL without scheme restrictions, destination validation, or redirect bounds, although the attack is blind because responses are discarded and delivery success is not exposed. No public exploit was identified at time of analysis; the issue is rated CVSS 5.8 (medium, CWE-918) and is fixed in 1.3.0.Final.
RemediationAI
Upgrade to 1.3.0.Final, which is the vendor-released patch and introduces DefaultPushNotificationUrlValidator with default-deny settings (https-only schemes; private, loopback, link-local, RFC 6598, IPv6 unique-local, IPv4-mapped IPv6, and multicast targets blocked). If immediate upgrade is not possible, set a2a.push-notification.enabled=false to stop accepting push-notification configurations; this removes the SSRF condition but disables webhook functionality, causes inline sendMessage configs to be silently ignored, and makes CreateTaskPushNotificationConfig return UnsupportedOperationError. Do not set a2a.push-notification.url.allow-private-network-targets=true outside trusted development environments. Because hostname resolution occurs at validation rather than connection time and the vendor documents a DNS-rebinding limitation, add network-level egress firewall rules that block the server from reaching loopback, RFC 1918, link-local 169.254.0.0/16, 100.64.0.0/10, IPv6 fc00::/7, and cloud metadata endpoints; the trade-off is that legitimate internal webhook targets must be explicitly allowed. References: https://github.com/a2aproject/a2a-java/security/advisories/GHSA-q78c-5jjq-57g8, https://github.com/a2aproject/a2a-java/pull/1096, https://github.com/a2aproject/a2a-java/commit/b855b2ae37e4bf23f73e7746ce166fbc5a0b8b5b, https://github.com/a2aproject/a2a-java/releases/tag/v1.3.0.Final.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in maven, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
CWE-918 Server-Side Request Forgery is present in the A2A Java SDK's server-common push notification path. InMemoryPushNotificationConfigStore.setInfo persists the client-supplied destination URL verbatim, and onCreateTaskPushNotificationConfig does not validate it; BasePushNotificationSender then POSTs task status and artifact data to that URL. Because JdkA2AHttpClient and VertxA2AHttpClient follow redirects, a webhook can redirect the delivery, and a POST-to-GET redirect drops the request body; hostname-only checks do not prevent DNS rebinding because resolution occurs at validation time rather than connection time. The 1.3.0.Final fix adds PushNotificationUrlValidator/DefaultPushNotificationUrlValidator with configurable properties: a2a.push-notification.enabled, a2a.push-notification.url.allowed-schemes (default https), a2a.push-notification.url.allow-private-network-targets (default false, blocking loopback, link-local, site-local, RFC 6598 shared space, IPv6 unique-local, IPv4-mapped IPv6, and multicast), and a2a.push-notification.url.dns-cache-ttl-seconds. The CPE cpe:2.3:a:a2aproject:a2a-java:*:*:*:*:*:*:*:* covers all prior releases.
Know when A2A Java gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:L/A:N
Unauthenticated network request forgery in default config (AV:N/AC:L/PR:N); scope changes to internal systems (S:C); blind SSRF yields I:L only with no response read-back (C:N/A:N).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
A2A Java SDK is the official Java SDK for the Agent2Agent (A2A) Protocol. Prior to 1.3.0.Final, BasePushNotificationSender in server-common sends task data to the URL in TaskPushNotificationConfig without destination validation, scheme restrictions, or bounds on redirects. InMemoryPushNotificationConfigStore.setInfo stores the URL verbatim, and onCreateTaskPushNotificationConfig does not validate the destination. In the default deployment with push notifications enabled, an unauthenticated caller can register a destination through an inline SendMessage configuration or CreateTaskPushNotificationConfig for an existing task, causing task status and artifact updates to send requests from the server's network position to loopback, private, link-local cloud-metadata, IPv6 unique-local, unspecified, or multicast destinations where routing permits. JdkA2AHttpClient and VertxA2AHttpClient follow redirects, allowing a webhook redirect to bypass creation-time destination checks and convert a POST into a GET; hostname-only checks also do not prevent DNS rebinding. Direct POST delivery can push attacker-influenced task data into internal services, whereas a redirected POST-to-GET request drops the body. The sender discards the fetched response and does not expose delivery success or failure, so the demonstrated behavior does not provide response read-back. No credentials or user interaction are required. This issue is fixed in version 1.3.0.Final.
Blast Radius
ecosystem impact- 37 maven packages depend on org.a2aproject.sdk:a2a-java-sdk-server-common (24 direct, 13 indirect)
Ecosystem-wide dependent count for version 1.3.0.Final.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.
Credential disclosure in the A2A Java SDK Android HTTP client versions 1.3.0.Final and 1.3.1.Final allows unauthenticate
Unauthenticated task-read disclosure in the A2A Java SDK before 1.3.0.Final lets any network caller retrieve another cal
HTTP response splitting in a2a-java 1.2.0 allows attackers who control push notification authentication credentials to i
A2A Java SDK releases prior to 1.3.0.Final leak configured API key credentials to attacker-controlled third-party server
Cleartext credential disclosure in the A2A Java SDK prior to 1.3.0.Final writes push-notification bearer tokens and auth
Missing authorization in the A2A Java SDK (a2aproject/a2a-java) 1.2.0 allows a caller with a valid account to invoke the
EUVD-2026-105043
GHSA-q78c-5jjq-57g8
NVD
CVE.org
EPSS
VulDB
Exploit-DB