CVE-2026-48523: CWE-347: Improper Verification of Cryptographic Signature in jpadilla pyjwt
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.
AI Analysis
Technical Summary
CVE-2026-48523 is a medium severity vulnerability in the PyJWT Python library affecting versions 2.9.0 to 2.12.1. The flaw is an improper verification of cryptographic signatures (CWE-347) during JWT decoding when using PyJWK keys. The verification process incorrectly uses the algorithm associated with the PyJWK object rather than the algorithm specified in the JWT header, enabling an attacker with control over a registered JWK private key to bypass the algorithm allow-list and have tokens accepted despite using disallowed signing algorithms. This impacts the PyJWKClient.get_signing_key_from_jwt(...) flow. The vulnerability is resolved in PyJWT version 2.13.0.
Potential Impact
An attacker who controls a registered JWK private key can exploit this vulnerability to bypass the algorithm allow-list during JWT signature verification. This could lead to acceptance of tokens signed with disallowed algorithms, potentially undermining the integrity checks of JWTs and allowing unauthorized access or privilege escalation depending on the application context. The impact is limited to scenarios where the attacker has control over a registered JWK private key and the affected PyJWT versions are in use.
Mitigation Recommendations
Upgrade PyJWT to version 2.13.0 or later, where this vulnerability is fixed. There is no indication of alternative mitigations or temporary fixes. Patch status is not explicitly stated in the vendor advisory, but the fix is included in version 2.13.0. Users should verify they are not using affected versions (>=2.9.0 and <2.13.0) and update accordingly.
CVE-2026-48523: CWE-347: Improper Verification of Cryptographic Signature in jpadilla pyjwt
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.
CVSS v3.1
Score 5.4medium
Weaknesses
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
CVE-2026-48523 is a medium severity vulnerability in the PyJWT Python library affecting versions 2.9.0 to 2.12.1. The flaw is an improper verification of cryptographic signatures (CWE-347) during JWT decoding when using PyJWK keys. The verification process incorrectly uses the algorithm associated with the PyJWK object rather than the algorithm specified in the JWT header, enabling an attacker with control over a registered JWK private key to bypass the algorithm allow-list and have tokens accepted despite using disallowed signing algorithms. This impacts the PyJWKClient.get_signing_key_from_jwt(...) flow. The vulnerability is resolved in PyJWT version 2.13.0.
Potential Impact
An attacker who controls a registered JWK private key can exploit this vulnerability to bypass the algorithm allow-list during JWT signature verification. This could lead to acceptance of tokens signed with disallowed algorithms, potentially undermining the integrity checks of JWTs and allowing unauthorized access or privilege escalation depending on the application context. The impact is limited to scenarios where the attacker has control over a registered JWK private key and the affected PyJWT versions are in use.
Mitigation Recommendations
Upgrade PyJWT to version 2.13.0 or later, where this vulnerability is fixed. There is no indication of alternative mitigations or temporary fixes. Patch status is not explicitly stated in the vendor advisory, but the fix is included in version 2.13.0. Users should verify they are not using affected versions (>=2.9.0 and <2.13.0) and update accordingly.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- GitHub_M
- Date Reserved
- 2026-05-21T16:18:10.619Z
- Cvss Version
- 3.1
- State
- PUBLISHED
- Remediation Level
- null
Threat ID: 6a186056e29bf47b500b42d5
Added to database: 5/28/2026, 3:33:42 PM
Last enriched: 5/28/2026, 3:50:09 PM
Last updated: 5/28/2026, 10:53:11 PM
Views: 10
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
External Links
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.