CVE-2026-103001
PyJWT.decode() reintroduces options-dict mutation, enabling silent claim-verification bypass on dict reuse
A public proof of concept exists; no exploitation attested.
- Published2026-09-30
- Fixed in2.13.0
- WeaknessCWE-471
Am I affected?
Debian, Ubuntu or Red Hat sometimes backport a fix without changing the upstream version number: such a version reads « to verify », never « affected ».With a domain, we read the version its public headers and pages expose. A distribution build can carry the fix under an older number.
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.
Timeline
dates in UTC- 2026-09-3022:16CVE publishedNVD
Observed activity
isMalicious corpus · updated 2026-10-23 21:37 UTCBlock these indicators
- Firewall list (EDL, text): https://api.ismalicious.com/edl/cve/CVE-2026-103001?format=txt
- CSV export: https://api.ismalicious.com/edl/cve/CVE-2026-103001?format=csv
- TAXII collection of exploited CVEs
- The EDL and CSV take an API key on the Pro plan.
Versions per branch
NVD · OSV| Branch | Affected | Fixed in | Source |
|---|---|---|---|
| 2.x | ≥ 2.11.0, < 2.13.0 | 2.13.0 | NVD |
| Branch | Affected | Fixed in | Source |
|---|---|---|---|
| 2.x | ≥ 2.11.0, ≤ 2.13.0 | no fix published | OSV |
as publishedRanges as NVD and OSV publish them; a distribution’s build can be fixed under an older number.
Distribution builds and vendor advisories
Packages from OSV.dev and products from the vendors' CSAF advisories.
version not verifiedVersions not verified: read as OSV.dev and the vendors publish them, not checked against each vendor's release list.
Vendor advisories
pyjwt: pyjwt: Token validation bypass via options dictionary mutation
ansible-automation-platform/automation-orchestrator-backend-rhel9 as a component of Ansible Automation Orchestrator 2026 · openshift-sandboxed-containers/osc-podvm-builder-rhel9 as a component of Confidential Compute Attestation · workload-availability/fence-agents-remediation-rhel9-operator as a component of Fence Agents Remediation Operator · +230 more
Red Hat Security Advisory: Red Hat AI Inference 3.5.2 (cpu)
Red Hat Security Advisory: Red Hat AI Inference 3.5.2 (spyre)
Red Hat Security Advisory: Red Hat AI Inference 3.5.2 (cuda)
Red Hat Security Advisory: Red Hat AI Inference Tech Preview 3.5.2 (Gaudi)
Red Hat Security Advisory: Red Hat AI Inference 3.5.2 (ROCm)
Fix
- Update Pyjwt project pyjwt to 2.13.0
- Vendor fix Red Hat Product Security RHSA-2026:82415 · 1 productFor more information visit https://access.redhat.com/errata/RHSA-2026:82415
- Vendor fix Red Hat Product Security RHSA-2026:82371 · 3 productsFor more information visit https://access.redhat.com/errata/RHSA-2026:82371
- Vendor fix Red Hat Product Security RHSA-2026:82368 · 2 productsFor more information visit https://access.redhat.com/errata/RHSA-2026:82368
- Vendor fix Red Hat Product Security RHSA-2026:82061 · 1 productFor more information visit https://access.redhat.com/errata/RHSA-2026:82061
- Vendor fix Red Hat Product Security RHSA-2026:82059 · 1 productFor more information visit https://access.redhat.com/errata/RHSA-2026:82059
- Workaround from the vendor Red Hat Product Security RHSA-2026:82415 · 1 productUntil a fixed PyJWT version is available, create a new options dictionary for each decode() or decode_complete() call. Do not reuse a mutable options dictionary between calls with different verification settings.
Advisories and patches
- github.comPatch
- github.comMitigation · Vendor Advisory
Detection
- Nuclei template
- none so far ProjectDiscovery
- Exploit-DB
- no entry Exploit-DB
- Proof-of-concept repositories
- none listed PoC-in-GitHub
Sources
Technical details
- CVSS v3 Vector
- CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:H/A:N
- Published
- 2026-09-30
- Last Modified
- 2026-10-08
- NVD status
- Analyzed
Frequently asked questions
What is CVE-2026-103001?
Is CVE-2026-103001 actively exploited?
What is the CVSS score for CVE-2026-103001?
Running pyjwt? Hear about its next vulnerability
Surveillance reads the versions in your stack — a domain, a lockfile or a list — checks each CVE against the ranges its sources publish, and alerts you when one you run is exploited or enters CISA KEV. A version it cannot read stays « version not verified ».
No credit card required · No monthly cap on website lookups · 250 API requests/month
Go further
- Following what attackers exploit right now? The CISA KEV additions of the month, with their patch deadlines.
- Running this software? Vulnerability monitoring alerts you to new vulnerabilities in your products.
Related vulnerabilities
Same product first, then the same vendor advisory and the same publication week.