
로컬 랩으로 pac4j-jwt의 CVE-2026-29000 JWT/JWE 인증 우회를 시뮬레이션합니다. Docker 기반 Java/SparkJava 환경에서 웹 공격 실습을 위한 로그인, 토큰 위조, 대시보드 API를 제공합니다.
CVE-2026-29000과 관련된 JWT/JWE 인증 취약점을 시뮬레이션하는 Java/SparkJava 랩입니다. 애플리케이션은 4567 포트에서 실행되며, 유효한 로그인 흐름, 위조 토큰 생성, 대시보드 확인을 테스트할 수 있는 API를 제공합니다.
CVE-2026-29000은 4.5.9, 5.7.9, 6.3.3 이전 버전의 pac4j-jwt에 영향을 미칩니다. 이 취약점은 JwtAuthenticator가 암호화된 JWT/JWE를 처리할 때 발생하며, 특정 인증 흐름에서 공격자가 인증 토큰을 위조할 수 있게 합니다.
현재 사용 중인 브랜치에 따라 최소 업그레이드 버전은 다음과 같습니다:
4.x: 4.5.9 이상으로 업그레이드5.x: 5.7.9 이상으로 업그레이드6.x: 6.3.3 이상으로 업그레이드프로젝트 루트 디렉터리에서 다음을 실행합니다:
docker compose up --build
빌드가 완료되면 다음을 엽니다:
http://localhost:4567
랩 종료:
docker compose down
이미지 빌드:
docker build -t cve-2026-29000-lab .
컨테이너 실행:
docker run --rm -p 4567:4567 --name cve-2026-29000-lab cve-2026-29000-lab
서버 공개 키 확인:
curl http://localhost:4567/api/public-key
lab 디렉터리로 이동합니다:
cd lab
애플리케이션 실행:
mvn exec:java
또는 먼저 빌드한 후 classpath로 실행합니다:
mvn -DskipTests package dependency:copy-dependencies
java -cp "target/classes;target/dependency/*" com.demo.App
Linux/macOS에서는 ; 대신 :를 사용합니다:
java -cp "target/classes:target/dependency/*" com.demo.App
GET / - 데모 단계별 빠른 안내POST /api/login - 유효한 토큰 생성POST /api/forge-token - 우회 데모용 토큰 생성GET /api/dashboard - Authorization: Bearer <token> 헤더의 토큰 확인GET /api/public-key - JWK 형식의 공개 키 확인유효한 로그인:
curl -X POST http://localhost:4567/api/login \
-H "Content-Type: application/json" \
-d "{\"username\":\"user_lucas\",\"role\":\"user\"}"
위조 토큰 생성:
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
이 랩은 로컬 환경에서 학습 및 테스트용으로만 사용됩니다. 공개적으로 배포하거나 허가되지 않은 시스템을 공격하는 데 사용하지 마십시오.