🇰🇷 한글 설명
PyJWT 2.13.0부터 2.14.0 버전 사이의 HMACAlgorithm.prepare_key 함수에서 Unicode BOM(Byte Order Mark) 정규화 미흡 문제가 발견되었습니다. 공격자가 공개 JWK 앞에 UTF-8 BOM을 추가하면 비대칭 키 검증을 우회하여 해당 키를 HMAC 비밀키로 오인하게 만들 수 있습니다. 이로 인해 공격자가 공개 키를 이용해 인증된 토큰을 위조할 수 있는 취약점이 존재합니다.
💡 쉬운 설명
공개된 열쇠를 비밀번호로 착각하게 만드는 보안 허점이 발견되었습니다. 공격자가 이 허점을 이용하면 가짜 신분증(토큰)을 만들어 시스템에 몰래 접속할 수 있습니다.
🇺🇸 원문 (English)
PyJWT is a Python implementation of JSON Web Token standards. From 2.13.0 until 2.14.0, HMACAlgorithm.prepare_key in jwt/algorithms.py is affected because raw-JWK detector does not normalize accepted Unicode byte-order marks before checking for JSON. This occurs when a public JWK is prefixed with a UTF-8 BOM and used in a mixed-algorithm verification path. As a result, public JWK bypasses asymmetric-key detection and becomes the HMAC secret. Consequently, an attacker who knows the public key can forge authenticated tokens. This issue is fixed in version 2.14.0.
📍 영향받는 시스템
PyJWT versions 2.13.0 to 2.14.0
⚔️ 공격 벡터
공개 JWK 앞에 UTF-8 BOM을 추가하여 비대칭 키 검증을 우회하고 HMAC 비밀키로 변조함
🛡️ 대응 방법
PyJWT를 2.14.0 이상의 최신 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 버전이 2.13.0 이상 2.14.0 미만인지 확인하십시오.
pip show PyJWT | grep Version