Every CVE Search/ Get API key

CVE-2026-102272

PyJWT BOM Bypass

7.4 HighFix available

PyJWT is a Python implementation of JSON Web Token standards. From 2.13.0 until 2.14.0, HMACAlgorithm.prepare_key in jwt/algorithms.py is affected because raw-JWK detector does not normalize accepted Unicode byte-order marks before checking for JSON. This occurs when a public JWK is prefixed with a UTF-8 BOM and used in a mixed-algorithm verification path. As a result, public JWK bypasses asymmetric-key detection and becomes the HMAC secret. Consequently, an attacker who knows the public key can forge authenticated tokens. This issue is fixed in version 2.14.0.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
High
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
High
Integrity
High
Availability
None

Exploit likelihood

0.22%Unchanged since Sep 29, 2026
90%50%10%1%

What each source reports

CVE List Score used 7.4

PyJWT BOM Bypass

PyJWT is a Python implementation of JSON Web Token standards. From 2.13.0 until 2.14.0, HMACAlgorithm.prepare_key in jwt/algorithms.py is affected because raw-JWK detector does not normalize accepted Unicode byte-order marks before checking for JSON. This occurs when a public JWK is prefixed with a UTF-8 BOM and used in a mixed-algorithm verification path. As a result, public JWK bypasses asymmetric-key detection and becomes the HMAC secret. Consequently, an attacker who knows the public key can forge authenticated tokens. This issue is fixed in version 2.14.0.

Record
CVE-2026-102272
CVSS 3.1
7.4 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Weakness
CWE-347
Updated
2026-11-02
EUVDEUVD-2026-88540 7.4

PyJWT is a Python implementation of JSON Web Token standards. From 2.13.0 until 2.14.0, HMACAlgorithm.prepare_key in jwt/algorithms.py is affected because raw-JWK detector does not normalize accepted Unicode byte-order marks before checking for JSON. This occurs when a public JWK is prefixed with a UTF-8 BOM and used in a mixed-algorithm verification path. As a result, public JWK bypasses asymmetric-key detection and becomes the HMAC secret. Consequently, an attacker who knows the public key can forge authenticated tokens. This issue is fixed in version 2.14.0.

Record
EUVD-2026-88540
CVSS 3.1
7.4 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-r6x4-923q-g947 7.4

PyJWT BOM Bypass

Affected Package


Root Cause

PyJWT 2.13.0 introduced a guard in HMACAlgorithm.prepare_key() (file jwt/algorithms.py, approximately line 344) to prevent RSA public key material from being used as an HMAC secret — the root cause of CVE-2026-48526.

The guard uses bytes.lstrip() before calling startswith(b"{"):

stripped = key_bytes.lstrip() # strips ASCII whitespace only
if stripped.startswith(b"{"): # JWK detection
 ...
 raise InvalidKeyError("The specified key is an asymmetric key...")

bytes.lstrip() with no argument removes only bytes in the ASCII whitespace set (\x20 \t \n \r \x0b \x0c). A UTF-8 BOM prefix (\xef\xbb\xbf) is not stripped, so stripped.startswith(b"{") returns False for any BOM-prefixed JWK JSON. The JWK detection block is never entered, and the RSA public key bytes are silently accepted as the HMAC-SHA256 secret.


PoC Sketch (pseudocode — not a weaponized payload)

# 1. Attacker obtains RSA public key JWK (e.g., from /jwks.json endpoint)
# and prepends a UTF-8 BOM byte sequence before the JSON opening brace.
# 2. Attacker signs a JWT using HS256, with the BOM-prefixed JWK as the secret.
# 3. Attacker submits the forged token to a verifier that:
# - accepts algorithms=["HS256", "RS256"]
# - holds the same RSA public key as raw bytes (BOM-prefixed key file)
# 4. PyJWT 2.13.0 accepts the token because the BOM causes the JWK
# detection check to be skipped — the RSA JWK bytes become a valid HMAC key.
# Result: arbitrary claims (role, sub, etc.) accepted by the verifier.

Impact

An unauthenticated network attacker who knows the target application's RSA public key — which is public by design and obtainable from a JWKS endpoint or certificate — can forge JWT tokens containing arbitrary claims and have them accepted by a PyJWT 2.13.0 verifier configured with a mixed algorithm set (algorithms=["HS256", "RS256"] or equivalent). The resulting impact is complete authentication and authorization bypass (C:H/I:H). Attack Complexity is High (AC:H) because the attacker must obtain the RSA public key and the verifier must use a mixed-algorithm configuration; no authentication is required (PR:N). This is a patch bypass: users who upgraded to 2.13.0 specifically to remediate CVE-2026-48526 remain vulnerable.


