
Reproductor ejecutable de Spring Boot y Quarkus para CVE-2026-85254, que demuestra el bypass de supresión de eco de encabezados de Apache Camel camel-platform-http mediante el uso de mayúsculas y minúsculas en los nombres de encabezados, con controles afectados y corregidos.
Reproductor de prueba de concepto ejecutable para la vulnerabilidad de Apache Camel en la que la protección que impide que una cabecera de solicitud se refleje en la respuesta comparaba los nombres de las cabeceras distinguiendo mayúsculas de minúsculas, mientras que los nombres de las cabeceras HTTP no distinguen mayúsculas de minúsculas. Un llamador podía eludir la supresión simplemente variando el uso de mayúsculas/minúsculas del nombre de la cabecera — y bajo HTTP/2 nunca coincidía en absoluto, porque el protocolo exige que los nombres de las cabeceras estén en minúsculas en el cable, por lo que la supresión era inerte para toda solicitud HTTP/2. La consecuencia es que el contenido elegido por el llamador se devuelve en el eco de la respuesta (la base para ataques de división de respuesta y envenenamiento de caché), y refleja precisamente las cabeceras de credenciales (Authorization, Cookie, Proxy-Authorization) que la supresión está destinada a mantener fuera de la respuesta.
| Entorno de ejecución | Directorio | Stack |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-platform-http-vertx 4.22.0 (afectado; corregido en 4.22.1), servidor Vert.x de Camel |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-platform-http (Camel 4.15.0, afectado; control corregido CQ 3.40.0 / Camel 4.22.1) |
Ambos módulos demuestran el comportamiento afectado y el corregido.
Se sirve un endpoint platform-http:/echo. Su HeaderFilterStrategy se supone que suprime las cabeceras de solicitud comunes de la respuesta. El controlador verifica la estrategia directamente y también envía una solicitud en vivo que transporta una cabecera de credenciales en minúsculas (estilo HTTP/2).
Authorization (canónica) pero no authorization (en minúsculas), y una solicitud en vivo que transporta authorization: Bearer <secret> se devuelve en el eco de la respuesta.# Camel Spring Boot
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected: lowercase header echoed back; >>> PROVEN
docker compose down
# Patched control
mvn clean package -Dcamel.version=4.22.1
java -jar target/cve-2026-85254-platform-http-header-echo-0.0.1-SNAPSHOT.jar &
curl -s http://localhost:8080/exploit/attack # fixed: suppressed; >>> 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.15.0): lowercase header echoed back
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: suppressed
| Propiedad | Valor |
|---|---|
| Componente | camel-platform-http (PlatformHttpEndpoint, COMMON_HTTP_REQUEST_HEADERS) |
| CWE | CWE-178 (Manejo incorrecto de la sensibilidad a mayúsculas y minúsculas) |
| Gravedad | MEDIA |
| Vector de ataque | Una cabecera de solicitud cuyo nombre tiene un uso de mayúsculas y minúsculas distinto al de la ortografía canónica (p. ej., cualquier solicitud HTTP/2) |
| Impacto | Contenido de cabecera elegido por el llamador reflejado en la respuesta — división de respuesta / envenenamiento de caché, y reflejo de cabeceras de credenciales que la supresión pretende retener |
| 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-24453 |
| Crédito | Claude Security Scan Tool |
Aviso: https://camel.apache.org/security/CVE-2026-85254.html
PlatformHttpEndpoint ahora mantiene COMMON_HTTP_REQUEST_HEADERS en un
TreeSet(String.CASE_INSENSITIVE_ORDER) insensible a mayúsculas y minúsculas en lugar de un Set.of(...) sensible a
mayúsculas y minúsculas, de modo que la supresión coincide independientemente de cómo el llamador haya escrito el
nombre de la cabecera — incluidos los nombres totalmente en minúsculas que HTTP/2 requiere.
Elimine las cabeceras en cuestión delante del endpoint de Camel, o elimínelas de la respuesta en la ruta en lugar de confiar en la supresión integrada.
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 valor de cabecera inyectado es un fixture local inerte. No utilice este material contra sistemas que no sean de su propiedad o que no opere.