Description
PyJWT is a Python implementation of JSON Web Token standards. Prior to 2.14.0, PyJWT signature segment is affected because signature segment decoding accepts characters outside the canonical Base64URL representation. This occurs when non-Base64URL characters are appended to a valid compact JWS signature segment. As a result, base64url_decode produces the same signature bytes for different serialized segments. Consequently, raw-token revocation checks can fail to recognize an equivalent modified token. This issue is fixed in version 2.14.0.
Published: 2026-09-28
Score: 4.8 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Revocation Bypass via Non‑Canonical Signatures
Action: Patch
AI Analysis

Impact

The vulnerability allows an attacker to append characters that are not part of the Base64URL alphabet to the signature segment of a JSON Web Signature (JWS). The PyJWT decoder accepts these non‑canonical characters, producing the same signature bytes for multiple serialized representations. Consequently, a token that has been modified can appear unchanged to raw‑token revocation logic, allowing a revoked JWT to be accepted and used by an application.

Affected Systems

All released versions of the PyJWT library older than 2.14.0 are affected. Users of the library from any source should verify that their installed module is version 2.14.0 or later.

Risk and Exploitability

The CVSS score of 4.8 denotes moderate severity. The EPSS score indicates a very low but nonzero exploitation probability (< 1 %). The vulnerability is not listed in the CISA KEV catalog, suggesting that widespread exploitation has not been observed. Exploitation requires that an attacker can supply or influence a JWT; if the application performs raw revocation checks, the flaw can allow bypassing that check. The attack path is typically the deliberate construction of a modified token that decodes to identical signature bytes, relying on the decoder’s permissiveness.

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

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade PyJWT to version 2.14.0 or newer via pip install --upgrade pyjwt
  • Adjust any custom token revocation logic to re‑validate the complete JWS, ensuring that the signature segment is canonical before performing revocation checks
  • If an immediate upgrade is not feasible, reject any JWT whose signature segment contains characters outside the Base64URL alphabet before decoding, thus preventing the bypass

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

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-hxm8-2xgr-2p9m PyJWT: Non-canonical signature segments enable raw-token revocation bypass
History

Tue, 06 Oct 2026 19:00: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 14:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

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


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

Type Values Removed Values Added
Weaknesses CWE-1286
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 20:45:00 +0000

Type Values Removed Values Added
Description PyJWT is a Python implementation of JSON Web Token standards. Prior to 2.14.0, PyJWT signature segment is affected because signature segment decoding accepts characters outside the canonical Base64URL representation. This occurs when non-Base64URL characters are appended to a valid compact JWS signature segment. As a result, base64url_decode produces the same signature bytes for different serialized segments. Consequently, raw-token revocation checks can fail to recognize an equivalent modified token. This issue is fixed in version 2.14.0.
Title PyJWT: Non-canonical signature segments enable raw-token revocation bypass
Weaknesses CWE-180
References
Metrics cvssV3_1

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


Subscriptions

Jpadilla Pyjwt
Pyjwt Project Pyjwt
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-29T13:49:47.562Z

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

Link: CVE-2026-102269

cve-icon Vulnrichment

Updated: 2026-09-29T13:49:34.345Z

cve-icon NVD

Status : Analyzed

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

Modified: 2026-10-06T18:54:08.460

Link: CVE-2026-102269

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-09-28T20:27:54Z

Links: CVE-2026-102269 - Bugzilla

cve-icon OpenCVE Enrichment

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

Weaknesses
  • CWE-1286

    Improper Validation of Syntactic Correctness of Input

  • CWE-180

    Incorrect Behavior Order: Validate Before Canonicalize