Suggested Fix

Option A (minimal): Replace lstrip() with an explicit strip of known BOM prefixes before the JSON detection check:

# Strip common BOM prefixes in addition to ASCII whitespace
BOM_PREFIXES = (b"\xef\xbb\xbf", b"\xff\xfe", b"\xfe\xff")
stripped = key_bytes
for bom in BOM_PREFIXES:
 if stripped.startswith(bom):
 stripped = stripped[len(bom):]
 break
stripped = stripped.lstrip()

Option B (more robust): Use json.loads() as the detection mechanism instead of a byte-prefix check, so encoding variants and whitespace are handled by the JSON parser:

try:
 test_obj = json.loads(key_bytes.strip())
 if isinstance(test_obj, dict) and "kty" in test_obj:
 raise InvalidKeyError("The specified key is an asymmetric key...")
except (ValueError, UnicodeDecodeError):
 pass

Option B is preferred because it is resilient to any future encoding variant.


Maintainer update — 2026-09-09

We reproduced the reported algorithm-confusion path on PyJWT 2.13.0. When an application passes a raw public RSA JWK as the key and allows both an asymmetric and HMAC algorithm, a forged HS256 token signed with the known public JWK bytes is accepted when the JWK is represented in encodings accepted by Python's JSON decoder. The normal raw-JWK, asymmetric-only, and algorithm-bound PyJWK controls reject the token. This is an application configuration…

Record
GHSA-r6x4-923q-g947
CVSS 3.1
7.4 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Weakness
CWE-347
Updated
2026-11-02
NVD 7.4

PyJWT is a Python implementation of JSON Web Token standards. From 2.13.0 until 2.14.0, HMACAlgorithm.prepare_key in jwt/algorithms.py is affected because raw-JWK detector does not normalize accepted Unicode byte-order marks before checking for JSON. This occurs when a public JWK is prefixed with a UTF-8 BOM and used in a mixed-algorithm verification path. As a result, public JWK bypasses asymmetric-key detection and becomes the HMAC secret. Consequently, an attacker who knows the public key can forge authenticated tokens. This issue is fixed in version 2.14.0.

Record
CVE-2026-102272
CVSS 3.1
7.4 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Weakness
CWE-347
Updated
2026-11-02
OSVBELL-CVE-2026-102272 7.4
Record
BELL-CVE-2026-102272
CVSS 3.1
7.4 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Updated
2026-11-07
OSV 7.4

PyJWT BOM Bypass

PyJWT is a Python implementation of JSON Web Token standards. From 2.13.0 until 2.14.0, HMACAlgorithm.prepare_key in jwt/algorithms.py is affected because raw-JWK detector does not normalize accepted Unicode byte-order marks before checking for JSON. This occurs when a public JWK is prefixed with a UTF-8 BOM and used in a mixed-algorithm verification path. As a result, public JWK bypasses asymmetric-key detection and becomes the HMAC secret. Consequently, an attacker who knows the public key can forge authenticated tokens. This issue is fixed in version 2.14.0.

Record
CVE-2026-102272
CVSS 3.1
7.4 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Weakness
CWE-347
Updated
2026-11-04
Show 16 moreShow less
OSVDEBIAN-CVE-2026-102272 7.4

PyJWT is a Python implementation of JSON Web Token standards. From 2.13.0 until 2.14.0, HMACAlgorithm.prepare_key in jwt/algorithms.py is affected because raw-JWK detector does not normalize accepted Unicode byte-order marks before checking for JSON. This occurs when a public JWK is prefixed with a UTF-8 BOM and used in a mixed-algorithm verification path. As a result, public JWK bypasses asymmetric-key detection and becomes the HMAC secret. Consequently, an attacker who knows the public key can forge authenticated tokens. This issue is fixed in version 2.14.0.

Record
DEBIAN-CVE-2026-102272
CVSS 3.1
7.4 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Updated
2026-11-02
OSVGHSA-r6x4-923q-g947 7.4

PyJWT BOM Bypass

Affected Package


Root Cause

PyJWT 2.13.0 introduced a guard in HMACAlgorithm.prepare_key() (file jwt/algorithms.py, approximately line 344) to prevent RSA public key material from being used as an HMAC secret — the root cause of CVE-2026-48526.

The guard uses bytes.lstrip() before calling startswith(b"{"):

stripped = key_bytes.lstrip() # strips ASCII whitespace only
if stripped.startswith(b"{"): # JWK detection
 ...
 raise InvalidKeyError("The specified key is an asymmetric key...")

