Skip to content
OpenAdvisories

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.

Affected products

VendorProductAffectedFixed
jpadilla pyjwt >= 2.9.0, < 2.13.0 —

Fixed in Linux distributions

Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.

ReleasePackageFixed inAdvisory
Debian 14 pyjwt 2.13.0-1 —
Debian 13 pyjwt No fix yet —
ReleasePackageFixed inAdvisory
Ubuntu 26.04 LTS pyjwt 2.10.1-4ubuntu1.1 USN-8823-1
Ubuntu 25.10 pyjwt No fix yet —
Ubuntu 24.04 LTS pyjwt 2.7.0-1ubuntu0.2 USN-8823-1
Ubuntu 22.04 LTS pyjwt 2.3.0-1ubuntu0.4 USN-8823-1
Show 3 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
Ubuntu Pro 20.04 LTS pyjwt 1.7.1-2ubuntu2.1+esm2 USN-8823-1
Ubuntu Pro 18.04 LTS pyjwt 1.5.3+ds1-1ubuntu0.1+esm2 USN-8823-1
Ubuntu Pro 16.04 LTS pyjwt 1.3.0-1ubuntu0.1+esm2 USN-8823-1
ReleasePackageFixed inAdvisory
SLES 15 SP7 python-PyJWT 2.4.0-150200.3.14.1 SUSE-SU-2026:2627-1
SLES 15 SP6 python-PyJWT 2.4.0-150200.3.14.1 SUSE-SU-2026:2627-1, SUSE-SU-2026:2626-1
SLES 15 SP5 python-PyJWT 2.4.0-150200.3.14.1 SUSE-SU-2026:2627-1, SUSE-SU-2026:2626-1
SLES 15 SP4 python-PyJWT 2.4.0-150200.3.14.1 SUSE-SU-2026:2627-1, SUSE-SU-2026:2626-1
SLES 3 python-PyJWT 2.8.0-150400.8.13.1 SUSE-SU-2026:2626-1
Show 11 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
SLES for SAP 16.0 python-PyJWT 2.12.1-160000.2.1 SUSE-SU-2026:22170-1
SLES for SAP 15 SP6 python-PyJWT 2.4.0-150200.3.14.1 SUSE-SU-2026:2627-1, SUSE-SU-2026:2626-1
SLES for SAP 15 SP5 python-PyJWT 2.4.0-150200.3.14.1 SUSE-SU-2026:2627-1, SUSE-SU-2026:2626-1
SLES for SAP 15 SP4 python-PyJWT 2.4.0-150200.3.14.1 SUSE-SU-2026:2627-1, SUSE-SU-2026:2626-1
SLES 16.0 python-PyJWT 2.12.1-160000.2.1 SUSE-SU-2026:22170-1
SLE Micro 6.2 python-PyJWT 2.12.1-160000.2.1 SUSE-SU-2026:22220-1
SLE Micro 6.1 python-PyJWT 2.12.1-slfo.1.1_2.1 SUSE-SU-2026:22138-1
SLE Micro 6.0 python-PyJWT 2.9.0-3.1 SUSE-SU-2026:22238-1
SLE Micro 5.5 python-PyJWT 2.4.0-150200.3.14.1 SUSE-SU-2026:2627-1
SLE HPC 15 SP5 python-PyJWT 2.4.0-150200.3.14.1 SUSE-SU-2026:2627-1, SUSE-SU-2026:2626-1
SLE HPC 15 SP4 python-PyJWT 2.4.0-150200.3.14.1 SUSE-SU-2026:2627-1, SUSE-SU-2026:2626-1
ReleasePackageFixed inAdvisory
openSUSE Tumbleweed python-PyJWT 2.13.0-1.1 openSUSE-SU-2026:11024-1
openSUSE Leap 16.0 python-PyJWT 2.12.1-160000.2.1 openSUSE-SU-2026:21095-1

Wolfi

ReleasePackageFixed inAdvisory
Wolfi rolling datadog-agent-7.72-core-integrations No fix yet —
Wolfi rolling datadog-agent-7.73-core-integrations 7.73.3-r23 —
Wolfi rolling datadog-agent-7.77-core-integrations 7.77.3-r16 —
Wolfi rolling datadog-agent-7.78-core-integrations 7.78.4-r10 —
Wolfi rolling datadog-agent-7.79-core-integrations 7.79.2-r6 —
Wolfi rolling datadog-agent-7.80-core-integrations 7.80.4-r3 —
Wolfi rolling ggshield 1.52.2-r1 —
Wolfi rolling kserve +1 0.20.0-r7 —
Wolfi rolling kserve-storage-controller 0.19.0-r2 —
Wolfi rolling superset-6.0 6.0.0-r17 —
Wolfi rolling superset-6.1 6.1.0-r2 —

Affected packages

EcosystemPackageAffectedFixedRecord
PyPI pyjwt >= 2.9.0, < 2.13.0 2.13.0 GHSA-jq35-7prp-9v3f
PyPI pyjwt >= 2.9.0, < 2.12.1 2.12.1 PYSEC-2026-176

Advisories 9

References