Skip to main content

PyJWT EUVDEUVD-2026-32917

| CVE-2026-48526 HIGH
Improper Authentication (CWE-287)
2026-05-28 GitHub_M GHSA-xgmm-8j9v-c9wx PYSEC-2026-179
7.4
CVSS 3.1 · Vendor: GitHub_M
Share

Severity by source

Vendor (GitHub_M) PRIMARY
7.4 HIGH
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
SUSE
HIGH
qualitative
Red Hat
7.4 HIGH
qualitative

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None

Lifecycle Timeline

2
Patch available
May 28, 2026 - 17:01 EUVD
Analysis Generated
May 28, 2026 - 15:50 vuln.today

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 40,697 pypi packages depend on pyjwt (4,610 direct, 36,482 indirect)

Ecosystem-wide dependent count for version 2.13.0.

DescriptionCVE.org

PyJWT is a JSON Web Token implementation in Python. Prior to 2.13.0, when the verifier is decoding JSON Web Tokens, while supporting both asymmetric and HMAC algorithms, the library does not validate use of JSON Web Keys in HMAC algorithm, allowing attacker to use the issuer public key as the secret key for HMAC algorithm. This vulnerability is fixed in 2.13.0.

AnalysisAI

Authentication bypass in PyJWT versions prior to 2.13.0 allows remote attackers to forge valid JSON Web Tokens by exploiting an algorithm confusion flaw where the library fails to validate that a JSON Web Key intended for asymmetric verification is not reused as an HMAC shared secret. An attacker who knows the issuer's public key (typically distributed openly via JWKS endpoints) can sign HMAC-algorithm tokens with that public key and have them accepted as legitimate. No public exploit identified at time of analysis, though the underlying algorithm-confusion class is a well-documented JWT attack pattern.

Technical ContextAI

PyJWT (cpe:2.3:a:jpadilla:pyjwt) is the most widely used Python implementation of RFC 7519 JSON Web Tokens, commonly embedded in Flask, Django, and FastAPI authentication stacks. The flaw is a classic algorithm-confusion vulnerability mapped to CWE-287 (Improper Authentication): when an application configures the verifier to accept both asymmetric algorithms (RS256/ES256, which use a public key) and symmetric algorithms (HS256/HS384/HS512, which use a shared secret), PyJWT did not reject the case where the caller-supplied key was a JWK or asymmetric public key being fed into the HMAC path. Because the public key is, by design, public, an attacker can craft an HS256 token using that key bytes as the HMAC secret, and the verifier will compute the same HMAC and accept the token as valid - bypassing the trust assumption that only the holder of the private key could have produced it.

RemediationAI

Upgrade PyJWT to vendor-released patch version 2.13.0 or later (pip install --upgrade 'pyjwt>=2.13.0') as documented in advisory GHSA-xgmm-8j9v-c9wx (https://github.com/jpadilla/pyjwt/security/advisories/GHSA-xgmm-8j9v-c9wx). As a compensating control until upgrade is possible, restrict the algorithms parameter passed to jwt.decode() to a single family - pass algorithms=['RS256'] (or whichever single asymmetric algorithm your issuer uses) rather than a list that includes both HMAC and asymmetric algorithms; the side effect is loss of algorithm agility during key rotation. Additionally, ensure verification code explicitly loads the issuer's public key as a cryptography PublicKey object rather than raw bytes/PEM strings, so it cannot silently be reinterpreted as an HMAC secret. Audit JWKS-consuming code paths and reject tokens whose alg header does not match the key type retrieved from the JWKS kid.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2026-55255 HIGH POC
8.4 Jun 19

Cross-user flow execution in Langflow (< 1.9.1) lets any authenticated API-key holder run another user's flow by passing

Vendor StatusVendor

SUSE

Severity: High
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Fixed
SUSE Linux Enterprise High Performance Computing 12 Fixed
SUSE Linux Enterprise High Performance Computing 15 SP7 Fixed
SUSE Linux Enterprise Micro 5.5 Fixed
SUSE Linux Enterprise Module for Basesystem 15 SP7 Fixed

Share

EUVD-2026-32917 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy