Description
PyJWT is a Python implementation of JSON Web Token standards. From 2.4.0 until 2.14.0, PyJWT HMACAlgorithm.prepare_key is affected because asymmetric-key guard relies on textual markers that are absent from DER encoding. This occurs when an application mixes HMAC and asymmetric algorithms and supplies a DER public key as the shared verification key. As a result, PyJWT uses public DER bytes as an HMAC secret. Consequently, an attacker who knows the public key can forge authenticated HMAC tokens. This issue is fixed in version 2.14.0.
Published: 2026-09-28
Score: 7.4 High
EPSS: < 1% Very Low
KEV: No
Impact: Forged JWTs via DER public key misuse
Action: Apply patch
AI Analysis

Impact

PyJWT, between versions 2.4.0 and 2.13.x, incorrectly accepts DER‑encoded public keys as HMAC secrets when the HMACAlgorithm.prepare_key method runs. The obvious text markers used to detect asymmetric keys are missing in DER format, so the guard is bypassed. An attacker who knows the public key can compute a valid HMAC signature and forge a signed JSON Web Token that the library will treat as authentic, potentially bypassing authentication checks or granting unauthorized access.

Affected Systems

The vulnerability applies to installations of the PyJWT Python library from version 2.4.0 up to, but not including, 2.14.0. Any Python application that loads PyJWT, accepts user‑supplied JWTs, or mixes HMAC with asymmetric algorithms and supplies a DER public key as the shared verification key is at risk.

Risk and Exploitability

The CVSS score of 7.4 signals high severity. The EPSS score is currently unavailable and the flaw is not listed in CISA’s KEV catalog. If an application exposes its public key to clients or incorrectly uses that key as a shared secret, an attacker can easily generate forged tokens. The attack vector is most likely remote, leveraging any authentication interface that accepts JWTs, and does not require local exploitation or privileged access.

Generated by OpenCVE AI on September 28, 2026 at 21:50 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade PyJWT to version 2.14.0 or later so that DER public keys are no longer accepted as HMAC secrets
  • Verify that no DER‑encoded public key is passed to HMAC signing or verification routines in the application code or configuration
  • Audit the application’s token signing and verification flows to ensure separation of HMAC and asymmetric key usage, removing any accidental reuse of a public key as an HMAC secret

Generated by OpenCVE AI on September 28, 2026 at 21:50 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-p4g4-x82p-q773 PyJWT: Public keys in DER form are accepted as HMAC secrets, bypassing the CVE-2022-29217 guard
History

Tue, 06 Oct 2026 18:45: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

Thu, 01 Oct 2026 17:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'total'}, 'version': '2.0.3'}


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

Type Values Removed Values Added
References
Metrics threat_severity

None

threat_severity

Important


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

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

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

Type Values Removed Values Added
Description PyJWT is a Python implementation of JSON Web Token standards. From 2.4.0 until 2.14.0, PyJWT HMACAlgorithm.prepare_key is affected because asymmetric-key guard relies on textual markers that are absent from DER encoding. This occurs when an application mixes HMAC and asymmetric algorithms and supplies a DER public key as the shared verification key. As a result, PyJWT uses public DER bytes as an HMAC secret. Consequently, an attacker who knows the public key can forge authenticated HMAC tokens. This issue is fixed in version 2.14.0.
Title PyJWT: Public keys in DER form are accepted as HMAC secrets, bypassing the CVE-2022-29217 guard
Weaknesses CWE-347
References
Metrics cvssV3_1

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


Subscriptions

Jpadilla Pyjwt
Pyjwt Project Pyjwt
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-01T14:57:42.294Z

Reserved: 2026-09-28T20:11:16.658Z

Link: CVE-2026-102271

cve-icon Vulnrichment

Updated: 2026-10-01T14:57:30.719Z

cve-icon NVD

Status : Analyzed

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

Modified: 2026-10-06T18:36:16.047

Link: CVE-2026-102271

cve-icon Redhat

Severity : Important

Publid Date: 2026-09-28T20:31:53Z

Links: CVE-2026-102271 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-09-28T22:15:08Z

Weaknesses
  • CWE-347

    Improper Verification of Cryptographic Signature