CVE-2026-48524: PyJWT denial of service via unbounded JWKS endpoint requests

CVE-2026-48524 · Severity: low · CVSS 3.7 · Published 2026-05-28

A vulnerability in the PyJWT library can allow an attacker to disrupt authentication services. By sending specially crafted tokens with unknown identifiers, an attacker can force the application to make excessive network requests, potentially leading to performance slowdowns or a temporary inability to verify legitimate users. This could impact the availability of services that rely on this library for secure login and identity verification.

Technologies: pyjwt (PyPI). Vendors: PyPI.

Quick answers

Is CVE-2026-48524 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-48524 being exploited in the wild.
How severe is CVE-2026-48524?
Low severity, with a CVSS score of 3.7, published 28 May 2026.
Which products and versions are affected?
pyjwt (PyPI) ECOSYSTEM:introduced=0,fixed=2.13.0, ECOSYSTEM:introduced=2.0.0,fixed=2.13.0.
Is there a fix for CVE-2026-48524?
Yes. pyjwt (PyPI): upgrade to 2.13.0 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-48524 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2026-48524?
Check whether you run pyjwt (PyPI) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • pyjwt (PyPI): upgrade to 2.13.0 or later
    pip install "pyjwt>=2.13.0"

Technical details

The PyJWKClient.get_signing_key() function in PyJWT (versions 2.4.0 through 2.12.1) fails to implement rate limiting or a cooldown period when encountering an unknown 'kid' (Key ID) in a JWT header. An attacker can provide unverified tokens with unique 'kid' values to trigger unlimited outbound HTTP requests to the JWKS endpoint. Furthermore, a bug in the fetch_data() finally block causes the JWKS cache to be cleared upon network errors. This combination can lead to a Denial of Service against both the application (via I/O latency) and the JWKS provider, as well as cascading authentication failures if the cache is wiped during a period of high traffic or transient network issues. The issue is fixed in version 2.13.0.

Affected products

  • jpadilla PyJWT 2.4.0 - 2.12.1

Identifiers

  • CVE-2026-48524
  • GHSA-fhv5-28vv-h8m8
  • PYSEC-2026-177

Timeline

  • 2026-05-21: disclosed
  • 2026-05-28: advisory: NVD publication date
  • 2026-06-15: advisory: GitHub Advisory reviewed
  • 2026-06-15: patched: Version 2.13.0 released

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.