
Reproductor de prueba de concepto ejecutable para CVE-2026-80344 en Apache Camel camel-as2, que demuestra SSRF asíncrono en MDN y divulgación de credenciales con compilaciones afectadas y corregidas.
Reproductor de prueba de concepto ejecutable para la vulnerabilidad de Apache Camel en la que el receptor AS2 entregaba la
Notificación de Disposición de Mensaje (MDN) asíncrona a una dirección proporcionada por el remitente (la
Receipt-Delivery-Option), sin ninguna restricción. Por lo tanto, un socio remoto elige el host al que la instancia de Camel
se conecta al entregar la MDN — falsificación de petición del lado del servidor desde la posición del receptor AS2, alcanzando hosts
solo enrutables desde dentro de la red del despliegue — y cuando la entrega de MDN está configurada con credenciales, esas
credenciales se presentan al destino elegido por el atacante.
| Runtime | Directorio | Stack |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-as2 4.22.0 (afectado; corregido en 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-as2 3.29.0 (Camel 4.15.0, afectado; control corregido 3.40.0 / Camel 4.22.1) |
La aplicación ejecuta, en una sola JVM:
as2://server/listen, puerto 8888) configurado con credenciales de entrega de MDN;as2://client/send) que envía un mensaje AS2 sin firmar (PLAIN) solicitando una
MDN asíncrona, con receiptDeliveryOption apuntando a una URL solo interna (127.0.0.1:9099, un puerto
que Docker no publica — en representación de un host solo alcanzable desde dentro del despliegue);En la compilación afectada, el receptor se conecta a la URL interna elegida por el atacante para entregar la MDN y
presenta sus credenciales de entrega de MDN (Authorization: Basic …) a la misma. En la compilación corregida, esas credenciales
se retienen (se adjuntan solo a hosts incluidos en la lista de permitidos), y la nueva opción asyncMdnAllowedHosts restringe
por completo el host de entrega.
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
Salida esperada en la compilación afectada:
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 ...
(El valor de Authorization se decodifica como mdn-partner-user:MDN-DELIVERY-SECRET.) En la compilación corregida, la conexión
muestra Authorization=null — las credenciales ya no se presentan al host elegido por el remitente.
| Propiedad | Valor |
|---|---|
| Componente | camel-as2 |
| CWE | CWE-918 (Server-Side Request Forgery); divulgación de credenciales (CWE-200) |
| Gravedad | ALTA |
| Vector de ataque | Un remitente AS2 que solicita un MDN asíncrono con una dirección Receipt-Delivery-Option elegida por el atacante |
| Impacto | Server-side request forgery desde el receptor (alcanzar hosts internos); divulgación de las credenciales de entrega de MDN al host elegido por el atacante |
| Versiones afectadas | Desde 4.0.0 anterior a 4.18.5, desde 4.19.0 anterior a 4.22.1 |
| Versiones corregidas | 4.18.5, 4.22.1, 4.23.0 |
| JIRA | CAMEL-24417 |
| Crédito | Claude Security Scan Tool |
Aviso: https://camel.apache.org/security/CVE-2026-80344.html
El destino del MDN asíncrono ahora está restringido en lugar de tomarse literalmente del mensaje entrante. Una nueva
opción asyncMdnAllowedHosts (etiqueta security) establece una lista de hosts permitidos a los que se puede entregar el MDN, y las
credenciales de entrega de MDN configuradas se adjuntan solo cuando el destino está en la lista de permitidos — por lo que, de forma predeterminada
(sin lista de permitidos), las credenciales nunca se presentan a un host elegido por el remitente.
Restrinja la conectividad saliente desde el receptor AS2 a los endpoints de los socios a los que legítimamente entrega los acuses de recibo, y no adjunte a la entrega de MDN credenciales que sean válidas para cualquier host distinto de esos socios.
Este repositorio se publica con fines educativos y defensivos: para ayudar a los usuarios de Apache Camel a comprender la vulnerabilidad, verificar si se ven afectados y confirmar que la actualización la resuelve. Las "credenciales" y el sumidero interno son fixtures locales inertes. No utilice este material contra sistemas que no sean de su propiedad o que no opere.