Description
Server-Side Request Forgery (SSRF) vulnerability in Apache Camel A2A component.



This issue affects Apache Camel: from 4.21.0 before 4.22.2.



WebhookUrlValidator classified a push notification webhook host in two places that did not agree. A host written as an IP literal was matched against a list of string prefixes that named the IPv6 unique local range fc00::/7, while a host reached through a name was resolved and the resulting address classified with the InetAddress predicates isLoopbackAddress, isAnyLocalAddress, isLinkLocalAddress and isSiteLocalAddress. Those predicates do not cover the same ground as the prefix list: isSiteLocalAddress reports the deprecated fec0::/10 block and not the fc00::/7 unique local addresses that replaced it, and the JDK carries no predicate for them at all. The same address was therefore accepted or rejected depending on how it was written, and a webhook URL whose host name resolved into fc00::/7 passed a guard that refused the identical address given as a literal. PushNotificationDispatcher then sent the push notification to that address, together with any Authorization header carried in the same configuration, whose scheme and credentials the registering caller supplies. The webhook URL arrives as TaskPushNotificationConfig.url from the caller registering the push notification, so it is attacker-controlled, and allowLocalWebhookUrls is false by default, which is the configuration in which the guard is expected to hold. The response is not relayed back to the caller who registered the configuration, so what the gap yields is a blind outbound HTTPS request from the Camel process to an internal address the guard was written to refuse; reaching a service that way additionally requires that the name resolve into fc00::/7 in the target environment, that an HTTPS service be listening on that address, and that the TLS handshake succeed for the name being requested, which is why the severity is assessed medium. The same string pre-check was also wrong in the other direction: it matched the raw host string without first establishing that the host was an IP literal, so any name merely beginning with fc or fd, such as fcm.googleapis.com, was refused outright.



Users are recommended to upgrade to version 4.23.0, which fixes the issue. If users are on the 4.22.x releases stream, then they are suggested to upgrade to 4.22.2. The 4.21.x release line reached end of life before this issue was resolved and will not receive a fix, so deployments on it must move to a supported release. Both the literal and the resolved path now classify the address from its raw bytes with one shared classifier, which recognises fc00::/7 and the shared address space 100.64.0.0/10, as well as IPv4-compatible, NAT64 (64:ff9b::/96) and 6to4 (2002::/16) addresses whose embedded IPv4 address is not globally routable. For deployments that cannot upgrade immediately, place authentication in front of the A2A push notification configuration path so that the webhook URL does not arrive from an untrusted caller, and deny egress from the Camel process to fc00::/7 at the network level; where the deployment has no need of IPv6, starting the JVM with -Djava.net.preferIPv4Stack=true removes the address class the gap turns on. Note that allowLocalWebhookUrls=false is already the default and does not by itself close the gap.
Published: 2026-10-29
Score: 4.8 Medium
EPSS: n/a
KEV: No
Impact: Server‑Side Request Forgery (SSRF) via push‑notification webhook mismatch
Action: Apply Patch
AI Analysis

Impact

An SSRF flaw exists in the Camel‑A2A push‑notification component where a webhook URL supplied in a registration request can be resolved to a private address (fc00::/7 unique local) or an IP literal. The component compares the host string directly to a list of IPv6 unique local prefixes when an IP literal is used, but when a hostname is resolved it relies on JDK predicates that do not cover the same address space. As a result, an attacker‑controlled webhook URL that resolves to an internal address may pass validation in one form and fail in another. Once accepted, the component sends a blind outbound HTTPS request to that address, together with any supplied Authorization header, exposing internal services to unauthorized access or processing. The issue is classified as CWE‑918 and can lead to confidentiality or availability compromise of internal resources.

Affected Systems

The vulnerability affects Apache Camel versions 4.21.0 through 4.22.1, covering the A2A component introduced in 4.21.0. The fix is available in Camel 4.23.0 and, for the 4.22.x line, in 4.22.2. Deployments on the 4.21.x line are no longer supported and must migrate to a supported release.

Risk and Exploitability

With a CVSS score of 4.8, the flaw is rated medium severity. The EPSS score is not available, and the vulnerability is not listed in the CISA KEV catalog. The likely attack vector requires that an attacker be able to register a push‑notification webhook, either by authenticating to the Camel API or by exploiting a pathway that exposes the registration endpoint. The attacker then supplies a hostname that resolves to a private IPv6 address; the Camel process will silently perform an HTTPS request to that address, which can trigger side‑channel attacks or internal service access if TLS negotiation succeeds. While no user‑visible response is returned, the blind outbound request can be leveraged for reconnaissance or exploitation of internal services.

Generated by OpenCVE AI on October 29, 2026 at 11:21 UTC.

Remediation

Vendor Solution