bytes.lstrip() with no argument removes only bytes in the ASCII whitespace set (\x20 \t \n \r \x0b \x0c). A UTF-8 BOM prefix (\xef\xbb\xbf) is not stripped, so stripped.startswith(b"{") returns False for any BOM-prefixed JWK JSON. The JWK detection block is never entered, and the RSA public key bytes are silently accepted as the HMAC-SHA256 secret.


PoC Sketch (pseudocode — not a weaponized payload)

# 1. Attacker obtains RSA public key JWK (e.g., from /jwks.json endpoint)
# and prepends a UTF-8 BOM byte sequence before the JSON opening brace.
# 2. Attacker signs a JWT using HS256, with the BOM-prefixed JWK as the secret.
# 3. Attacker submits the forged token to a verifier that:
# - accepts algorithms=["HS256", "RS256"]
# - holds the same RSA public key as raw bytes (BOM-prefixed key file)
# 4. PyJWT 2.13.0 accepts the token because the BOM causes the JWK
# detection check to be skipped — the RSA JWK bytes become a valid HMAC key.
# Result: arbitrary claims (role, sub, etc.) accepted by the verifier.

Impact

An unauthenticated network attacker who knows the target application's RSA public key — which is public by design and obtainable from a JWKS endpoint or certificate — can forge JWT tokens containing arbitrary claims and have them accepted by a PyJWT 2.13.0 verifier configured with a mixed algorithm set (algorithms=["HS256", "RS256"] or equivalent). The resulting impact is complete authentication and authorization bypass (C:H/I:H). Attack Complexity is High (AC:H) because the attacker must obtain the RSA public key and the verifier must use a mixed-algorithm configuration; no authentication is required (PR:N). This is a patch bypass: users who upgraded to 2.13.0 specifically to remediate CVE-2026-48526 remain vulnerable.


Suggested Fix

Option A (minimal): Replace lstrip() with an explicit strip of known BOM prefixes before the JSON detection check:

# Strip common BOM prefixes in addition to ASCII whitespace
BOM_PREFIXES = (b"\xef\xbb\xbf", b"\xff\xfe", b"\xfe\xff")
stripped = key_bytes
for bom in BOM_PREFIXES:
 if stripped.startswith(bom):
 stripped = stripped[len(bom):]
 break
stripped = stripped.lstrip()

Option B (more robust): Use json.loads() as the detection mechanism instead of a byte-prefix check, so encoding variants and whitespace are handled by the JSON parser:

try:
 test_obj = json.loads(key_bytes.strip())
 if isinstance(test_obj, dict) and "kty" in test_obj:
 raise InvalidKeyError("The specified key is an asymmetric key...")
except (ValueError, UnicodeDecodeError):
 pass

Option B is preferred because it is resilient to any future encoding variant.


Maintainer update — 2026-09-09

We reproduced the reported algorithm-confusion path on PyJWT 2.13.0. When an application passes a raw public RSA JWK as the key and allows both an asymmetric and HMAC algorithm, a forged HS256 token signed with the known public JWK bytes is accepted when the JWK is represented in encodings accepted by Python's JSON decoder. The normal raw-JWK, asymmetric-only, and algorithm-bound PyJWK controls reject the token. This is an application configuration…

Record
GHSA-r6x4-923q-g947
CVSS 3.1
7.4 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Weakness
CWE-347
Updated
2026-11-02
OSVPYSEC-2026-4150 7.4

PyJWT BOM Bypass

Affected Package


Root Cause

PyJWT 2.13.0 introduced a guard in HMACAlgorithm.prepare_key() (file jwt/algorithms.py, approximately line 344) to prevent RSA public key material from being used as an HMAC secret — the root cause of CVE-2026-48526.

The guard uses bytes.lstrip() before calling startswith(b"{"):

stripped = key_bytes.lstrip() # strips ASCII whitespace only
if stripped.startswith(b"{"): # JWK detection
 ...
 raise InvalidKeyError("The specified key is an asymmetric key...")

bytes.lstrip() with no argument removes only bytes in the ASCII whitespace set (\x20 \t \n \r \x0b \x0c). A UTF-8 BOM prefix (\xef\xbb\xbf) is not stripped, so stripped.startswith(b"{") returns False for any BOM-prefixed JWK JSON. The JWK detection block is never entered, and the RSA public key bytes are silently accepted as the HMAC-SHA256 secret.


PoC Sketch (pseudocode — not a weaponized payload)

