🇰🇷 한글 설명
PyJWT 2.13.0부터 2.14.0 버전 사이의 PyJWS._load 함수에서 RecursionError를 제대로 처리하지 못하는 취약점이 발견되었습니다. 공격자가 깊게 중첩된 토큰 헤더를 포함한 악성 토큰을 보내면 RecursionError가 발생하여 서버에 HTTP 500 오류를 유발할 수 있습니다.
💡 쉬운 설명
복잡하게 꼬인 가짜 인증 토큰을 보내면 서버가 이를 처리하다가 과부하로 인해 오류를 일으키는 문제입니다. 이로 인해 서비스가 일시적으로 중단될 수 있습니다.
🇺🇸 원문 (English)
PyJWT is a Python implementation of JSON Web Token standards. From 2.13.0 until 2.14.0, PyJWS._load in jwt/api_jws.py is affected because parser catches ValueError but not RecursionError. This occurs when a deeply nested token header reaches json.loads. As a result, RecursionError escapes the documented PyJWT error hierarchy. Consequently, an unauthenticated malformed token can cause a request-level failure and HTTP 500. This issue is fixed in version 2.14.0.
📍 영향받는 시스템
PyJWT 2.13.0 ~ 2.14.0
⚔️ 공격 벡터
인증되지 않은 사용자가 깊게 중첩된 구조의 악성 JSON Web Token(JWT) 헤더를 전송
🛡️ 대응 방법
PyJWT를 2.14.0 이상의 최신 버전으로 업데이트
🔧 검증 코드
출력된 버전이 2.13.0 미만이거나 2.14.0보다 큰지 확인하여 취약 여부를 판단합니다.
pip show PyJWT | grep Version