🛡️ CVE-2024-51744 — jwt

🟢 CVSS 3.1 — Low ✅ No Known Exploit CWE-347 NVD
3.1
CVSS Score
0 Low4 Medium7 High9 Critical10

Description

Bad documentation of error handling in ParseWithClaims can lead to potentially dangerous situations

Summary

Unclear documentation of the error behavior in ParseWithClaims can lead to situation where users are potentially not checking errors in the way they should be. Especially, if a token is both expired and invalid, the errors returned by ParseWithClaims return both error codes. If users only check for the jwt.ErrTokenExpired using error.Is, they will ignore the embedded jwt.ErrTokenSignatureInvalid and thus potentially accept invalid tokens.

Fix

We have back-ported the error handling logic from the v5 branch to the v4 branch. In this logic, the ParseWithClaims function will immediately return in "dangerous" situations (e.g., an invalid signature), limiting the combined errors only to situations where the signature is valid, but further validation failed (e.g., if the signature is valid, but is expired AND has the wrong audience). This fix is part of the 4.5.1 release.

Workaround

We are aware that this changes the behaviour of an established function and is not 100 % backwards compatible, so updating to 4.5.1 might break your code. In case you cannot update to 4.5.0, please make sure that you are properly checking for all errors ("dangerous" ones first), so that you are not running in the case detailed above.

```Go

token, err := /* jwt.Parse or similar */

if token.Valid {

fmt.Println("You look nice today")

} else if errors.Is(err, jwt.ErrTokenMalformed) {

fmt.Println("That's not even a token")

} else if errors.Is(err, jwt.ErrTokenUnverifiable) {

fmt.Println("We could not verify this token")

} else if errors.Is(err, jwt.ErrTokenSignatureInvalid) {

fmt.Println("This token has an invalid signature")

} else if errors.Is(err, jwt.ErrTokenExpired) || errors.Is(err, jwt.ErrTokenNotValidYet) {

// Token is either expired or not active yet

fmt.Println("Timing is everything")

} else {

fmt.Println("Couldn't handle this token:", err)

}

```

How this vulnerability can be exploited

This issue can be reached over the network, attack complexity is high, an attacker needs no privileges on the target. A user must be tricked into taking some action. The scope is unchanged, so the impact stays within the vulnerable component. Rated impact: confidentiality low, integrity none, availability none.

Weakness class

CVE-2024-51744 is classified as CWE-347: Improper Verification of Cryptographic Signature. A signature is not checked correctly, so forged or modified content is accepted as genuine.

Affected software

CVE-2024-51744 is recorded against 2 packages.

  • github.com/golang-jwt/jwt/v4
  • unknown

Timeline and source

Published on 4 November 2024 and last revised on 4 February 2026. No public exploit is currently recorded for this entry. A vendor advisory or fix has been published. Record sourced from NVD.

References

github.com (Web)
nvd.nist.gov (Advisory)
github.com (Web)
github.com (Package)

CVE-2024-51744 on other distributions

Each distribution ships its own build and its own fixed version. Pick the one you run:

Details

Severity LOW
CVSS Score 3.1
CVSS Vector CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:N/A:N
CWE CWE-347
Public Exploit ✅ No
Source NVD
Published 2024-11-04
Updated 2026-08-20
Modified 2026-02-04

Affected Packages

Software From version Fixed in
github.com/golang-jwt/jwt/v4
unknown

Free Vulnerability Check

Is your site affected by CVE-2024-51744?

BotEraser helps you identify potentially vulnerable plugins and themes by checking your installation against CVE-2024-51744 and other known CVE records.

Scan My Site Free →

No credit card required  ·  Results in minutes

ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.

Browse related advisories

All advisoriesCVECVE 2024