🇰🇷 한글 설명
PyJWT 2.14.0 미만 버전에서 get_signing_key_from_jwt 함수가 알려지지 않은 kid(Key ID)에 대해 캐시 없이 강제 새로고침을 수행하는 취약점이 발견되었습니다. 공격자가 유효하지 않은 kid를 포함한 토큰을 반복적으로 전송할 경우, JWKS 엔드포인트로의 아웃바운드 요청이 증폭되어 서비스 거부(DoS)를 유발할 수 있습니다.
💡 쉬운 설명
잘못된 키 정보를 담은 토큰을 계속 보내면, 프로그램이 매번 새로운 키를 찾으려고 외부 서버에 계속 접속하게 만듭니다. 이로 인해 서버의 자원이 낭비되거나 네트워크에 과부하가 걸릴 수 있습니다.
🇺🇸 원문 (English)
PyJWT is a Python implementation of JSON Web Token standards. Prior to 2.14.0, PyJWT get_signing_key_from_jwt is affected because unknown kid misses force refreshes without a negative cache or minimum refresh interval. This occurs when unauthenticated tokens repeatedly use the same unknown kid or varying kid values absent from the cached JWKS. As a result, each cache miss causes PyJWKClient to refresh the JWKS. Consequently, attacker traffic can amplify outbound requests to the configured JWKS endpoint. This issue is fixed in version 2.14.0.
📍 영향받는 시스템
PyJWT versions prior to 2.14.0
⚔️ 공격 벡터
알려지지 않은 kid 값을 포함한 인증되지 않은 JWT 토큰을 반복적으로 전송하여 JWKS 엔드포인트 요청 증폭 유도
🛡️ 대응 방법
PyJWT 라이브러리를 2.14.0 이상의 버전으로 업데이트
🔧 검증 코드
출력된 버전 번호가 2.14.0 미만인지 확인
pip show PyJWT | grep Version