🔍 CVE-2026-48524

3.7
CVSS Score
LOW
2026-05-28
2026-06-01 17:44
✅ 완료

🇰🇷 한글 설명

PyJWT 2.13.0 이전 버전의 PyJWKClient.get_signing_key() 함수가 미검증 토큰 헤더에서 나온 kid 값에 대해 속도 제한 없이 무제한의 신선한 HTTP 요청을 강제합니다. 공격자는 알려지지 않은 kid 값으로 지속적인 요청을 보내 JWKS 엔드포인트에 대한 DoS 공격을 유발할 수 있습니다. 2.13.0 이상으로 업그레이드하면 수정됩니다.

💡 쉬운 설명

PyJWT 라이브러리의 보안 토큰 검증 기능에서 공격자가 특수한 요청을 반복 전송하여 과도한 네트워크 요청을 유발할 수 있습니다. 라이브러리를 최신 버전으로 업데이트하면 해결됩니다.

🇺🇸 원문 (English)

PyJWT is a JSON Web Token implementation in Python. Prior to 2.13.0, PyJWKClient.get_signing_key() forces a fresh HTTP request to the JWKS endpoint for every JWT with an unknown kid value, with no rate limiting. Since kid comes from the unverified token header, an attacker can trigger unlimited outbound requests. The vulnerability surfaces only when a JWKS fetch fails; an attacker can attempt to provoke that with sustained unknown-kid traffic, but the outcome depends on upstream JWKS-endpoint behavior (rate limiting, transient errors) which is beyond the attacker's control. This vulnerability is fixed in 2.13.0.

📍 영향받는 시스템

PyJWT < 2.13.0

⚔️ 공격 벡터

미검증 토큰 헤더의 kid 값을 조작하여 unknown kid를 포함한 JWT를 반복 전송, JWKS 엔드포인트에 대한 무제한 아웃바운드 요청 강제 유발

🛡️ 대응 방법

PyJWT를 2.13.0 이상으로 업그레이드하거나 get_signing_key() 호출에 대한 요청 캐싱 및 속도 제한 구현

🔧 검증 코드

출력된 버전이 2.13.0 이상이면 안전함, 2.13.0 미만이면 취약점 존재 (즉시 업그레이드 필요)

Shell / Script
pip show pyjwt | grep Version || python -c "import jwt; print(jwt.__version__)"

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L

💻 영향받는 소프트웨어

Python