CVE-2026-102275
published 2026-09-28CVE-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…
PriorityP346high8.2CVSS 3.1
AVNACLPRNUINSUCLIHAN
EPSS
0.17%
5.9th percentile
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.
Affected
3 ranges
| Vendor | Product | Version range | Fixed in |
|---|---|---|---|
| jpadilla | pyjwt | — | — |
| pyjwt_project | pyjwt | >= 2.1.0 < 2.15.0 | 2.15.0 |
| pyjwt_project | pyjwt | >= 2.1.0 < 2.15.0 | 2.15.0 |
CVSS provenance
nvdv3.18.2HIGHCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N
vendor_redhat6.5MEDIUM
Stop checking back — get the weekly exploitation signal.
Every Monday: what got weaponized or added to CISA KEV in the last seven days — each CVE cross-linked to its PoC, Nuclei template, and detection rule. Free, one email a week, unsubscribe in one click.
GHSA
PyJWT accepts inconsistent OKP x/d JWKs, causing public/private key identity confusion
ghsa·2026-10-05
CVE-2026-102275 [MEDIUM] CWE-345 PyJWT accepts inconsistent OKP x/d JWKs, causing public/private key identity confusion
PyJWT accepts inconsistent OKP x/d JWKs, causing public/private key identity confusion
### Summary
PyJWT accepts internally inconsistent OKP private JWKs where the declared public key `x` does not correspond to the supplied private key `d`.
When `d` is present, `OKPAlgorithm.from_jwk()` constructs the Ed25519/Ed448 private key from `d` without verifying that the public key derived from `d` matches `x`. As a result, the original JWK can contain one public key identity while PyJWT performs cryptographic operations using a different key.
In affected DPoP integrations, this can allow a stolen sender-constrained access token to be used without possession of the legitimate holder's private key.
### Details
The vulnerable logic is in `jwt/algorithms.py`:
```python
if "x" not in obj:
raise
VulDB
jpadilla PyJWT up to 2.14.x OKPAlgorithm jwt/algorithms.py OKPAlgorithm.from_jwk comparison
vuldb·2026-09-28·CVSS 6.5
CVE-2026-102275 [MEDIUM] jpadilla PyJWT up to 2.14.x OKPAlgorithm jwt/algorithms.py OKPAlgorithm.from_jwk comparison
A vulnerability labeled as critical has been found in jpadilla PyJWT up to 2.14.x. Affected is the function OKPAlgorithm.from_jwk of the file jwt/algorithms.py of the component OKPAlgorithm. Executing a manipulation can lead to incorrect comparison.
This vulnerability is registered as CVE-2026-102275. It is possible to launch the attack remotely. No exploit is available.
The affected component should be upgraded.
Red Hat
pyjwt: PyJWT: Token verification bypass via mismatched OKP key components
vendor_redhat·2026-09-28·CVSS 6.5
CVE-2026-102275 [MEDIUM] CWE-347 pyjwt: PyJWT: Token verification bypass via mismatched OKP key components
pyjwt: PyJWT: Token verification bypass via mismatched OKP key components
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.
A flaw was found in PyJWT. When importing an Octet Key Pair (OKP) private JSON Web
No detection rules found.
No public exploits indexed.
2026-09-28
Published