🇰🇷 한글 설명
PyJWT 2.1.0부터 2.15.0 버전 사이의 OKPAlgorithm.from_jwk 함수에서 private-JWK의 d 값과 x 값이 일치하는지 검증하지 않는 취약점이 발견되었습니다. 이로 인해 공격자가 유효하지 않은 키 쌍을 사용하여 정당한 소유자가 아닌 토큰을 탈취하거나 오용할 수 있습니다.
💡 쉬운 설명
암호화 키의 두 구성 요소가 서로 맞는지 확인하는 과정이 빠져 있어, 가짜 키를 사용해도 시스템이 정상적인 키로 착각할 수 있는 문제입니다. 이를 통해 공격자가 남의 권한을 도용할 위험이 있습니다.
🇺🇸 원문 (English)
PyJWT is a Python implementation of JSON Web Token standards. From 2.1.0 until 2.15.0, PyJWT OKPAlgorithm.from_jwk in jwt/algorithms.py is affected because private-JWK import path does not compare the public key derived from d with x. This occurs when an OKP private JWK supplies non-corresponding x and d components. As a result, identity derived from x can differ from operations performed with d. Consequently, if an integration also accepts private key parameters from a proof header without rejecting them, an attacker may use a stolen sender-constrained token without the legitimate private key. This issue is fixed in version 2.15.0.
📍 영향받는 시스템
PyJWT versions 2.1.0 to 2.15.0
⚔️ 공격 벡터
일치하지 않는 x와 d 값을 가진 OKP private JWK를 사용하여 인증 과정을 우회하거나 탈취한 토큰을 사용함
🛡️ 대응 방법
PyJWT를 2.15.0 이상의 최신 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 버전이 2.15.0 미만(2.1.0 이상)이면 취약한 상태입니다.
pip show PyJWT | grep Version