
Laboratorio local que simula el bypass de autenticación CVE-2026-29000 JWT/JWE en pac4j-jwt. Proporciona APIs de inicio de sesión, forja de tokens y panel de control para practicar explotación web en un entorno Dockerizado Java/SparkJava.
Laboratorio Java/SparkJava que simula el error de autenticación JWT/JWE relacionado con CVE-2026-29000. La aplicación se ejecuta en el puerto 4567 y proporciona APIs para probar flujos de inicio de sesión válidos, generar tokens falsificados y verificar el panel de control.
CVE-2026-29000 afecta a pac4j-jwt en versiones anteriores a 4.5.9, 5.7.9 y 6.3.3. El error se encuentra en JwtAuthenticator al procesar JWT/JWE cifrados, lo que permite a un atacante falsificar tokens de autenticación en algunos flujos de autenticación.
Las versiones mínimas recomendadas para actualizar según la rama en uso:
4.x: actualizar a 4.5.9 o superior5.x: actualizar a 5.7.9 o superior6.x: actualizar a 6.3.3 o superiorEn el directorio raíz del proyecto, ejecute:
docker compose up --build
Después de la compilación, abra:
http://localhost:4567
Detener el laboratorio:
docker compose down
Construir la imagen:
docker build -t cve-2026-29000-lab .
Ejecutar el contenedor:
docker run --rm -p 4567:4567 --name cve-2026-29000-lab cve-2026-29000-lab
Verificar la clave pública del servidor:
curl http://localhost:4567/api/public-key
Muévase al directorio lab:
cd lab
Ejecute la aplicación:
mvn exec:java
O compile primero y luego ejecute con classpath:
mvn -DskipTests package dependency:copy-dependencies
java -cp "target/classes;target/dependency/*" com.demo.App
En Linux/macOS, use : en lugar de ;:
java -cp "target/classes:target/dependency/*" com.demo.App
GET / - guía rápida de los pasos de demostraciónPOST /api/login - generar token válidoPOST /api/forge-token - generar token para la demo de bypassGET /api/dashboard - verificar token en el encabezado Authorization: Bearer <token>GET /api/public-key - ver clave pública en formato JWKInicio de sesión válido:
curl -X POST http://localhost:4567/api/login \
-H "Content-Type: application/json" \
-d "{\"username\":\"user_lucas\",\"role\":\"user\"}"
Generar token falsificado:
curl -X POST http://localhost:4567/api/forge-token \
-H "Content-Type: application/json" \
-d "{\"username\":\"admin\",\"role\":\"administrator\"}"
CVE-2026-29000-lab/
|-- Dockerfile
|-- docker-compose.yml
|-- lab/
| |-- pom.xml
| `-- src/main/java/com/demo/
| |-- App.java
| `-- VulnerableAuthenticator.java
`-- README.md
Este laboratorio es solo para fines educativos y de prueba en un entorno local. No lo implemente públicamente ni lo use para atacar sistemas no autorizados.