
Laboratório local simulando bypass de autenticação JWT/JWE da CVE-2026-29000 no pac4j-jwt. Fornece APIs de login, forja de tokens e dashboard para praticar exploração web em um ambiente Dockerizado com Java/SparkJava.
Laboratório Java/SparkJava que simula a falha de autenticação JWT/JWE relacionada à CVE-2026-29000. A aplicação roda na porta 4567 e fornece APIs para testar o fluxo de login válido, criar tokens forjados e verificar o dashboard.
A CVE-2026-29000 afeta o pac4j-jwt nas versões anteriores a 4.5.9, 5.7.9 e 6.3.3. A falha está no JwtAuthenticator ao processar JWTs/JWEs criptografados, permitindo que um atacante falsifique tokens de autenticação em determinados fluxos de autenticação.
As versões mínimas para atualização dependem do branch em uso:
4.x: atualizar para 4.5.9 ou superior5.x: atualizar para 5.7.9 ou superior6.x: atualizar para 6.3.3 ou superiorNa raiz do projeto, execute:
docker compose up --build
Após a compilação, abra:
http://localhost:4567
Parar o laboratório:
docker compose down
Construir a imagem:
docker build -t cve-2026-29000-lab .
Executar o contêiner:
docker run --rm -p 4567:4567 --name cve-2026-29000-lab cve-2026-29000-lab
Verificar a chave pública do servidor:
curl http://localhost:4567/api/public-key
Entre no diretório lab:
cd lab
Execute a aplicação:
mvn exec:java
Ou compile primeiro e execute usando o classpath:
mvn -DskipTests package dependency:copy-dependencies
java -cp "target/classes;target/dependency/*" com.demo.App
No Linux/macOS, use : em vez de ;:
java -cp "target/classes:target/dependency/*" com.demo.App
GET / - guia rápido das etapas de demonstraçãoPOST /api/login - cria token válidoPOST /api/forge-token - cria token para demonstrar o bypassGET /api/dashboard - verifica o token no header Authorization: Bearer <token>GET /api/public-key - exibe a chave pública no formato JWKLogin válido:
curl -X POST http://localhost:4567/api/login \
-H "Content-Type: application/json" \
-d "{\"username\":\"user_lucas\",\"role\":\"user\"}"
Criar token forjado:
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 laboratório é apenas para fins educacionais e testes em ambiente local. Não o implante publicamente nem o utilize para atacar sistemas sem autorização.