PyJWT.decode() reintroduces options-dict mutation, enabling silent claim-verification bypass on dict reuse — GHSA-GVP8-978C-RX2Q
GitHub · GitHub · GHSA-GVP8-978C-RX2Q
ID
GHSA-GVP8-978C-RX2Q
GHSA-GVP8-978C-RX2Q
Date
Source
GitHub
GitHub
Vendor
GitHub
GitHub
Threat
medium
medium
CVSS
6.5
6.5
Summary
### Summary `PyJWT.decode()`/`decode_complete()` mutates a caller-supplied `options` dict in place whenever `verify_signature` is falsy, adding `verify_exp`/`verify_nbf`/`verify_iat`/`verify_aud`/`verify_iss`/`verify_sub`/`verify_jti` keys directly onto that object. If application code reuses the same `options` dict across calls (a config object, a module-level constant, a wrapper's `self.options`), a later call…
Timeline
- Published by source
- 2026-09-30
Risk context
- Reported severity or threat level: medium.
- Reported CVSS score: 6.5 out of 10.
- Review exposure for the affected product or family: pip: PyJWT.
Product
pip: PyJWT
What to do
General, cautious steps (verify details in the official source):
- Review exposure and plan remediation based on risk and environment.
- Identify affected product versions in your inventory and verify whether you are impacted.
- Apply vendor patches/updates or recommended mitigations as soon as available.
- Read the official advisory for exact affected versions and remediation steps.
Official advisory
Evidence and provenance
- Canonical advisory ID
- GHSA-GVP8-978C-RX2Q
- Source
- GitHub
- Vendor
- GitHub
- Published by source
- 2026-09-30
- Last source activity
- 2026-09-30
- Additional identifiers
- CVE-2026-103001
- Curated by
- hlukh.ch
Related advisories and connections
These advisories are connected by shared CVE, product, vendor, source, or time signals.