🇰🇷 한글 설명
PyJWT 2.14.0 미만 버전에서 is_pem_format 함수가 모든 PEM 형식을 올바르게 인식하지 못하는 취약점이 존재합니다. HMAC과 비대칭 알고리즘을 혼용하는 환경에서 변조된 공개키 PEM을 전달할 경우, 시스템이 이를 HMAC 비밀키로 오인하여 공격자가 인증된 HMAC 토큰을 위조할 수 있습니다.
💡 쉬운 설명
공개키를 비밀번호로 착각하는 오류가 발생하여, 공격자가 가짜 인증서를 만들어 시스템에 침입할 수 있는 문제입니다. 공개키를 알고 있는 공격자가 마치 정당한 권한을 가진 것처럼 속일 수 있습니다.
🇺🇸 원문 (English)
PyJWT is a Python implementation of JSON Web Token standards. Prior to 2.14.0, is_pem_format in jwt/utils.py is affected because is_pem_format does not recognize every PEM representation accepted by the cryptography loader. This occurs when an application mixes HMAC and asymmetric algorithms and supplies a mutated public-key PEM as raw key bytes. As a result, HMACAlgorithm.prepare_key treats the unrecognized asymmetric public key as an HMAC secret. Consequently, an attacker who knows the public key can forge authenticated HMAC tokens. This issue is fixed in version 2.14.0.
📍 영향받는 시스템
PyJWT versions prior to 2.14.0
⚔️ 공격 벡터
변조된 공개키 PEM을 원시 키 바이트로 공급하여 HMAC 알고리즘이 이를 비밀키로 처리하도록 유도
🛡️ 대응 방법
PyJWT를 2.14.0 이상의 최신 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 버전 번호가 2.14.0보다 낮으면 취약한 상태입니다.
pip show PyJWT | grep Version