CVE-2022-23540: jsonwebtoken vulnerable to signature validation bypass due to insecure default algorithm in jwt.verify()
Overview
In versions <=8.5.1 of jsonwebtoken library, lack of algorithm definition and a falsy secret or key in the jwt.verify() function can lead to signature validation bypass due to defaulting to the none algorithm for signature verification.
Am I affected? You will be affected if all the following are true in the jwt.verify() function: - a token with no signature is received - no algorithms are specified - a falsy (e.g. null, false, undefined) secret or key is passed
How do I fix it? Update to version 9.0.0 which removes the default support for the none algorithm in the jwt.verify() method.
Will the fix impact my users?
There will be no impact, if you update to version 9.0.0 and you don’t need to allow for the none algorithm. If you need 'none' algorithm, you have to explicitly specify that in jwt.verify() options.
Other sources
A flaw was found in the jsonwebtoken library. In affected versions of the jsonwebtoken library, lack of algorithm definition and a falsy secret or key in the jwt.verify() function may lead to signature validation bypass due to defaulting to the none algorithm for signature verification.
Auth0 jsonwebtoken could allow a remote authenticated attacker to bypass security restrictions, caused by an insecure default algorithm flaw in the jwt.verify() function. By sending a specially-crafted request, an attacker could exploit this vulnerability to bypass signature validation.
— IBM
In versions <=8.5.1 of jsonwebtoken library, lack of algorithm definition in the jwt.verify() function can lead to signature validation bypass due to defaulting to the none algorithm for signature verification. Users are affected if you do not specify algorithms in the jwt.verify() function. This issue has been fixed, please update to version 9.0.0 which removes the default support for the none algorithm in the jwt.verify() method. There will be no impact, if you update to version 9.0.0 and you don’t need to allow for the none algorithm. If you need 'none' algorithm, you have to explicitly specify that in jwt.verify() options.
Affected Software
Remediation
Event History
Frequently Asked Questions
What is the severity of CVE-2022-23540?
CVE-2022-23540 has been rated with a high severity level due to the potential for signature validation bypass.
How do I fix CVE-2022-23540?
To fix CVE-2022-23540, upgrade the jsonwebtoken library to version 9.0.0 or later.
Which versions are affected by CVE-2022-23540?
CVE-2022-23540 affects jsonwebtoken versions 8.5.1 and earlier.
What impact does CVE-2022-23540 have on applications?
CVE-2022-23540 can allow attackers to bypass signature verification, compromising the security of applications relying on the jsonwebtoken library.
Which products utilize vulnerable versions related to CVE-2022-23540?
Affected products include Auth0's jsonwebtoken library and IBM's Cognos Analytics versions up to 12.0.2.