Upgrade to Apache Camel 4.23.0, which fixes the issue. Users on the 4.22.x stream should upgrade to 4.22.2. Both the literal and the resolved path now classify the address from its raw bytes with one shared classifier, which recognises fc00::/7 along with IPv4-compatible IPv6, the NAT64 well-known prefix 64:ff9b::/96, 6to4 under 2002::/16 and the shared address space 100.64.0.0/10. The camel-a2a component was introduced in 4.21.0 and is marked Preview; the 4.21.x line is not a maintenance stream and does not receive a fix, and the 4.18.x and 4.14.x lines never carried the component.


Vendor Workaround

Place authentication in front of the A2A push notification configuration path so that the webhook URL does not arrive from an untrusted caller, and deny egress from the Camel process to fc00::/7 at the network level. Where the deployment has no need of IPv6, starting the JVM with -Djava.net.preferIPv4Stack=true removes the address class the gap turns on. Setting allowLocalWebhookUrls=false is not a workaround: it is already the default and does not close the gap.


OpenCVE Recommended Actions

  • Upgrade Apache Camel to version 4.23.0; if you are on the 4.22.x stream upgrade to 4.22.2
  • Place authentication in front of the A2A push‑notification configuration endpoint to ensure only trusted callers can register webhooks
  • Denial‑of‑service control the egress from the Camel process to fc00::/7 at the network level or block the subnet in firewall rules
  • If IPv6 is not required, start the JVM with –Djava.net.preferIPv4Stack=true to prevent the classification that allows the bypass

Generated by OpenCVE AI on October 29, 2026 at 11:21 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 29 Oct 2026 10:45:00 +0000

Type Values Removed Values Added
Description Server-Side Request Forgery (SSRF) vulnerability in Apache Camel A2A component. This issue affects Apache Camel: from 4.21.0 before 4.22.2. WebhookUrlValidator classified a push notification webhook host in two places that did not agree. A host written as an IP literal was matched against a list of string prefixes that named the IPv6 unique local range fc00::/7, while a host reached through a name was resolved and the resulting address classified with the InetAddress predicates isLoopbackAddress, isAnyLocalAddress, isLinkLocalAddress and isSiteLocalAddress. Those predicates do not cover the same ground as the prefix list: isSiteLocalAddress reports the deprecated fec0::/10 block and not the fc00::/7 unique local addresses that replaced it, and the JDK carries no predicate for them at all. The same address was therefore accepted or rejected depending on how it was written, and a webhook URL whose host name resolved into fc00::/7 passed a guard that refused the identical address given as a literal. PushNotificationDispatcher then sent the push notification to that address, together with any Authorization header carried in the same configuration, whose scheme and credentials the registering caller supplies. The webhook URL arrives as TaskPushNotificationConfig.url from the caller registering the push notification, so it is attacker-controlled, and allowLocalWebhookUrls is false by default, which is the configuration in which the guard is expected to hold. The response is not relayed back to the caller who registered the configuration, so what the gap yields is a blind outbound HTTPS request from the Camel process to an internal address the guard was written to refuse; reaching a service that way additionally requires that the name resolve into fc00::/7 in the target environment, that an HTTPS service be listening on that address, and that the TLS handshake succeed for the name being requested, which is why the severity is assessed medium. The same string pre-check was also wrong in the other direction: it matched the raw host string without first establishing that the host was an IP literal, so any name merely beginning with fc or fd, such as fcm.googleapis.com, was refused outright. Users are recommended to upgrade to version 4.23.0, which fixes the issue. If users are on the 4.22.x releases stream, then they are suggested to upgrade to 4.22.2. The 4.21.x release line reached end of life before this issue was resolved and will not receive a fix, so deployments on it must move to a supported release. Both the literal and the resolved path now classify the address from its raw bytes with one shared classifier, which recognises fc00::/7 and the shared address space 100.64.0.0/10, as well as IPv4-compatible, NAT64 (64:ff9b::/96) and 6to4 (2002::/16) addresses whose embedded IPv4 address is not globally routable. For deployments that cannot upgrade immediately, place authentication in front of the A2A push notification configuration path so that the webhook URL does not arrive from an untrusted caller, and deny egress from the Camel process to fc00::/7 at the network level; where the deployment has no need of IPv6, starting the JVM with -Djava.net.preferIPv4Stack=true removes the address class the gap turns on. Note that allowLocalWebhookUrls=false is already the default and does not by itself close the gap.
Title Apache Camel: Camel-A2A Push Notification Webhook Guard Accepts IPv6 Unique Local Addresses Reached Through a Host Name
Weaknesses CWE-918
References
Metrics cvssV3_1

{'score': 4.8, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: apache

Published:

Updated: 2026-10-29T10:31:01.478Z

Reserved: 2026-08-07T12:42:03.200Z

Link: CVE-2026-71569

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-10-29T11:17:34.093

Modified: 2026-10-29T11:17:34.237

Link: CVE-2026-71569

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-29T11:30:14Z

Weaknesses
  • CWE-918

    Server-Side Request Forgery (SSRF)