🔍 CVE-2026-103001

6.5
CVSS Score
MEDIUM
2026-09-30
2026-10-08 13:13
✅ 완료

🇰🇷 한글 설명

PyJWT 2.11.0부터 2.13.0 버전 사이에서 verify_signature가 false일 때 PyJWT._merge_options() 메서드가 호출자가 제공한 가변 옵션 매핑을 수정할 수 있는 취약점이 존재합니다. 만약 애플리케이션이 동일한 옵션 매핑을 재사용하면서 이후 호출에서 verify_signature를 true로 변경하더라도, 만료 시간이나 발행자 확인 등의 검증 설정이 여전히 false로 유지될 수 있습니다. 이로 인해 서명 검증을 활성화했음에도 불구하고 유효하지 않은 클레임을 가진 서명된 토큰이 수락될 수 있습니다.

💡 쉬운 설명

토큰의 유효성을 검사하는 설정값이 실수로 꺼진 상태로 유지되어, 가짜 정보가 담긴 토큰을 정상적인 것으로 착각할 수 있는 문제입니다. 매번 새로운 설정값을 만들지 않고 기존 설정을 재사용하는 프로그램에서 발생합니다.

🇺🇸 원문 (English)

PyJWT is a Python implementation of JSON Web Token standards. From 2.11.0 through 2.13.0, PyJWT's PyJWT._merge_options() method can modify a caller-supplied mutable options mapping when verify_signature is false. If an application reuses that same mapping for a later decode() or decode_complete() call and changes verify_signature to true, the mapping can retain false values for expiration, not-before, issued-at, audience, issuer, subject, and JWT ID checks. A signed token with invalid registered claims can then be accepted without disabling signature verification, but applications that create a fresh options mapping for each call are not affected.

📍 영향받는 시스템

PyJWT versions 2.11.0 through 2.13.0

⚔️ 공격 벡터

공격자가 조작된 클레임을 포함한 토큰을 전송하여, 재사용되는 옵션 매핑의 검증 로직을 우회함

🛡️ 대응 방법

PyJWT를 2.13.1 이상의 최신 버전으로 업데이트하거나, 매 호출 시마다 새로운 옵션 매핑 객체를 생성하도록 코드를 수정하십시오.

🔧 검증 코드

출력된 버전이 2.11.0에서 2.13.0 사이라면 해당 취약점에 노출된 상태입니다.

Shell / Script
pip show PyJWT | grep Version

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Python