GitHub Advisoryadvisory · npm

GHSA-qwph-4952-7xr6 jsonwebtoken vulnerable to signature validation bypass due to insecure default algorithm in jwt.verify()

MEDIUM Published 2022-12-22 Modified 2025-02-13 Official page ↗
Aliases
CVE-2022-23540
Ecosystem
npm
Packages
jsonwebtoken
Severity
Moderate
CVSS vector
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:H/A:L
Weaknesses
CWE-287, CWE-327, CWE-347
Reviewed
2022-12-22

Affected packages

• npm jsonwebtoken: < 9.0.0 → fixed in 9.0.0

Description

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.

Related

Alias · CVE (1)

  • CVE-2022-23540 In versions `<=8.5.1` of `jsonwebtoken` library, lack of algorithm definition in the `jwt.verify()` function can lead to signature… vulnerability

Weakness · CWE (3)

  • CWE-287 Improper Authentication weakness
  • CWE-327 Use of a Broken or Risky Cryptographic Algorithm weakness
  • CWE-347 Improper Verification of Cryptographic Signature weakness

References