[ CVE-2026-102275 · Published 28 Sep 2026 ]

PyJWT accepts inconsistent OKP x/d JWKs, causing public/private key identity confusion

CVSS 8.2 EPSS <1%Fix available

[ Why it matters ]Priority signals

  • Public proof-of-concept exploit exists (CISA SSVC)

[ Description ]Official description

PyJWT is a Python implementation of JSON Web Token standards. From 2.1.0 until 2.15.0, PyJWT OKPAlgorithm.from_jwk in jwt/algorithms.py is affected because private-JWK import path does not compare the public key derived from d with x. This occurs when an OKP private JWK supplies non-corresponding x and d components. As a result, identity derived from x can differ from operations performed with d. Consequently, if an integration also accepts private key parameters from a proof header without rejecting them, an attacker may use a stolen sender-constrained token without the legitimate private key. This issue is fixed in version 2.15.0.

[ Fixes ]Fixes and patches

  • PyJWT 2.15.0Fixed version · GitHub Advisories · pip package PyJWT: upgrade to 2.15.0 or later (affected >= 2.1.0, <= 2.14.0)
  • Patch on github.comVendor patch or bulletin · NVD · Reference tagged 'Patch' by NVD

[ Packages ]Affected open-source packages