CVE-2024-53861: Issuer field partial matches allowed in pyjwt

Published Nov 29, 2024
·
Updated

Summary The wrong string if check is run for iss checking, resulting in "acb" being accepted for "abc".

Details This is a bug introduced in version 2.10.0: checking the "iss" claim changed from isinstance(issuer, list) to isinstance(issuer, Sequence).

diff - if isinstance(issuer, list): + if isinstance(issuer, Sequence): if payload["iss"] not in issuer: raise InvalidIssuerError("Invalid issuer") else:

Since str is a Sequnce, but not a list, in is also used for string comparison. This results in if "abc" not in "abcd": being checked instead of if "abc" != "abc":. PoC Check out the unit tests added here: https://github.com/jpadilla/pyjwt-ghsa-75c5-xw7c-p5pm python issuer = "urn:expected"

payload = {"iss": "urn:"}

token = jwt.encode(payload, "secret")

# decode() succeeds, even though "urn:" != "urn:expected". No exception is raised. with pytest.raises(InvalidIssuerError): jwt.decode(token, "secret", issuer=issuer, algorithms=["HS256"])

Impact

I would say the real world impact is not that high, seeing as the signature still has to match. We should still fix it.

Other sources

pyjwt is a JSON Web Token implementation in Python. An incorrect string comparison is run for iss checking, resulting in "acb" being accepted for "abc". This is a bug introduced in version 2.10.0: checking the "iss" claim changed from isinstance(issuer, list) to isinstance(issuer, Sequence). Since str is a Sequnce, but not a list, in is also used for string comparison. This results in if "abc" not in "abcd": being checked instead of if "abc" != "abc":. Signature checks are still present so real world impact is likely limited to denial of service scenarios. This issue has been patched in version 2.10.1. All users are advised to upgrade. There are no known workarounds for this vulnerability.

NVD

Affected Software

3 affected componentsFixes available
pip/PyJWT=2.10.0
2.10.1
IBM Concert Software<=1.0.0-1.1.0
Pyjwt Project Pyjwt=2.10.0

Event History

Nov 29, 2024
CVE Published
via MITRE·06:43 PM
Data Sourced
via MITRE·06:43 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·07:15 PM
RemedyDescriptionSeverityWeaknessAffected Software
Dec 2, 2024
Advisory Published
via GitHub·06:34 PM
Aug 18, 2025
Data Sourced
via IBM·12:00 AM
DescriptionAffected Software

Parent advisories

This vulnerability appears in the following advisories.

Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is the severity of CVE-2024-53861?

CVE-2024-53861 is classified as a moderate severity vulnerability due to the potential for misinterpretation of JWT claims.

2

How do I fix CVE-2024-53861?

To fix CVE-2024-53861, upgrade PyJWT to version 2.10.1 or later.

3

What versions are affected by CVE-2024-53861?

CVE-2024-53861 affects PyJWT version 2.10.0.

4

What kind of issue is CVE-2024-53861 related to?

CVE-2024-53861 is related to a bug in the string equality check for the 'iss' claim in JWT validations.

5

What is the potential impact of exploiting CVE-2024-53861?

Exploiting CVE-2024-53861 could lead to unauthorized access or acceptance of invalid JWTs.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203