针对 Apache Camel 漏洞的可运行概念验证复现程序:在该漏洞中,AS2 接收方将异步消息处置通知(MDN)投递到由发送方提供的地址(即 Receipt-Delivery-Option),且没有任何限制。因此,远程伙伴可以选择 Camel 实例在投递 MDN 时所连接的主机——这是从 AS2 接收方位置发起的服务端请求伪造,可访问仅能从部署网络内部路由到的主机——并且当 MDN 投递配置了凭据时,这些凭据会被呈现给攻击者选择的目标。
| 运行时 | 目录 | 技术栈 |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-as2 4.22.0(受影响;修复版本 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-as2 3.29.0(Camel 4.15.0,受影响;修复对照版本 3.40.0 / Camel 4.22.1) |
该应用在同一个 JVM 中运行:
as2://server/listen,端口 8888),配置了 MDN 投递凭据;as2://client/send),发送一条未签名(PLAIN)的 AS2 消息,请求异步 MDN,其中 receiptDeliveryOption 指向一个仅内部可达的 URL(127.0.0.1:9099,该端口未被 Docker 发布——用来代表仅能从部署内部访问的主机);在受影响的构建中,接收方会连接到攻击者选择的内部 URL 来投递 MDN,并将其 MDN 投递凭据(Authorization: Basic …)呈现给该 URL。在修复后的构建中,这些凭据会被保留不发送(它们仅附加到允许列表中的主机),并且新增的 asyncMdnAllowedHosts 选项会完全限制投递主机。
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
受影响构建上的预期输出:
Internal host connections observed:
POST /internal-mdn-sink (Authorization=Basic bWRuLXBhcnRuZXItdXNlcjpNRE4tREVMSVZFUlktU0VDUkVU)
>>> PROVEN: the AS2 receiver connected to the sender-chosen internal URL to deliver the async MDN
>>> (server-side request forgery) AND presented its configured MDN-delivery credentials ...
(Authorization 值解码为 mdn-partner-user:MDN-DELIVERY-SECRET。)在修复后的构建中,连接
显示 Authorization=null —— 凭据不再被呈现给由发送方选择的主机。
| 属性 | 值 |
|---|---|
| 组件 | camel-as2 |
| CWE | CWE-918(服务端请求伪造);凭据泄露(CWE-200) |
| 严重性 | 高 |
| 攻击向量 | AS2 发送方请求异步 MDN,并使用攻击者选择的 Receipt-Delivery-Option 地址 |
| 影响 | 接收方发起服务端请求伪造(可访问内部主机);向攻击者选择的主机泄露 MDN 投递凭据 |
| 受影响版本 | 从 4.0.0 起至 4.18.5 之前,从 4.19.0 起至 4.22.1 之前 |
| 修复版本 | 4.18.5、4.22.1、4.23.0 |
| JIRA | CAMEL-24417 |
| 致谢 | Claude Security Scan Tool |
公告:https://camel.apache.org/security/CVE-2026-80344.html
异步 MDN 目标现在受到约束,而不再逐字取自入站消息。新增的
asyncMdnAllowedHosts 选项(标签为 security)以允许列表方式限定 MDN 可投递到的主机,并且
配置的 MDN 投递凭据仅在目标位于允许列表中时才会附加 —— 因此默认情况下
(无允许列表)凭据绝不会被呈现给由发送方选择的主机。
限制 AS2 接收方的出站连接,仅允许其连接到合法投递回执的合作伙伴端点, 并且不要为 MDN 投递附加对除这些合作伙伴之外的任何主机有效的凭据。
本仓库出于教育和防御目的发布:帮助 Apache Camel 用户理解该 漏洞、验证自身是否受影响,并确认升级可解决该问题。其中的“凭据”和 内部接收端均为无实际作用的本地测试装置。请勿将本材料用于您不拥有或运营的系统。