CVE-2026-103001 json
PyJWT.decode() reintroduces options-dict mutation, enabling silent claim-verification bypass on dict reuse
published last mo. modified last mo. also EUVD-2026-90388 , GHSA-gvp8-978c-rx2q , PYSEC-2026-4146
- cvss
- 6.5
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.3%
- EPSS 0.3% chance of exploitation in 30 days, percentile 17%
- public exploits
- 0
- none known
Summary
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.
Patch / fix
- pyjwt Debian 14 2.14.0-1
debian advisories DEBIAN-CVE-2026-103001
- python-PyJWT Linux Micro 6.1 2.12.1-slfo.1.1_3.1
- python-PyJWT SLES 16.0, Linux Micro 6.2, SLES for SAP applications 16.0 2.12.1-160000.3.1
suse advisories SUSE-SU-2026:24377-1SUSE-SU-2026:24126-1SUSE-SU-2026:24219-1
- python-PyJWT openSUSE Leap 16.0 2.12.1-160000.3.1
- python-PyJWT openSUSE Tumbleweed 2.15.1-1.1
opensuse advisories openSUSE-SU-2026:22074-1openSUSE-SU-2026:11994-1
- python-jwt Azure Linux 3.0 2.15.1-1
azure linux advisories AZL-105642
Azure Linux vulnerability data, Copyright (c) Microsoft Corporation, from https://github.com/microsoft/AzureLinuxVulnerabilityData via OSV, under the MIT licence; changed: normalised to fixed package versions per release. MIT
Is CVE-2026-103001 in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerVendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2026-103001 updated cvss 6.5
pyjwt: pyjwt: Token validation bypass via options dictionary mutation
-
Red Hat Ansible Automation Orchestrator 2026 ansible-automation-platform/automation-orchestrator-backend-rhel9 Red Hat Confidential Compute Attestation openshift-sandboxed-containers/osc-podvm-builder-rhel9 Red Hat Fence Agents Remediation Operator workload-availability/fence-agents-remediation-rhel9-operator Red Hat Lightspeed Core lightspeed-core/rag-tool-cpu-rhel9, lightspeed-core/lightspeed-stack-rhel9, lightspeed-core/rag-tool-cuda-12.9-rhel9 Red Hat Migration Toolkit for Applications 8 mta/mta-solution-server-rhel9 Red Hat OpenShift Lightspeed openshift-lightspeed/lightspeed-ocp-rag-rhel9, openshift-lightspeed/lightspeed-service-api-rhel9, openshift-lightspeed/lightspeed-agentic-sandbox-rhel9affected: workaround, no fix available “Fix deferred”
+20 more productsfewer
Red Hat AI Inference Server rhaii/vllm-tpu-rhel9, rhaiis/vllm-cpu-rhel9, rhaiis/vllm-tpu-rhel9, rhaiis/vllm-cuda-rhel9, rhaiis/vllm-rocm-rhel9, rhaii/vllm-neuron-rhel9 Red Hat Ansible Automation Platform 2 python-pyjwt, python3x-pyjwt, python3.11-pyjwt, python3.12-pyjwt, automation-controller, ansible-automation-platform-24/hub-rhel8, +32 more Red Hat Ceph Storage 4 python2-jwt, rhceph/rhceph-4-rhel8 Red Hat Ceph Storage 7 rhceph/rhceph-7-rhel9 Red Hat Ceph Storage 9 rhceph/rhceph-9-rhel9 Red Hat Enterprise Linux 8 python-jwt, python3-jwt, rhel8/support-tools Red Hat Enterprise Linux 9 fence-virt, fence-virtd, fence-agents, fence-virtd-cpg, fence-virtd-tcp, fence-agents-all, +51 more Red Hat Enterprise Linux 10 fence-agents-common Red Hat Enterprise Linux AI (RHEL AI) 3 rhelai3/bootc-gaudi-rhel9 Red Hat OpenShift AI (RHOAI) rhoai/odh-vllm-gaudi-rhel9, rhoai/odh-kserve-agent-rhel9, rhoai/odh-kserve-router-rhel9, rhoai/odh-feature-server-rhel9, rhoai/odh-llm-d-kv-cache-rhel9, rhoai/odh-llama-stack-core-rhel9, +18 more Red Hat OpenShift Virtualization 4 container-native-virtualization/ocp-virt-validation-checkup-rhel9 Red Hat OpenStack Platform 13 (Queens) python-jwt Red Hat OpenStack Platform 16.2 rhosp-rhel8/openstack-tempest, rhosp-rhel8/openstack-keystone, rhosp-rhel8/openstack-cinder-api, rhosp-rhel8/openstack-mistral-api, rhosp-rhel8/openstack-mistral-base, rhosp-rhel8/openstack-mistral-engine, +2 more Red Hat OpenStack Platform 17.1 python3-jwt, rhosp-rhel9/openstack-keystone, rhosp-rhel9/openstack-cinder-api Red Hat OpenStack Platform 18.0 python-jwt, rhoso/openstack-keystone-rhel9, rhoso/openstack-cinder-api-rhel9 Red Hat Quay 3 quay/quay-rhel8, quay/quay-rhel9 Red Hat Satellite 6 python-pyjwt, python3-pyjwt, python3.12-pyjwt, satellite/foreman-mcp-server-rhel9, satellite/iop-host-inventory-rhel9 Red Hat Trusted Artifact Signer rhtas/rh-sigstore-a2a-rhel9, rhtas/segment-reporting-rhel9, rhtas/model-transparency-rhel9 Red Hat Update Infrastructure 4 for Cloud Providers python-pyjwt Red Hat Update Infrastructure 5 rhui5/rhua-rhel9, rhui5/rhua-tp-rhel9 -
Red Hat AI Inference Server 3.5 rhaii/vllm-cpu-rhel9 1791473614, rhaii/vllm-cuda-rhel9 1791473631, rhaii/vllm-rocm-rhel9 1791425869, rhaii/vllm-gaudi-rhel9 1791427182, rhaii/vllm-spyre-rhel9 1791818357fixed: vendor fix RHSA-2026:82415
-
Red Hat Enterprise Linux AI 3.5 rhelai3/bootc-cuda-rhel9 1793135861, rhelai3/bootc-rocm-rhel9 1793135863, rhelai3/bootc-aws-cuda-rhel9 1793194817, rhelai3/bootc-gcp-cuda-rhel9 1793194815, rhelai3/disk-image-cuda-rhel9 1793206758, rhelai3/bootc-azure-cuda-rhel9 1793194815, +1 morefixed: vendor fix RHSA-2026:92452
-
Red Hat OpenShift Lightspeed openshift-lightspeed/lightspeed-to-dataverse-exporter-rhel9 Red Hat Enterprise Linux command line assistant rhel-cla/rhel-knowledge-bridge-rhel10not affected: vulnerable code not present
-
Red Hat Hardened Images rust 1.98.1-1.hum1, llvm21 21.1.8-10.hum1, jaeger 2.20.0-0.11.hum1, swift-lang 6.4.0-0.5.hum1not affected: component not present
-
Red Hat OpenShift Container Platform 5 python-pyjwtnot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- Proof of concept is public
- Automatable
- no
- Technical impact
- partial
- Assessed
- last mo.
Exploit prediction
0.26% chance of exploitation in the next 30 days, higher than 17% of all scored CVEs (FIRST EPSS, 2026-11-09).
Exploits and checks
- github.com https://github.com/jpadilla/pyjwt/security/advisories/GHSA-gvp8-978c-rx2q referenced PoC, tagged "exploit" by a source, unverified
- github.com https://github.com/jpadilla/pyjwt/issues/679 referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 6.5 | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:H/A:N |
| GitHub | 3.1 | 6.5 | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:H/A:N |
| OSV | 3.1 | 6.5 | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:H/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| pypi | pyjwt | >=2.11.0, <=2.13.0 |
no fix listed |
Affected products
- jpadilla pyjwt
Classification
- Weakness
-
- CWE-471 Modification of Assumed-Immutable Data (MAID)
References
-
github.com
/jpadilla/pyjwt/commit/0c87c8c8b1a74cac99ad8115f3050efcb7fbed35
web, patch
-
github.com
/jpadilla/pyjwt/security/advisories/GHSA-gvp8-978c-rx2q
exploit, web, mitigation, vendor-advisory
-
github.com
/jpadilla/pyjwt/issues/679
exploit, issue-tracking
-
github.com
/jpadilla/pyjwt
package
-
pypi.org
/project/pyjwt
package
-
github.com
/advisories/GHSA-gvp8-978c-rx2q
advisory
-
nvd.nist.gov
/vuln/detail/CVE-2026-103001
advisory
Sources
- CVE List CVE-2026-103001
- GitHub Advisory GHSA-gvp8-978c-rx2q
- NVD CVE-2026-103001
- OSV PYSEC-2026-4146
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.
CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.