
Lokales Labor zur Simulation der CVE-2026-29000 JWT/JWE-Authentifizierungsumgehung in pac4j-jwt. Bietet APIs für Login, Token-Fälschung und Dashboard zum Üben von Web-Exploitation in einer dockerisierten Java/SparkJava-Umgebung.
Lab Java/SparkJava zur Simulation des JWT/JWE-Authentifizierungsfehlers im Zusammenhang mit CVE-2026-29000. Die Anwendung läuft auf Port 4567 und stellt APIs bereit, um den gültigen Login-Ablauf zu testen, manipulierte Token zu erzeugen und das Dashboard zu prüfen.
CVE-2026-29000 betrifft pac4j-jwt in Versionen vor 4.5.9, 5.7.9 und 6.3.3. Der Fehler liegt im JwtAuthenticator bei der Verarbeitung von verschlüsselten JWT/JWE und erlaubt es Angreifern, Authentifizierungstokens in bestimmten Authentifizierungsabläufen zu fälschen.
Die mindestens zu verwendenden Upgrade-Versionen je nach verwendetem Zweig:
4.x: Upgrade auf 4.5.9 oder neuer5.x: Upgrade auf 5.7.9 oder neuer6.x: Upgrade auf 6.3.3 oder neuerIm Projektstammverzeichnis ausführen:
docker compose up --build
Nach dem Build öffnen:
http://localhost:4567
Lab stoppen:
docker compose down
Image bauen:
docker build -t cve-2026-29000-lab .
Container ausführen:
docker run --rm -p 4567:4567 --name cve-2026-29000-lab cve-2026-29000-lab
Öffentlichen Schlüssel des Servers prüfen:
curl http://localhost:4567/api/public-key
In das Verzeichnis lab wechseln:
cd lab
Anwendung ausführen:
mvn exec:java
Oder zuerst bauen und dann über den Classpath ausführen:
mvn -DskipTests package dependency:copy-dependencies
java -cp "target/classes;target/dependency/*" com.demo.App
Unter Linux/macOS : statt ; verwenden:
java -cp "target/classes:target/dependency/*" com.demo.App
GET / - Kurzanleitung für die Demo-SchrittePOST /api/login - gültiges Token erzeugenPOST /api/forge-token - Token für die Demo des By-pass erzeugenGET /api/dashboard - Token im Header Authorization: Bearer <token> prüfenGET /api/public-key - öffentlichen Schlüssel im JWK-Format anzeigenGültiger Login:
curl -X POST http://localhost:4567/api/login \
-H "Content-Type: application/json" \
-d "{\"username\":\"user_lucas\",\"role\":\"user\"}"
Gefälschtes Token erzeugen:
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
Dieses Lab dient ausschließlich zu Lern- und Testzwecken in einer lokalen Umgebung. Nicht öffentlich bereitstellen oder für Angriffe auf nicht autorisierte Systeme verwenden.