Back to list

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
Date
Source
GitHub
Vendor
GitHub
Threat
medium
CVSS
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.