
Laboratorio locale che simula il bypass dell'autenticazione JWT/JWE CVE-2026-29000 in pac4j-jwt. Fornisce API di login, forgiatura di token e dashboard per esercitarsi nello sfruttamento web in un ambiente Dockerizzato Java/SparkJava.
Laboratorio Java/SparkJava che simula un errore di autenticazione JWT/JWE relativo a CVE-2026-29000. L'applicazione gira sulla porta 4567 e fornisce API per testare il flusso di login valido, creare token falsificati e controllare la dashboard.
CVE-2026-29000 riguarda pac4j-jwt nelle versioni precedenti a 4.5.9, 5.7.9 e 6.3.3. Il difetto risiede in JwtAuthenticator durante l'elaborazione di JWT/JWE crittografati, consentendo a un attaccante di falsificare token di autenticazione in alcuni flussi di autenticazione.
Versioni minime da aggiornare in base al ramo in uso:
4.x: aggiornare a 4.5.9 o successivo5.x: aggiornare a 5.7.9 o successivo6.x: aggiornare a 6.3.3 o successivoNella directory principale del progetto, esegui:
docker compose up --build
Dopo aver completato la build, apri:
http://localhost:4567
Arrestare il lab:
docker compose down
Costruisci l'immagine:
docker build -t cve-2026-29000-lab .
Esegui il container:
docker run --rm -p 4567:4567 --name cve-2026-29000-lab cve-2026-29000-lab
Verifica la chiave pubblica del server:
curl http://localhost:4567/api/public-key
Spostati nella directory lab:
cd lab
Esegui l'applicazione:
mvn exec:java
Oppure compila prima e poi esegui con classpath:
mvn -DskipTests package dependency:copy-dependencies
java -cp "target/classes;target/dependency/*" com.demo.App
Su Linux/macOS, usa i due punti : invece del punto e virgola ;:
java -cp "target/classes:target/dependency/*" com.demo.App
GET / - guida rapida ai passaggi demoPOST /api/login - crea un token validoPOST /api/forge-token - crea un token per il demo di bypassGET /api/dashboard - verifica il token nell'header Authorization: Bearer <token>GET /api/public-key - visualizza la chiave pubblica in formato JWKLogin valido:
curl -X POST http://localhost:4567/api/login \
-H "Content-Type: application/json" \
-d "{\"username\":\"user_lucas\",\"role\":\"user\"}"
Crea token falsificato:
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
Questo laboratorio è destinato esclusivamente all'apprendimento e al test in ambiente locale. Non distribuirlo pubblicamente né usarlo per attaccare sistemi non autorizzati.