Reference page — cumulative record through Wednesday, August 19, 2026 UTC. Reference pages update as the archive grows; only dated daily editions are immutable pages of record.
jpadilla pyjwt — PyJWT: Algorithm allow-list bypass when decoding with `PyJWK` / `PyJWKClient` keys
AV AC PR UI S C I A CVSS EPSS %ile KEV
N L L N U L L N 5.4 .0013 2.8 —
AFFECTED
Product Versions Fixed
pyjwt >= 2.9.0, < 2.13.0 – —
TIMELINE
May 21 Reserved by GitHub_M
May 28 EXPLOIT PUBLISHED — CVE-2026-48523 (jpadilla pyjwt). Public exploit reference added.
May 28 Published (CNA: GitHub_M)
Description
PyJWT is a JSON Web Token implementation in Python. From 2.9.0 to 2.12.1, there is a verifier-side algorithm allow-list bypass when jwt.decode() or jwt.decode_complete() are called with a PyJWK key. The token header alg is checked against the caller-supplied algorithms allow-list, but signature verification is performed with the algorithm bound to the PyJWK object instead of the header algorithm. An attacker who controls a registered JWK/JWKS private key can sign with a disallowed algorithm, advertise an allowed algorithm in the JWT header, and still be accepted. The issue affects the documented PyJWKClient.get_signing_key_from_jwt(...) flow. This vulnerability is fixed in 2.13.0.
Lifecycle
Complete event history — 3 events, chronological
| Date | Event | Detail |
| May 21, 2026 | Reserved | Reserved by GitHub_M |
| May 28, 2026 | EXPLOIT PUBLISHED | EXPLOIT PUBLISHED — CVE-2026-48523 (jpadilla pyjwt). Public exploit reference added. |
| May 28, 2026 | Published | Published (CNA: GitHub_M) |
Affected
Affected products and packages — 1 row
| Vendor | Product / Package | Ecosystem | Version introduced | Fixed |
| jpadilla | pyjwt | — | >= 2.9.0, < 2.13.0 | — |
About this page
This is a reference page, not a dated page of record. It assembles the complete lifecycle of CVE-2026-48523 from the CVE Program record, NVD enrichment, the CISA KEV catalog, EPSS, and OSV advisories. The box score's numbers (CVSS, EPSS, KEV status) are current as of Wednesday, August 19, 2026 UTC and are re-derived as the archive grows; only dated daily editions are immutable pages of record. The authoritative source for this identifier is cve.org.