🇰🇷 한글 설명
joserfc 라이브러리 1.7.1 및 이전 버전에서 JOSE 표준을 준수하지 않는 패딩(==)이 포함된 JWT를 허용하는 취약점이 발견되었습니다. 이로 인해 JWT의 가변성(malleability)이 발생하여, 토큰 블랙리스트나 재전송 공격 방지 메커니즘을 우회할 수 있는 위험이 있습니다.
💡 쉬운 설명
인증 토큰의 끝부분에 불필요한 문자를 추가해도 시스템이 이를 정상적인 토큰으로 인식하는 문제입니다. 공격자가 토큰의 모양을 살짝 바꿔서 이미 차단된 토큰을 다시 사용하는 등의 보안 우회를 시도할 수 있습니다.
🇺🇸 원문 (English)
joserfc is a Python library that provides an implementation of several JSON Object Signing and Encryption (JOSE) standards. in versions 1.7.1 and prior, joserfc accepts JWTs with trailing padding (==) which are not conforming to the JOSE specifications. This leads to malleability of the JWTs when consumed by joserfc. Depending on this application this might or not be an issue. This could lead to bypass of token revocation or anti-replay protection when implemented as a deny list of tokens or a deny list of token hashes. Note that ECDSA JWS are always malleable because of the malleability of ECDSA signatures (first test case in the code bellow). This makes a scheme which assumes that JWTs are not malleable brittle. However for other signatures (or MAC) schemes it might make sense to assume non malleability of the token. This issue has been fixed in version 1.7.2.
📍 영향받는 시스템
joserfc library version 1.7.1 and prior
⚔️ 공격 벡터
JWT 끝에 표준에 어긋나는 패딩(==)을 추가하여 토큰의 해시값을 변경함으로써 보안 검증을 우회함
🛡️ 대응 방법
joserfc 라이브러리를 버전 1.7.2 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 버전이 1.7.2 미만(예: 1.7.1)이면 취약한 상태입니다.
pip show joserfc | grep Version