CVE-2026-103001

PyJWT.decode() reintroduces options-dict mutation, enabling silent claim-verification bypass on dict reuse

MEDIUM
6.5
CVSS Score
Published: September 30, 2026 at 09:15 PM UTC
Updated: October 8, 2026 at 01:13 PM UTC
2 products affected across 2 vendorsPyjwtPyjwt

Using pyjwt by jpadilla?

Get instant alerts when new vulnerabilities affect pyjwt - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
MEDIUM6.5
Exploit prediction
EPSS 0.3%
SSVC
PoC

Description

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.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

2.11.0 ≤ v < 2.13.0*
>= 2.11.0, <= 2.13.0

Remediation

No guide yet

No remediation guidance has been written for this CVE yet. What the record does show:

References (3)

x_refsource_CONFIRMExploitMitigationVendor Advisory
Source: cverecord
https://github.com/jpadilla/pyjwt/security/advisories/GHSA-gvp8-978c-rx2q
x_refsource_MISCExploitIssue Tracking
Source: cverecord
https://github.com/jpadilla/pyjwt/issues/679

SSVC — Action Prioritization

SSVCPoCNot automatablePartial impact

SSVC signals action urgency (what to patch first), separate from CVSS which measures severity.

CVSS

6.5MEDIUMGitHub_M
Attack Vector
NETWORK
Complexity
HIGH
Privileges
NONE
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
LOW
Integrity
HIGH
Availability
NONE
Vector?

Quick Info

StatusANALYZED
CWE
CWE-471

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card