CVE-2024-53861Low· 2.2▾ SunlitPyJWT Issuer field partial matches allowed
▾ Sunlit zone — Low / medium · no exploitation signal
impact 12.1 · likelihood 0.2 · exploitation 0
Need a working PoC? Pro members can cast a request and our team develops one — it lands right here.
Exploit-prediction probability, daily snapshots since Jul 8.
Disclosure to exploitation, from the record and what we observed since indexing it.
Disclosed via OSV
0.8%
0.8% → 0.8%
Last analysed / modified upstream
The wrong string if check 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).
- 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__":.
Check out the unit tests added here: https://github.com/jpadilla/pyjwt-ghsa-75c5-xw7c-p5pm
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"])
I would say the real world impact is not that high, seeing as the signature still has to match. We should still fix it.
pyjwt >= 2.10.0, < 2.10.1Upgrade to a patched release:
pyjwt 2.10.1Connected by shared product, vendor, weakness, or advisory.
CVE-2026-48524Low· 3.7PyJWKClient unbounded JWKS endpoint requests via attacker-controlled kid values (DoS)
CVE-2026-48523Medium· 5.4PyJWT is a JSON Web Token implementation in Python
CVE-2026-48522Medium· 4.2PyJWKClient: missing scheme allowlist enables CVE-2024-21643-class SSRF + token forgery via file://, ftp://, data: schemes
CVE-2026-48525Medium· 5.3PyJWT: Unauthenticated DoS via unbounded Base64URL decoding of unused payload segment in b64=false detached JWS
CVE-2026-48526High· 7.4PyJWT is a JSON Web Token implementation in Python
CVE-2026-32597High· 7.5PyJWT is a JSON Web Token implementation in Python