# 1. Attacker obtains RSA public key JWK (e.g., from /jwks.json endpoint)
# and prepends a UTF-8 BOM byte sequence before the JSON opening brace.
# 2. Attacker signs a JWT using HS256, with the BOM-prefixed JWK as the secret.
# 3. Attacker submits the forged token to a verifier that:
# - accepts algorithms=["HS256", "RS256"]
# - holds the same RSA public key as raw bytes (BOM-prefixed key file)
# 4. PyJWT 2.13.0 accepts the token because the BOM causes the JWK
# detection check to be skipped — the RSA JWK bytes become a valid HMAC key.
# Result: arbitrary claims (role, sub, etc.) accepted by the verifier.

Impact

An unauthenticated network attacker who knows the target application's RSA public key — which is public by design and obtainable from a JWKS endpoint or certificate — can forge JWT tokens containing arbitrary claims and have them accepted by a PyJWT 2.13.0 verifier configured with a mixed algorithm set (algorithms=["HS256", "RS256"] or equivalent). The resulting impact is complete authentication and authorization bypass (C:H/I:H). Attack Complexity is High (AC:H) because the attacker must obtain the RSA public key and the verifier must use a mixed-algorithm configuration; no authentication is required (PR:N). This is a patch bypass: users who upgraded to 2.13.0 specifically to remediate CVE-2026-48526 remain vulnerable.


Suggested Fix

Option A (minimal): Replace lstrip() with an explicit strip of known BOM prefixes before the JSON detection check:

# Strip common BOM prefixes in addition to ASCII whitespace
BOM_PREFIXES = (b"\xef\xbb\xbf", b"\xff\xfe", b"\xfe\xff")
stripped = key_bytes
for bom in BOM_PREFIXES:
 if stripped.startswith(bom):
 stripped = stripped[len(bom):]
 break
stripped = stripped.lstrip()

Option B (more robust): Use json.loads() as the detection mechanism instead of a byte-prefix check, so encoding variants and whitespace are handled by the JSON parser:

try:
 test_obj = json.loads(key_bytes.strip())
 if isinstance(test_obj, dict) and "kty" in test_obj:
 raise InvalidKeyError("The specified key is an asymmetric key...")
except (ValueError, UnicodeDecodeError):
 pass

Option B is preferred because it is resilient to any future encoding variant.


Maintainer update — 2026-09-09

We reproduced the reported algorithm-confusion path on PyJWT 2.13.0. When an application passes a raw public RSA JWK as the key and allows both an asymmetric and HMAC algorithm, a forged HS256 token signed with the known public JWK bytes is accepted when the JWK is represented in encodings accepted by Python's JSON decoder. The normal raw-JWK, asymmetric-only, and algorithm-bound PyJWK controls reject the token. This is an application configuration…

Record
PYSEC-2026-4150
CVSS 3.1
7.4 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Updated
2026-11-02
OSVRLSA-2026:94500 9.1

Critical: fence-agents security update

The fence-agents packages provide a collection of scripts for handling remote power management for cluster devices. They allow failed or unreachable nodes to be forcibly restarted and removed from the cluster.

Security Fix(es):

  • pyjwt: pyjwt: Authentication bypass via empty HMAC key acceptance (CVE-2026-102266)

  • pyjwt: PyJWT: Authentication bypass via improper public key validation (CVE-2026-102268)

  • pyjwt: PyJWT: Authentication bypass via acceptance of DER public keys as HMAC secrets (CVE-2026-102271)

  • pyjwt: pyjwt: Verification key substitution via unvalidated JWKS redirects (CVE-2026-102267)

  • pyjwt: pyjwt: Token forgery via improper Unicode byte-order mark handling (CVE-2026-102272)

For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.

Record
RLSA-2026:94500
CVSS 3.1
9.1 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Updated
2026-11-04
OSVRLSA-2026:94501 9.1

Critical: fence-agents security update

The fence-agents packages provide a collection of scripts for handling remote power management for cluster devices. They allow failed or unreachable nodes to be forcibly restarted and removed from the cluster.

Security Fix(es):

  • pyjwt: pyjwt: Authentication bypass via empty HMAC key acceptance (CVE-2026-102266)

  • pyjwt: PyJWT: Authentication bypass via improper public key validation (CVE-2026-102268)

  • pyjwt: PyJWT: Authentication bypass via acceptance of DER public keys as HMAC secrets (CVE-2026-102271)

  • pyjwt: pyjwt: Verification key substitution via unvalidated JWKS redirects (CVE-2026-102267)

  • pyjwt: pyjwt: Token forgery via improper Unicode byte-order mark handling (CVE-2026-102272)

