
Python 개념 증명(PoC)으로, 서명되지 않은 내부 JWT로 JWE 토큰을 제작하여 pac4j JWT의 인증 우회를 시연하며, 개인 키 없이 권한 상승을 가능하게 합니다.
CVE-2026-29000에 대한 Python 개념 증명(PoC)으로, pac4j JWT 모듈을 사용하는 애플리케이션에 영향을 미치는 심각한 인증 우회 취약점입니다.
이 취약점은 공격자가 서명되지 않은 PlainJWT(alg: none)를 포함한 악성 JWE 토큰을 전송하여 임의의 사용자로 인증할 수 있게 합니다.
pac4j 애플리케이션은 다음과 같은 토큰 흐름을 사용할 수 있습니다:
/api/auth/login을 통해 인증JWT 파싱 로직의 잘못된 처리로 인해, 내부 토큰이 PlainJWT(서명되지 않은 토큰) 인 경우:
toSignedJWT()가 null을 반환이를 통해 공격자는 다음을 수행할 수 있습니다:
공격자는 다음을 수행할 수 있습니다:
개인 키는 필요하지 않으며, JWKS를 통해 노출된 공개 키만 있으면 됩니다.
이 저장소는 다음을 수행하는 Python PoC를 제공합니다:
Python 3.x
의존성 설치:
pip install jwcrypto requests
python3 poc.py \
--jwks http://target:8080/api/auth/jwks \
--user admin \
--role ROLE_ADMIN
출력 예시:
=== Malicious JWE Token ===
eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMTI4R0NNIiwiY3R5IjoiSldUIn0...
다음과 같이 사용하세요:
Authorization: Bearer <TOKEN>
이 저장소는 교육 및 연구 목적으로만 제공됩니다. 적절한 권한 없이 이 코드를 시스템에 사용하지 마십시오.
Ali Hussainzada 애플리케이션 보안 연구원 | 버그 헌터