CVE-2026-102275
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.
- Score
- 6.5 medium
- Published
- 2026-09-28
- Links
- NVD · cve.org · Report wrong data
Matched ports (1)
| Port | Package | Version | Status | Maintainer |
|---|---|---|---|---|
| www/py-pyjwt | py312-pyjwt | 2.14.0 | unaddressed | sunpoet@FreeBSD.org |
Template for a VuXML entry
Range taken from the CVE record, check it before committing. make newentry in security/vuxml creates the vid.
<vuln vid="FIXME (make newentry)">
<topic>FIXME -- FIXME</topic>
<affects>
<package>
<name>py312-pyjwt</name>
<range><lt>2.15.0</lt></range>
</package>
</affects>
<description>
<body xmlns="http://www.w3.org/1999/xhtml">
<p>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.</p>
</body>
</description>
<references>
<cvename>CVE-2026-102275</cvename>
<url>https://nvd.nist.gov/vuln/detail/CVE-2026-102275</url>
</references>
<dates>
<discovery>2026-09-28</discovery>
<entry>2026-10-26</entry>
</dates>
</vuln>