For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.

Record
RLSA-2026:94501
CVSS 3.1
9.1 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Updated
2026-11-04
OSVUBUNTU-CVE-2026-102272 7.4

PyJWT is a Python implementation of JSON Web Token standards. From 2.13.0 until 2.14.0, HMACAlgorithm.prepare_key in jwt/algorithms.py is affected because raw-JWK detector does not normalize accepted Unicode byte-order marks before checking for JSON. This occurs when a public JWK is prefixed with a UTF-8 BOM and used in a mixed-algorithm verification path. As a result, public JWK bypasses asymmetric-key detection and becomes the HMAC secret. Consequently, an attacker who knows the public key can forge authenticated tokens. This issue is fixed in version 2.14.0.

Record
UBUNTU-CVE-2026-102272
CVSS 3.1
7.4 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Updated
2026-11-02
OSVALSA-2026:94500 No score

Critical: fence-agents security update

The fence-agents packages provide a collection of scripts for handling remote power management for cluster devices. They allow failed or unreachable nodes to be forcibly restarted and removed from the cluster.

Security Fix(es):

  • pyjwt: pyjwt: Authentication bypass via empty HMAC key acceptance (CVE-2026-102266)
  • pyjwt: PyJWT: Authentication bypass via improper public key validation (CVE-2026-102268)
  • pyjwt: PyJWT: Authentication bypass via acceptance of DER public keys as HMAC secrets (CVE-2026-102271)
  • pyjwt: pyjwt: Verification key substitution via unvalidated JWKS redirects (CVE-2026-102267)
  • pyjwt: pyjwt: Token forgery via improper Unicode byte-order mark handling (CVE-2026-102272)

For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.

Record
ALSA-2026:94500
Updated
2026-11-04
OSVALSA-2026:94501 No score

Critical: fence-agents security update

The fence-agents packages provide a collection of scripts for handling remote power management for cluster devices. They allow failed or unreachable nodes to be forcibly restarted and removed from the cluster.

Security Fix(es):

  • pyjwt: pyjwt: Authentication bypass via empty HMAC key acceptance (CVE-2026-102266)
  • pyjwt: PyJWT: Authentication bypass via improper public key validation (CVE-2026-102268)
  • pyjwt: PyJWT: Authentication bypass via acceptance of DER public keys as HMAC secrets (CVE-2026-102271)
  • pyjwt: pyjwt: Verification key substitution via unvalidated JWKS redirects (CVE-2026-102267)
  • pyjwt: pyjwt: Token forgery via improper Unicode byte-order mark handling (CVE-2026-102272)

For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.

Record
ALSA-2026:94501
Updated
2026-11-04
OSVAZL-105224 No score

CVE-2026-102272 affecting package python-jwt for versions less than 2.15.1-1

PyJWT is a Python implementation of JSON Web Token standards. From 2.13.0 until 2.14.0, HMACAlgorithm.prepare_key in jwt/algorithms.py is affected because raw-JWK detector does not normalize accepted Unicode byte-order marks before checking for JSON. This occurs when a public JWK is prefixed with a UTF-8 BOM and used in a mixed-algorithm verification path. As a result, public JWK bypasses asymmetric-key detection and becomes the HMAC secret. Consequently, an attacker who knows the public key can forge authenticated tokens. This issue is fixed in version 2.14.0.

Record
AZL-105224
Updated
2026-11-02
OSVCLSA-2026-1793606235 No score

TuxCare security update for pyjwt (3 CVEs)

TuxCare rebuilt pyjwt to address 3 CVEs. Fixed in 2.10.1.post8+tuxcare.

Record
CLSA-2026-1793606235
Updated
2026-11-02
OSVCLSA-2026-1793698392 No score

TuxCare security update for pyjwt (4 CVEs)

TuxCare rebuilt pyjwt to address 4 CVEs. Fixed in 2.8.0.post6+tuxcare.

Record
CLSA-2026-1793698392
Updated
2026-11-03
OSVCLSA-2026-1793869522 No score

TuxCare security update for pyjwt (3 CVEs)

TuxCare rebuilt pyjwt to address 3 CVEs. Fixed in 2.3.0.post6+tuxcare.

Record
CLSA-2026-1793869522
Updated
2026-11-05
OSVopenSUSE-SU-2026:11994-1 No score

python313-PyJWT-2.15.1-1.1 on GA media

These are all security issues fixed in the python313-PyJWT-2.15.1-1.1 package on the GA media of openSUSE Tumbleweed.

Record
openSUSE-SU-2026:11994-1
Updated
2026-11-02
OSVROOT-APP-PYPI-CVE-2026-102272 No score

