
Prueba de concepto ejecutable para CVE-2026-80343, un bypass de distinción entre mayúsculas y minúsculas en las restricciones de seguridad de camel-netty-http, con reproductores de Spring Boot y Quarkus y verificación de la corrección.
Reproductor de prueba de concepto ejecutable para la vulnerabilidad de Apache Camel en la que la restricción de seguridad de camel-netty-http comparaba la ruta de la solicitud con la ruta de contexto configurada usando una coincidencia sensible a mayúsculas y minúsculas, mientras que el enrutamiento que despacha la solicitud al endpoint no aplicaba la misma regla. Las dos comparaciones discrepan para cualquier ruta cuya capitalización difiera del valor configurado: un llamador externo puede alterar la capitalización de un carácter en el segmento de la ruta de contexto para que la restricción de seguridad ya no reconozca la ruta como protegida, mientras que la solicitud sigue despachándose al mismo endpoint. La restricción se omite y se alcanza la ruta protegida sin satisfacerla — no se requiere credencial, acceso previo ni configuración especial.
| Entorno de ejecución | Directorio | Stack |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-netty-http 4.22.0 (afectado; corregido en 4.22.1) |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-netty-http 3.29.0 (Camel 4.15.0, afectado; control corregido 3.40.0 / Camel 4.22.1) |
Un consumidor netty-http escucha en la ruta de contexto /app y está protegido por un SecurityConstraintMapping que protege /secret (relativo al endpoint) con un autenticador que rechaza. Ambas solicitudes a continuación no llevan credenciales:
GET /app/secret (capitalización configurada) → la restricción la reconoce como protegida → 401.GET /App/secret (capitalización de la ruta de contexto alterada) → el extractTarget del manejador elimina la ruta de contexto solo con un startsWith sensible a mayúsculas y minúsculas, por lo que la eliminación se omite y la restricción no reconoce la ruta como protegida → el enrutador aún la despacha al endpoint /app → 200 y el cuerpo protegido, sin autenticación.En la compilación corregida ambas solicitudes devuelven 401.
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:
Configured case GET /app/secret -> status 401, body:
Altered case GET /App/secret -> status 200, body: PROTECTED-ADMIN-DATA: reached the protected endpoint
>>> PROVEN: /app/secret is correctly rejected (401), but /App/secret bypassed the security constraint ...
| Propiedad | Valor |
|---|---|
| Componente | camel-netty-http |
| CWE | CWE-178 (Manejo incorrecto de la distinción entre mayúsculas y minúsculas) |
| Gravedad | ALTA |
| Vector de ataque | Una solicitud cuya capitalización de la ruta de contexto difiere de la ruta del endpoint configurada |
| Impacto | Restricción de seguridad omitida; ruta protegida alcanzada sin autenticación |
| 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-24412 |
| Crédito | Claude Security Scan Tool |
Aviso: https://camel.apache.org/security/CVE-2026-80343.html
La restricción de seguridad y el manejo de la ruta de contexto ahora comparan la ruta de forma consistente (sin distinguir mayúsculas y minúsculas en la ruta de contexto), por lo que una solicitud con capitalización alterada se reconoce como protegida exactamente igual que su forma con la capitalización configurada y está sujeta a la misma autenticación.
Aplique la autorización en la propia ruta en lugar de depender únicamente de la restricción de seguridad de netty-http, o normalice la capitalización de la ruta de la solicitud antes de la comprobación de seguridad, hasta que pueda actualizar.
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. No utilice este material contra sistemas que no sean de su propiedad o que no opere.