CVE-2026-102272
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.
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
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 High
CVSS: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 High
CVSS: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
- Package: PyJWT (
pyjwton PyPI) - Repository: https://www.google.com/url?q=https://github.com/jpadilla/pyjwt&source=gmail&ust=1781794518474000&sa=E
- Affected version: 2.13.0
- Vulnerability class: Algorithm confusion / patch bypass
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 High
CVSS: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 High
CVSS: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 High
CVSS: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 High
CVSS: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 High
CVSS: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
- Package: PyJWT (
pyjwton PyPI) - Repository: https://www.google.com/url?q=https://github.com/jpadilla/pyjwt&source=gmail&ust=1781794518474000&sa=E
- Affected version: 2.13.0
- Vulnerability class: Algorithm confusion / patch bypass
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 High
CVSS: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
- Package: PyJWT (
pyjwton PyPI) - Repository: https://www.google.com/url?q=https://github.com/jpadilla/pyjwt&source=gmail&ust=1781794518474000&sa=E
- Affected version: 2.13.0
- Vulnerability class: Algorithm confusion / patch bypass
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 High
CVSS: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 Critical
CVSS: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 Critical
CVSS: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 High
CVSS: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
| Package | Affected | Fixed |
|---|---|---|
pyjwtPyPI |
2.13.0 to 2.13.0 | 2.14.0 |
fence-agents-aliyunAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-agents-allAlmaLinux: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-wsAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-agents-apcAlmaLinux: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-snmpAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-agents-awsAlmaLinux: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-armAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-agents-bladecenterAlmaLinux: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-ucsAlmaLinux: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
| Package | Affected | Fixed |
|---|---|---|
fence-agents-commonAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-agents-computeAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-agents-drac5AlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-agents-gceAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-agents-hpbladeAlmaLinux: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-powervsAlmaLinux: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-vpcAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-agents-ibmbladeAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-agents-ifmibAlmaLinux: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-moonshotAlmaLinux: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-mpAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-agents-kdumpAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-agents-kubevirtAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-agents-lparAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-agents-mpathAlmaLinux: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-ahvAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-agents-openstackAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-agents-redfishAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-agents-rhevmAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-agents-rsaAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-agents-scsiAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-agents-virshAlmaLinux: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-restAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-virtAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-virtd-libvirtAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-virtd-multicastAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-virtd-serialAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
ha-cloud-supportAlmaLinux:9 From an advisory covering 5 CVEs |
before 4.10.0-110.el9_8.8 | 4.10.0-110.el9_8.8 |
fence-agents-aliyunAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-allAlmaLinux: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-wsAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-apcAlmaLinux: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-snmpAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-awsAlmaLinux: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-armAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-bladecenterAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-brocadeAlmaLinux: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-mdsAlmaLinux: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-ucsAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-commonAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-drac5AlmaLinux: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-snmpAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-emersonAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-epsAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-gceAlmaLinux: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-pingAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-hpbladeAlmaLinux: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-powervsAlmaLinux: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-vpcAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-ibmbladeAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-ifmibAlmaLinux: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-moonshotAlmaLinux: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-mpAlmaLinux: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-sshAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-ilo2AlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-intelmodularAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-ipduAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-ipmilanAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-kdumpAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-kubevirtAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-lparAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-mpathAlmaLinux: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-ahvAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-openstackAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-redfishAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-rhevmAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-rsaAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-rsbAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-sbdAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-scsiAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-virshAlmaLinux: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-restAlmaLinux: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-soapAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-wtiAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-agents-zvmAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-virtAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-virtdAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-virtd-cpgAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-virtd-libvirtAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-virtd-multicastAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-virtd-serialAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
fence-virtd-tcpAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
ha-cloud-supportAlmaLinux:10 From an advisory covering 5 CVEs |
before 4.16.0-21.el10_2.7 | 4.16.0-21.el10_2.7 |
python-jwtAzure Linux:3 |
before 2.15.1-1 | 2.15.1-1 |
py3-jwtAlpaquita:25 |
2.10.1-r0 up to 2.15.1-r0 | 2.15.1-r0 |
py3-jwtAlpaquita:stream |
2.8.0-r1 up to 2.15.1-r0 | 2.15.1-r0 |
pyjwtTuxCare: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 |
pyjwtTuxCare: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 |
pyjwtTuxCare: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 |
pyjwtDebian: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 less2.12.1-12.13.0-12.14.0-12.15.0-12.15.1-1 |
None known |
pyjwtDebian: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 |
pyjwtPyPI |
2.13.0 up to 2.14.0 | 2.14.0 |
fence-agentsRocky 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-agentsRocky 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 |
pyjwtRoot:PyPI |
before 2.13.0+aikido.1 | 2.13.0+aikido.1 |
PyJWTRoot:PyPI |
before 2.13.0+aikido.1 | 2.13.0+aikido.1 |
pyjwtUbuntu: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 |
pyjwtUbuntu: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 |
pyjwtUbuntu: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 |
pyjwtUbuntu: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 |
pyjwtUbuntu: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 |
pyjwtUbuntu:26.10 |
before 2.13.0-1ubuntu1, plus listed versions 2.10.1-4ubuntu12.12.1-12.13.0-1 |
2.13.0-1ubuntu1 |
pyjwtUbuntu: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 |
pyjwtUbuntu: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 |
pyjwtUbuntu: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 |
pyjwtUbuntu: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 |
pyjwtUbuntu: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 |
pyjwtUbuntu: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 |
pyjwtUbuntu: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 |
pyjwtUbuntu: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-PyJWTopenSUSE:Tumbleweed From an advisory covering 9 CVEs |
before 2.15.1-1.1 | 2.15.1-1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, aliases, references | OSV | |
| affected | ||
| affected, aliases | OSV | |
| affected, aliases, references | OSV | |
| affected, aliases, facts, references | OSV | |
| affected, aliases | OSV | |
| first indexed | CVE 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
github.com/jpadilla/pyjwt/security/advisories/GHSA-r6x4-923q-g947
github.com/jpadilla/pyjwt/commit/180783930de91876bc0d601f826a1f2956057291
github.com/jpadilla/pyjwt/releases/tag/2.14.0
nvd.nist.gov/vuln/detail/CVE-2026-102272
github.com/advisories/GHSA-r6x4-923q-g947
access.redhat.com/errata/RHSA-2026:94500
Show 43 moreShow less
access.redhat.com/security/cve/CVE-2026-102266
access.redhat.com/security/cve/CVE-2026-102267
access.redhat.com/security/cve/CVE-2026-102268
access.redhat.com/security/cve/CVE-2026-102271
access.redhat.com/security/cve/CVE-2026-102272
bugzilla.redhat.com/2542671
bugzilla.redhat.com/2542685
bugzilla.redhat.com/2542687
bugzilla.redhat.com/2542690
bugzilla.redhat.com/2542695
errata.almalinux.org/9/ALSA-2026-94500.html
access.redhat.com/errata/RHSA-2026:94501
errata.almalinux.org/10/ALSA-2026-94501.html
docs.bell-sw.com/security/cves/CVE-2026-102272
github.com/CVEProject/cvelistV5/tree/main/cves/2026/102xxx/CVE-2026-102272.json
security-tracker.debian.org/tracker/CVE-2026-102272
github.com/jpadilla/pyjwt
pypi.org/project/pyjwt
errata.rockylinux.org/RLSA-2026:94500
bugzilla.redhat.com/show_bug.cgi?id=2542671
bugzilla.redhat.com/show_bug.cgi?id=2542685
bugzilla.redhat.com/show_bug.cgi?id=2542687
bugzilla.redhat.com/show_bug.cgi?id=2542690
bugzilla.redhat.com/show_bug.cgi?id=2542695
errata.rockylinux.org/RLSA-2026:94501
ubuntu.com/security/CVE-2026-102272
cve.org/CVERecord?id=CVE-2026-102272
ubuntu.com/security/notices/USN-8916-2
ubuntu.com/security/notices/USN-8916-1
ubuntu.com/security/CVE-2026-102266
ubuntu.com/security/CVE-2026-102267
ubuntu.com/security/CVE-2026-102268
ubuntu.com/security/CVE-2026-102271
ubuntu.com/security/CVE-2026-102273
suse.com/security/cve/CVE-2026-101917
suse.com/security/cve/CVE-2026-101918
suse.com/security/cve/CVE-2026-102266
suse.com/security/cve/CVE-2026-102268
suse.com/security/cve/CVE-2026-102269
suse.com/security/cve/CVE-2026-102270
suse.com/security/cve/CVE-2026-102272
suse.com/security/cve/CVE-2026-102275
suse.com/security/cve/CVE-2026-103001
Left out here: the rest of 3 source descriptions. The JSON record has them.