CVE-2026-102272 in pyjwt - Patched by Root

Root has patched CVE-2026-102272 in the pyjwt package for Root:PyPI. Multiple fixed versions available.

Record
ROOT-APP-PYPI-CVE-2026-102272
Updated
2026-11-02
OSVUSN-8916-1 No score

pyjwt vulnerabilities

YuSung Han discovered that PyJWT did not properly validate certain JWK keys when performing HMAC verification. An attacker could possibly use this issue to forge authentication tokens. This issue only affected Ubuntu 26.04 LTS. (CVE-2026-102266)

Rohan Das discovered that PyJWT incorrectly handled redirects when fetching key sets. A remote attacker could possibly use this issue to cause PyJWT to disclose sensitive information. This issue only affected Ubuntu 22.04 LTS, Ubuntu 24.04 LTS, Ubuntu 26.04 LTS. (CVE-2026-102267)

It was discovered that PyJWT incorrectly recognized certain PEM representations. An attacker who knew the public key could possibly use this issue to forge authentication tokens. This issue only affected Ubuntu 18.04 LTS, Ubuntu 20.04 LTS, Ubuntu 22.04 LTS, Ubuntu 24.04 LTS, Ubuntu 26.04 LTS. (CVE-2026-102268)

Nuno Lopes discovered that PyJWT incorrectly handled DER public keys when performing HMAC verification. An attacker who knew the public key could possibly use this issue to forge authentication tokens. (CVE-2026-102271)

It was discovered that PyJWT did not properly handle certain JWK keys prefixed with a byte-order mark. An attacker who knew the public key could possibly use this issue to forge authentication tokens. (CVE-2026-102272)

Charles Vosburgh discovered that PyJWT incorrectly handled certain JWK containers when performing HMAC verification. An attacker who knew the public key could possibly use this issue to forge authentication tokens. (CVE-2026-102273)

Record
USN-8916-1
Updated
2026-11-02
OSVUSN-8916-2 No score

pyjwt vulnerabilities

USN-8916-1 fixed vulnerabilities in PyJWT. This update provides the corresponding fix for PyJWT on Ubuntu 26.10.

Original advisory details:

YuSung Han discovered that PyJWT did not properly validate certain JWK keys when performing HMAC verification. An attacker could possibly use this issue to forge authentication tokens. (CVE-2026-102266)

Rohan Das discovered that PyJWT incorrectly handled redirects when fetching key sets. A remote attacker could possibly use this issue to cause PyJWT to disclose sensitive information. (CVE-2026-102267)

It was discovered that PyJWT incorrectly recognized certain PEM representations. An attacker who knew the public key could possibly use this issue to forge authentication tokens. (CVE-2026-102268)

Nuno Lopes discovered that PyJWT incorrectly handled DER public keys when performing HMAC verification. An attacker who knew the public key could possibly use this issue to forge authentication tokens. (CVE-2026-102271)

It was discovered that PyJWT did not properly handle certain JWK keys prefixed with a byte-order mark. An attacker who knew the public key could possibly use this issue to forge authentication tokens. (CVE-2026-102272)

Charles Vosburgh discovered that PyJWT incorrectly handled certain JWK containers when performing HMAC verification. An attacker who knew the public key could possibly use this issue to forge authentication tokens. (CVE-2026-102273)

