
Laboratoire local simulant le contournement de l'authentification JWT/JWE CVE-2026-29000 dans pac4j-jwt. Fournit des API de connexion, de forgage de jetons et de tableau de bord pour pratiquer l'exploitation web dans un environnement Dockerisé Java/SparkJava.
Lab Java/SparkJava simulant l'erreur d'authentification JWT/JWE liée à CVE-2026-29000. L'application tourne sur le port 4567 et fournit des API pour tester le flux de connexion valide, créer un jeton falsifié et vérifier le tableau de bord.
CVE-2026-29000 affecte pac4j-jwt dans les versions antérieures à 4.5.9, 5.7.9 et 6.3.3. L'erreur se situe dans JwtAuthenticator lors du traitement d'un JWT/JWE chiffré, permettant à un attaquant de forger un jeton d'authentification dans certains flux d'authentification.
Les versions minimales à mettre à jour selon la branche utilisée sont les suivantes :
4.x : mettre à niveau vers 4.5.9 ou plus récent5.x : mettre à niveau vers 5.7.9 ou plus récent6.x : mettre à niveau vers 6.3.3 ou plus récentÀ la racine du projet, exécutez :
docker compose up --build
Une fois la construction terminée, ouvrez :
http://localhost:4567
Arrêter le lab :
docker compose down
Construire l'image :
docker build -t cve-2026-29000-lab .
Lancer le conteneur :
docker run --rm -p 4567:4567 --name cve-2026-29000-lab cve-2026-29000-lab
Vérifier la clé publique du serveur :
curl http://localhost:4567/api/public-key
Déplacez-vous dans le répertoire lab :
cd lab
Lancez l'application :
mvn exec:java
Ou construisez d'abord puis exécutez avec le classpath :
mvn -DskipTests package dependency:copy-dependencies
java -cp "target/classes;target/dependency/*" com.demo.App
Sous Linux/macOS, utilisez : au lieu de ; :
java -cp "target/classes:target/dependency/*" com.demo.App
GET / - guide rapide des étapes de démonstrationPOST /api/login - créer un jeton validePOST /api/forge-token - créer un jeton pour la démonstration de contournementGET /api/dashboard - vérifier le jeton dans l'en-tête Authorization: Bearer <token>GET /api/public-key - visualiser la clé publique au format JWKConnexion valide :
curl -X POST http://localhost:4567/api/login \
-H "Content-Type: application/json" \
-d "{\"username\":\"user_lucas\",\"role\":\"user\"}"
Créer un jeton falsifié :
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
Ce lab est destiné uniquement à l'apprentissage et aux tests dans un environnement local. Ne le déployez pas publiquement et ne l'utilisez pas pour attaquer des systèmes non autorisés.