CVE-2026-71569
Apache Camel:Camel-A2A 推送通知 Webhook 防护接受通过主机名访问的 IPv6 唯一本地地址
- 已发布
- 2026年10月29日
- 已更新
- 2026年10月29日
- 分配 CNA
- apache
- 观察到的证据
- 2026年10月30日
初级CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N总结
Apache Camel A2A 组件中的服务端请求伪造(SSRF)漏洞。此问题影响 Apache Camel:从 4.21.0 到 4.22.2 之前的版本。WebhookUrlValidator 在两处对推送通知 webhook 主机进行分类,而这两处的判断并不一致。以 IP 字面量形式书写的主机会与一个字符串前缀列表进行匹配,该列表列出了 IPv6 唯一本地地址范围 fc00::/7;而通过名称访问的主机则会被解析,并将解析得到的地址用 InetAddress 的谓词 isLoopbackAddress、isAnyLocalAddress、isLinkLocalAddress 和 isSiteLocalAddress 进行分类。这些谓词覆盖的范围与前缀列表并不相同:isSiteLocalAddress 报告的是已弃用的 fec0::/10 地址块,而不是取代它的 fc00::/7 唯一本地地址,并且 JDK 根本没有针对后者的谓词。因此,同一个地址会因书写方式不同而被接受或拒绝,一个主机名解析到 fc00::/7 的 webhook URL 能够通过防护检查,而完全相同的地址以字面量形式给出时却会被拒绝。随后 PushNotificationDispatcher 会将推送通知发送到该地址,并附带同一配置中携带的任何 Authorization 头,其方案和凭据由注册调用方提供。webhook URL 以 TaskPushNotificationConfig.url 的形式来自注册推送通知的调用方,因此受攻击者控制,而 allowLocalWebhookUrls 默认为 false,这正是防护检查预期生效的配置。响应不会回传给注册该配置的调用方,因此该缺口所导致的是从 Camel 进程向防护检查本应拒绝的内部地址发出的盲发出站 HTTPS 请求;以这种方式访问服务还需要满足以下条件:名称在目标环境中解析到 fc00::/7、该地址上有 HTTPS 服务在监听,以及所请求名称的 TLS 握手成功,这也是严重性被评定为中危的原因。同样的字符串预检查在另一个方向上也是错误的:它在未先确认主机是 IP 字面量的情况下就匹配原始主机字符串,因此任何仅以 fc 或 fd 开头的名称(例如 fcm.googleapis.com)都会被直接拒绝。建议用户升级到 4.23.0 版本,该版本修复了此问题。如果用户处于 4.22.x 发布流,则建议升级到 4.22.2。4.21.x 发布线在此问题解决之前已达到生命周期终止,不会获得修复,因此部署在该版本上的用户必须迁移到受支持的版本。现在,字面量路径和解析路径都使用同一个共享分类器根据原始字节对地址进行分类,该分类器能够识别 fc00::/7 和共享地址空间 100.64.0.0/10,以及内嵌 IPv4 地址不可全局路由的 IPv4 兼容地址、NAT64(64:ff9b::/96)和 6to4(2002::/16)地址。对于无法立即升级的部署,请在 A2A 推送通知配置路径前放置身份验证,使 webhook URL 不会来自不受信任的调用方,并在网络层面拒绝 Camel 进程向 fc00::/7 的出站流量;如果部署不需要 IPv6,使用 -Djava.net.preferIPv4Stack=true 启动 JVM 可移除该缺口所依赖的地址类别。请注意,allowLocalWebhookUrls=false 已经是默认值,其本身并不能弥补该缺口。
来源
针对 CVE-2026-71569 的可运行 Docker 概念验证,该漏洞是 Apache Camel camel-a2a webhook 校验中的 SSRF 防护绕过,包含探测脚本与修复验证。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。