Record
USN-8916-2
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
pyjwt
PyPI
2.13.0 to 2.13.0
2.14.0
fence-agents-aliyun
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-all
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-amt-ws
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-apc
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-apc-snmp
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-aws
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-azure-arm
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-bladecenter
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-cisco-ucs
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
Show 111 moreShow less
Affected packages
PackageAffectedFixed
fence-agents-common
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-compute
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-drac5
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-gce
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-hpblade
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-ibm-powervs
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-ibm-vpc
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-ibmblade
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-ifmib
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-ilo-moonshot
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-ilo-mp
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-kdump
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-kubevirt
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-lpar
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-mpath
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-nutanix-ahv
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-openstack
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-redfish
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-rhevm
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-rsa
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-scsi
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-virsh
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-vmware-rest
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-virt
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-virtd-libvirt
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-virtd-multicast
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-virtd-serial
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
ha-cloud-support
AlmaLinux:9
From an advisory covering 5 CVEs
before 4.10.0-110.el9_8.8
4.10.0-110.el9_8.8
fence-agents-aliyun
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-all
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-amt-ws
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-apc
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-apc-snmp
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-aws
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-azure-arm
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-bladecenter
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-brocade
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-cisco-mds
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-cisco-ucs
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-common
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-drac5
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-eaton-snmp
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-emerson
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-eps
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-gce
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-heuristics-ping
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-hpblade
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-ibm-powervs
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-ibm-vpc
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-ibmblade
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-ifmib
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-ilo-moonshot
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-ilo-mp
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-ilo-ssh
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-ilo2
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-intelmodular
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-ipdu
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-ipmilan
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-kdump
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-kubevirt
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-lpar
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-mpath
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-nutanix-ahv
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-openstack
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-redfish
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-rhevm
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-rsa
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-rsb
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-sbd
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-scsi
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-virsh
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-vmware-rest
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-vmware-soap
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-wti
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-agents-zvm
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-virt
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-virtd
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-virtd-cpg
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-virtd-libvirt
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-virtd-multicast
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-virtd-serial
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
fence-virtd-tcp
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
ha-cloud-support
AlmaLinux:10
From an advisory covering 5 CVEs
before 4.16.0-21.el10_2.7
4.16.0-21.el10_2.7
python-jwt
Azure Linux:3
before 2.15.1-1
2.15.1-1
py3-jwt
Alpaquita:25
2.10.1-r0 up to 2.15.1-r0
2.15.1-r0
py3-jwt
Alpaquita:stream
2.8.0-r1 up to 2.15.1-r0
2.15.1-r0
pyjwt
TuxCare:PyPI
From an advisory covering 3 CVEs
2.10.1 up to 2.10.1.post8+tuxcare, plus listed versions
2.10.1.post1+tuxcare2.10.1.post2+tuxcare2.10.1.post3+tuxcare2.10.1.post4+tuxcare2.10.1.post5+tuxcare2.10.1.post6+tuxcare2.10.1.post7+tuxcare
2.10.1.post8+tuxcare
pyjwt
TuxCare:PyPI
From an advisory covering 4 CVEs
2.8.0 up to 2.8.0.post6+tuxcare, plus listed versions
2.8.0.post1+tuxcare2.8.0.post2+tuxcare2.8.0.post3+tuxcare2.8.0.post4+tuxcare2.8.0.post5+tuxcare
2.8.0.post6+tuxcare
pyjwt
TuxCare:PyPI
From an advisory covering 3 CVEs
2.3.0 up to 2.3.0.post6+tuxcare, plus listed versions
2.3.0.post1+tuxcare2.3.0.post2+tuxcare2.3.0.post3+tuxcare2.3.0.post4+tuxcare2.3.0.post5+tuxcare
2.3.0.post6+tuxcare
pyjwt
Debian:13
All versions, plus listed versions
2.10.1-22.10.1-2+deb13u12.10.1-32.10.1-42.11.0-2
Show 5 moreShow less
2.12.1-12.13.0-12.14.0-12.15.0-12.15.1-1
None known
pyjwt
Debian:14
before 2.14.0-1, plus listed versions
2.10.1-22.10.1-32.10.1-42.11.0-22.12.1-12.13.0-1
2.14.0-1
pyjwt
PyPI
2.13.0 up to 2.14.0
2.14.0
fence-agents
Rocky Linux:9
From an advisory covering 5 CVEs
before 0:4.10.0-110.el9_8.8
0:4.10.0-110.el9_8.8
fence-agents
Rocky Linux:10
From an advisory covering 5 CVEs
before 0:4.16.0-21.el10_2.7
0:4.16.0-21.el10_2.7
pyjwt
Root:PyPI
before 2.13.0+aikido.1
2.13.0+aikido.1
PyJWT
Root:PyPI
before 2.13.0+aikido.1
2.13.0+aikido.1
pyjwt
Ubuntu:Pro:16.04:LTS
before 1.3.0-1ubuntu0.1+esm3, plus listed versions
1.0.0-0ubuntu11.3.0-11.3.0-1ubuntu0.11.3.0-1ubuntu0.1+esm11.3.0-1ubuntu0.1+esm2
1.3.0-1ubuntu0.1+esm3
pyjwt
Ubuntu:Pro:18.04:LTS
before 1.5.3+ds1-1ubuntu0.1+esm3, plus listed versions
1.4.2-1.11.5.3+ds1-11.5.3+ds1-1ubuntu0.11.5.3+ds1-1ubuntu0.1+esm11.5.3+ds1-1ubuntu0.1+esm2
1.5.3+ds1-1ubuntu0.1+esm3
pyjwt
Ubuntu:Pro:20.04:LTS
before 1.7.1-2ubuntu2.1+esm3, plus listed versions
1.7.0-21.7.1-11.7.1-2ubuntu11.7.1-2ubuntu21.7.1-2ubuntu2.11.7.1-2ubuntu2.1+esm11.7.1-2ubuntu2.1+esm2
1.7.1-2ubuntu2.1+esm3
pyjwt
Ubuntu:22.04:LTS
before 2.3.0-1ubuntu0.5, plus listed versions
1.7.1-2ubuntu22.1.0-12.3.0-12.3.0-1ubuntu0.12.3.0-1ubuntu0.22.3.0-1ubuntu0.32.3.0-1ubuntu0.4
2.3.0-1ubuntu0.5
pyjwt
Ubuntu:24.04:LTS
before 2.7.0-1ubuntu0.3, plus listed versions
2.7.0-12.7.0-1ubuntu0.12.7.0-1ubuntu0.2
2.7.0-1ubuntu0.3
pyjwt
Ubuntu:26.10
before 2.13.0-1ubuntu1, plus listed versions
2.10.1-4ubuntu12.12.1-12.13.0-1
2.13.0-1ubuntu1
pyjwt
Ubuntu:26.04:LTS
before 2.10.1-4ubuntu1.2, plus listed versions
2.10.1-22.10.1-32.10.1-3build12.10.1-42.10.1-4ubuntu12.10.1-4ubuntu1.1
2.10.1-4ubuntu1.2
pyjwt
Ubuntu:Pro:16.04:LTS
From an advisory covering 6 CVEs
before 1.3.0-1ubuntu0.1+esm3, plus listed versions
1.0.0-0ubuntu11.3.0-11.3.0-1ubuntu0.11.3.0-1ubuntu0.1+esm11.3.0-1ubuntu0.1+esm2
1.3.0-1ubuntu0.1+esm3
pyjwt
Ubuntu:Pro:18.04:LTS
From an advisory covering 6 CVEs
before 1.5.3+ds1-1ubuntu0.1+esm3, plus listed versions
1.4.2-1.11.5.3+ds1-11.5.3+ds1-1ubuntu0.11.5.3+ds1-1ubuntu0.1+esm11.5.3+ds1-1ubuntu0.1+esm2
1.5.3+ds1-1ubuntu0.1+esm3
pyjwt
Ubuntu:Pro:20.04:LTS
From an advisory covering 6 CVEs
before 1.7.1-2ubuntu2.1+esm3, plus listed versions
1.7.0-21.7.1-11.7.1-2ubuntu11.7.1-2ubuntu21.7.1-2ubuntu2.11.7.1-2ubuntu2.1+esm11.7.1-2ubuntu2.1+esm2
1.7.1-2ubuntu2.1+esm3
pyjwt
Ubuntu:22.04:LTS
From an advisory covering 6 CVEs
before 2.3.0-1ubuntu0.5, plus listed versions
1.7.1-2ubuntu22.1.0-12.3.0-12.3.0-1ubuntu0.12.3.0-1ubuntu0.22.3.0-1ubuntu0.32.3.0-1ubuntu0.4
2.3.0-1ubuntu0.5
pyjwt
Ubuntu:24.04:LTS
From an advisory covering 6 CVEs
before 2.7.0-1ubuntu0.3, plus listed versions
2.7.0-12.7.0-1ubuntu0.12.7.0-1ubuntu0.2
2.7.0-1ubuntu0.3
pyjwt
Ubuntu:26.04:LTS
From an advisory covering 6 CVEs
before 2.10.1-4ubuntu1.2, plus listed versions
2.10.1-22.10.1-32.10.1-3build12.10.1-42.10.1-4ubuntu12.10.1-4ubuntu1.1
2.10.1-4ubuntu1.2
pyjwt
Ubuntu:26.10
From an advisory covering 6 CVEs
before 2.13.0-1ubuntu1, plus listed versions
2.10.1-4ubuntu12.12.1-12.13.0-1
2.13.0-1ubuntu1
python-PyJWT
openSUSE:Tumbleweed
From an advisory covering 9 CVEs
before 2.15.1-1.1
2.15.1-1.1

History

History
RecordedChangedSources
affected, aliases, referencesOSV
affected
affected, aliasesOSV
affected, aliases, referencesOSV
affected, aliases, facts, referencesOSV
affected, aliasesOSV
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-102272 is a high vulnerability (CVSS 7.4) in Jpadilla Pyjwt, published September 28, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.22%, the 12th percentile. Fixed in pyjwt 2.14.0.

References

Show 43 moreShow less
This page doesn't list everything

Left out here: the rest of 3 source descriptions. The JSON record has them.

MoveEnter Open