CVE-2026-48526 PyJWT: Public-key JWK accepted as HMAC secret enables forged HS256 tokens when mixed families are allowed
Attackers can forge HS256 tokens using public keys if mixed algorithm families are allowed, bypassing authentication in PyJWT applications.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2026-48526?
CVE-2026-48526 is a high-severity authentication bypass vulnerability in jpadilla pyjwt, published on 28 May 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.
Official description
PyJWT is a JSON Web Token implementation in Python. Prior to 2.13.0, when the verifier is decoding JSON Web Tokens, while supporting both asymmetric and HMAC algorithms, the library does not validate use of JSON Web Keys in HMAC algorithm, allowing attacker to use the issuer public key as the secret key for HMAC algorithm. This vulnerability is fixed in 2.13.0.
Which versions are affected by CVE-2026-48526?
3 open source packages ship an affected version, including pyjwt. It affects 1 product.
| Package | Affected | Fixed in |
|---|---|---|
pyjwt PyPI | All versions | 2.13.0 |
pyjwt PyPI | All versions | 2.13.0 |
pyjwt PyPI | All versions | 2.13.0 |
Linux distribution packages (37)
fence-agents-aliyun AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-all AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-amt-ws AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-apc AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-apc-snmp AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-aws AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-azure-arm AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-bladecenter AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-brocade AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-cisco-mds AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-cisco-ucs AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-common AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-drac5 AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-eaton-snmp AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-emerson AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-eps AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-gce AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-heuristics-ping AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-hpblade AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-ibm-powervs AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-ibm-vpc AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-ibmblade AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-ifmib AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-ilo-moonshot AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-ilo-mp AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-ilo-ssh AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-ilo2 AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-intelmodular AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-ipdu AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-ipmilan AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-kdump AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-kubevirt AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-lpar AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-mpath AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-nutanix-ahv AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-openstack AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
fence-agents-redfish AlmaLinux:10 | All versions | 4.16.0-21.el10_2.2 |
Products include Pyjwt Project Pyjwt.
How do I fix CVE-2026-48526?
Upgrade pyjwt to 2.13.0 or later.
Upgrade, and rotate credentials and sessions that may have been exposed. More about Authentication bypass.
Is CVE-2026-48526 being exploited?
It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-48526 exists.
Other vulnerabilities in jpadilla pyjwt
- CVE-2026-102268 PyJWT: Asymmetric-PEM detection bypass: whitespace/line-ending-mutated public keys skip the HS/asymmetric confusion guard
- CVE-2026-32597 PyJWT accepts unknown `crit` header extensions (RFC 7515 §4.1.11 MUST violation)
- CVE-2026-102266 PyJWK accepts empty HMAC keys, bypassing PyJWT's empty-key validation
- CVE-2026-102267 PyJWT: PyJWKClient follows redirects when fetching JWKS
- CVE-2026-102271 PyJWT: Public keys in DER form are accepted as HMAC secrets, bypassing the CVE-2022-29217 guard
Sources
Also known as ALSA-2026:25902, ALSA-2026:26206, AZL-93033, BELL-CVE-2026-48526, CLEANSTART-2026-VL72370, CLSA-2026-1786520090 and 49 more.