
Reproductor para CVE-2026-46455 — Apache Camel camel-keycloak: falta de verificación de TokenVerifier.IS_ACTIVE (tokens de acceso expirados aceptados)
IS_ACTIVE faltante (Tokens expirados aceptados)Reproductores de prueba de concepto ejecutables para la misma vulnerabilidad de Apache Camel, uno por entorno de ejecución:
| Entorno de ejecución | Directorio | Stack |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.2.0 + camel-keycloak 4.18.2 |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.36.0 + Camel Quarkus 3.36.0 (bundles Camel 4.20.0) |
Ambas son versiones afectadas (corregidas en 4.18.3 / 4.21.0), y ambas demuestran el mismo defecto:
KeycloakSecurityHelper.parseAndVerifyAccessToken verifica la firma, el sujeto y el emisor del token, pero omite la verificación TokenVerifier.IS_ACTIVE de Keycloak — por lo que exp / nbf nunca se aplican y se acepta un token expirado. Cualquier token filtrado o capturado permanece utilizable indefinidamente (CWE-613 + CWE-287).
Cada PoC genera un token de acceso correctamente firmado cuyo exp está 30 minutos en el pasado y lo ejecuta tanto a través del helper vulnerable como de un verificador con IS_ACTIVE añadido (lo que hace la corrección), demostrando que el helper acepta lo que IS_ACTIVE rechaza. No se requiere un servidor Keycloak — el token se firma con una clave RSA generada en el proceso.
Cada subdirectorio es un proyecto autónomo con su propio Dockerfile, docker-compose.yml y README. En resumen, para cualquiera de los dos:
cd camel-spring-boot # or: cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
Aviso: https://camel.apache.org/security/CVE-2026-46455.html
Estos reproductores se proporcionan solo para investigación de seguridad y pruebas autorizadas, para una vulnerabilidad divulgada y corregida públicamente. No los utilice contra sistemas sin permiso explícito.
| Propiedad | Valor |
|---|
| Componente | camel-keycloak |
| Clase afectada | org.apache.camel.component.keycloak.security.KeycloakSecurityHelper#parseAndVerifyAccessToken |
| CWE | CWE-613 (Caducidad de sesión insuficiente) + CWE-287 (Autenticación incorrecta) |
| Impacto | Tokens de acceso expirados / aún no válidos aceptados → solicitudes autenticadas fuera de la vida útil del token |
| Versiones afectadas | Desde 4.18.0 antes de 4.18.3, desde 4.19.0 antes de 4.21.0 (helper introducido en 4.18.0; 4.14.x LTS no afectado) |
| Versiones corregidas | 4.18.3, 4.21.0 |
| JIRA | CAMEL-23504 |