Description
PyJWT is a JSON Web Token implementation in Python. Prior to 2.13.0, PyJWKClient.get_signing_key() forces a fresh HTTP request to the JWKS endpoint for every JWT with an unknown kid value, with no rate limiting. Since kid comes from the unverified token header, an attacker can trigger unlimited outbound requests. The vulnerability surfaces only when a JWKS fetch fails; an attacker can attempt to provoke that with sustained unknown-kid traffic, but the outcome depends on upstream JWKS-endpoint behavior (rate limiting, transient errors) which is beyond the attacker's control. This vulnerability is fixed in 2.13.0.
Published: 2026-05-28
Score: 3.7 Low
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

PyJWT’s library can cause the client to fetch the JSON Web Key Set from a given endpoint every time it encounters a JWT with an unknown key identifier, even if the token has not yet been verified. Because there is no built‑in limit on how many such fetches may occur during an operation, an attacker who supplies tokens with arbitrary or repeated key identifiers can make the server perform an unlimited number of outbound HTTP calls. When a fetch fails, the library repeats the request, leading to a potential denial‑of‑service condition that consumes network bandwidth and processing resources. The vulnerability is classified as a form of resource exhaustion.

Affected Systems

Affected products are the PyJWT library for Python, specifically all releases before version 2.13.0. The library is distributed under the name jpadilla:pyjwt. No specific sub‑versions are listed, so any installation of PyJWT older than 2.13.0 should be considered vulnerable.

Risk and Exploitability

The CVSS score of 3.7 indicates low overall severity; however, exploitation requires only control over the token header, which is often feasible for an attacker who can influence authentication requests. The exploit depends on the behaviour of the JWKS endpoint—if it imposes its own rate limits or rejects requests, the attack’s impact may be reduced. Because the code does not gain privileged execution or access to confidential data, the main risk is availability. The vulnerability is not listed in the CISA KEV catalog and there is no EPSS value, so publicly reported exploitation is currently unknown.

Generated by OpenCVE AI on May 28, 2026 at 16:39 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the PyJWT library to version 2.13.0 or later.
  • If upgrading is not possible, restrict the set of allowable key identifiers by validating the kid field against a known whitelist before passing it to PyJWKClient.
  • Add application‑level rate limiting or caching of JWKS responses to prevent repeated outbound requests for unknown keys.

Generated by OpenCVE AI on May 28, 2026 at 16:39 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 28 May 2026 17:45:00 +0000

Type Values Removed Values Added
First Time appeared Jpadilla
Jpadilla pyjwt
Vendors & Products Jpadilla
Jpadilla pyjwt

Thu, 28 May 2026 15:30:00 +0000

Type Values Removed Values Added
Description PyJWT is a JSON Web Token implementation in Python. Prior to 2.13.0, PyJWKClient.get_signing_key() forces a fresh HTTP request to the JWKS endpoint for every JWT with an unknown kid value, with no rate limiting. Since kid comes from the unverified token header, an attacker can trigger unlimited outbound requests. The vulnerability surfaces only when a JWKS fetch fails; an attacker can attempt to provoke that with sustained unknown-kid traffic, but the outcome depends on upstream JWKS-endpoint behavior (rate limiting, transient errors) which is beyond the attacker's control. This vulnerability is fixed in 2.13.0.
Title PyJWT: PyJWKClient unbounded JWKS endpoint requests via attacker-controlled kid values (DoS)
Weaknesses CWE-460
CWE-755
References
Metrics cvssV3_1

{'score': 3.7, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-05-28T15:07:35.162Z

Reserved: 2026-05-21T16:18:10.619Z

Link: CVE-2026-48524

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Undergoing Analysis

Published: 2026-05-28T16:16:29.403

Modified: 2026-05-28T18:03:16.223

Link: CVE-2026-48524

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-05-28T17:30:15Z

Weaknesses