Description
PyJWT is a Python implementation of JSON Web Token standards. Prior to 2.14.0, PyJWT get_signing_key_from_jwt is affected because unknown kid misses force refreshes without a negative cache or minimum refresh interval. This occurs when unauthenticated tokens repeatedly use the same unknown kid or varying kid values absent from the cached JWKS. As a result, each cache miss causes PyJWKClient to refresh the JWKS. Consequently, attacker traffic can amplify outbound requests to the configured JWKS endpoint. This issue is fixed in version 2.14.0.
Published: 2026-09-28
Score: 5.3 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service
Action: Apply Patch
AI Analysis

Impact

PyJWT’s client logic amplifies outbound requests to the JWKS endpoint when a token includes an unknown or changing kid value. Each cache miss triggers a refresh fetch, so an attacker can submit many unauthenticated tokens with unfamiliar kid values to artificially inflate the number of JWKS requests. The result is increased bandwidth usage and potential exhaustion of the JWKS server or the client application’s resources, which may render the service unavailable. Based on the description, it is inferred that an attacker can force the client to fetch the JWKS by supplying arbitrary kid values. The vulnerability is rooted in CWE‑408 and CWE‑770, reflecting improper authorization handling and over‑creation of resources.

Affected Systems

The affected library is PyJWT from the jpadilla:pyjwt project. All releases preceding version 2.14.0 are vulnerable; version 2.14.0 and later contain the fix that prevents repeated JWKS fetches from unknown kid values.

Risk and Exploitability

The CVSS score of 5.3 indicates medium severity, and the EPSS score is lower than 1%. No listing in the CISA KEV catalog suggests limited known exploitation. However, the vulnerability can be leveraged by an attacker who can send repeated authentication requests to a vulnerable service. By repeatedly presenting tokens with unknown kid identifiers, the attacker can cause the service to perform frequent outbound JWKS queries, amplifying network traffic and potentially exhausting server resources. The risk is mitigated by the public fix, but until patched, the attack remains feasible with minimal prerequisites. Based on the description, the likely attack vector is the submission of unauthenticated tokens with unknown kid values, and the likelihood of exploitation is inferred to be low due to the requirement for repeated requests, though the EPSS indicates a very low probability of exploitation.

Generated by OpenCVE AI on September 30, 2026 at 05:34 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade PyJWT to version 2.14.0 or later
  • If immediate upgrade is not feasible, configure PyJWKClient to use a negative cache or enforce a minimum refresh interval to bound JWKS requests
  • Monitor outbound JWKS traffic for sudden spikes that may indicate exploitation attempts

Generated by OpenCVE AI on September 30, 2026 at 05:34 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-2gx3-rcp4-g85q PyJWT: PyJWKClient still amplifies unauthenticated JWKS fetches on unknown kid values (incomplete fix of CVE-2026-48524)
History

Wed, 07 Oct 2026 21:15:00 +0000

Type Values Removed Values Added
First Time appeared Pyjwt Project
Pyjwt Project pyjwt
CPEs cpe:2.3:a:pyjwt_project:pyjwt:*:*:*:*:*:*:*:*
Vendors & Products Pyjwt Project
Pyjwt Project pyjwt

Tue, 29 Sep 2026 13:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-408
References
Metrics threat_severity

None

threat_severity

Moderate


Mon, 28 Sep 2026 22:00:00 +0000

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

Mon, 28 Sep 2026 21:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Mon, 28 Sep 2026 20:30:00 +0000

Type Values Removed Values Added
Description PyJWT is a Python implementation of JSON Web Token standards. Prior to 2.14.0, PyJWT get_signing_key_from_jwt is affected because unknown kid misses force refreshes without a negative cache or minimum refresh interval. This occurs when unauthenticated tokens repeatedly use the same unknown kid or varying kid values absent from the cached JWKS. As a result, each cache miss causes PyJWKClient to refresh the JWKS. Consequently, attacker traffic can amplify outbound requests to the configured JWKS endpoint. This issue is fixed in version 2.14.0.
Title PyJWT: PyJWKClient still amplifies unauthenticated JWKS fetches on unknown kid values (incomplete fix of CVE-2026-48524)
Weaknesses CWE-770
References
Metrics cvssV3_1

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


Subscriptions

Jpadilla Pyjwt
Pyjwt Project Pyjwt
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-28T20:35:25.908Z

Reserved: 2026-09-28T15:55:37.908Z

Link: CVE-2026-101917

cve-icon Vulnrichment

Updated: 2026-09-28T20:35:05.376Z

cve-icon NVD

Status : Analyzed

Published: 2026-09-28T21:17:13.210

Modified: 2026-10-07T21:01:01.010

Link: CVE-2026-101917

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-09-28T20:07:44Z

Links: CVE-2026-101917 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-09-30T05:45:17Z

Weaknesses
  • CWE-408

    Incorrect Behavior Order: Early Amplification

  • CWE-770

    Allocation of Resources Without Limits or Throttling