서명 없는 PlainJWT 전송 시 서명 검증 로직 누락되는 결함 악용
pac4j 4.x, 5.x, 6.x 버전군 대상 보안 패치 배포 완료
[보안뉴스 조재호 기자] 자바(Java) 기반 인증 라이브러리 ‘pac4j-jwt’에서 공개키만으로 관리자 권한을 탈취할 수 있는 치명적 인증 우회 취약점(CVE-2026-29000)이 발견됐다. 공통 취약점 평가 시스템(CVSS) 최고점인 10.0을 기록한 취약점으로, 현재 보안 패치가 배포된 상태다.

▲pac4j의 공식 보안 권고문 [출처:pac4j 공식 홈페이지]
코드앤트AI(CodeAnt AI) 보안연구팀은 3일(현지시각) 공식 블로그에서 이 취약점의 세부 내용과 개념 증명(PoC) 코드를 공개했다. 보고서에 따르면, 이 취약점은 JWT(JSON Web Token) 서명 검증 단계의 예외 처리 누락에서 비롯됐다.
통상적 pac4j 환경에서는 서버의 RSA 공개키로 암호화(JWE)를 수행하고, 내부에서 서명(JWS)을 검증하는 이중 보호 구조를 거친다. 하지만 공격자가 서명이 없는 비서명 토큰 ‘PlainJWT’를 생성한 뒤 서버 공개키로 암호화해 전송할 경우 문제가 생긴다.
복호화 이후 내부 토큰을 추출하는 과정(toSignedJWT())에서 결괏값이 ‘null’로 반환되기 때문이다. 이로 인해 서명 검증 로직(if (signedJWT != null))이 완전히 생략됨에도, 악의적으로 조작된 관리자 권한 등에 대한 토큰 클레임은 정상적으로 승인된다.
결과적으로 공격자는 탈취가 불가능한 개인키(Private Key)나 비밀 정보 없이, 누구나 접근 가능한 서버 공개키만으로 시스템 내 모든 사용자로 위장할 수 있다.

▲JWT 인증 우회 취약점 관련 인포그래픽 [출처: 코드앤트 AI]
제롬 를루 pac4j 메인테이너는 이 취약점을 제보받은 직후 보안 권고문을 발표하고 패치 버전을 릴리즈했다. 취약점에 노출된 기존 버전 사용자는 4.5.9(4.x 버전군), 5.7.9(5.x 버전군), 6.3.3(6.x 버전군) 이상으로 즉시 업데이트해야 한다.
코드앤트AI 보안연구팀은 “공격자가 JWT 스펙상 허용되는 변칙적 토큰을 전송할 때 검증이 누락된 것이 원인”이라며, “이러한 취약점 패턴은 오픈소스 생태계 전반에서 반복적으로 나타나는 문제”라고 말했다.
[조재호 기자(sw@boannews.com)]
<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>














