Impact
The vulnerability is an uncaught RecursionError in jwt.decode() that the library’s error handling fails to catch. An attacker can send a token with a deeply nested header, causing json.loads to raise a RecursionError that propagates outside the documented PyJWT error hierarchy. The result is a request‑level failure that manifests as an HTTP 500 error. This flaw is identified as CWE‑248 (Uncaught RecursionError), allowing an unauthenticated user to disrupt service.
Affected Systems
The affected product is PyJWT, versions 2.13.0 through just before 2.14.0. Any deployment that has not yet applied the 2.14.0 fix is vulnerable.
Risk and Exploitability
The CVSS score of 5.3 indicates moderate severity. The EPSS score is <1%, reflecting a low probability of exploitation. This issue is not listed in the CISA KEV catalog. The most likely attack vector is an unauthenticated attacker sending a malformed deeply nested token to an application that decodes it. No privileged access is required, but the attack can cause application crashes and a denial of service.
OpenCVE Enrichment
Github GHSA