CVE-2026-49852
HighCVSS 8.7Exploitation Probability (EPSS)
Low risk4th percentile - higher than 4% of all known CVEs
Summary
Vulnerability in the joserfc Python library before version 1.6.8 allows an attacker to forge HMAC tokens when the verification key is an empty string or None. The library does not reject zero-length keys, allowing signature verification bypass.
Risk Assessment
An attacker can forge JWT tokens, potentially leading to unauthorized access to systems using this library for authentication.
Recommendation
It is recommended to update the joserfc library to version 1.6.8 or later.
Other vulnerabilities in joserfc
See all- CVE-2026-75509Medium
joserfc, a Python library implementing JOSE standards, prior to version 1.7.3, has a vulnerability in JWTClaimsRegistry that applies membership matching to list-valued iss and sub claims, allowing an array-valued iss containing the expected issuer to pass an intended equality check and enabling issuer-validation bypass.
- CVE-2026-62995Low
The Python library joserfc versions 1.7.1 and earlier accept JWTs with trailing padding (==), which is non-conforming to JOSE specifications. This leads to token malleability, potentially allowing bypass of token revocation or anti-replay protection.
- CVE-2026-48990Medium
The joserfc library in versions 1.3.4 through 1.6.5 accepts oversized JWS payloads without proper length checks, potentially leading to resource exhaustion. This issue has been fixed in version 1.6.7.
Original NVD description (English source)
joserfc is a Python library that provides an implementation of several JSON Object Signing and Encryption (JOSE) standards. Prior to 1.6.8, joserfc.jwt.decode accepts attacker-forged HMAC-signed tokens when the caller-supplied verification key is the empty string or None, because HMACAlgorithm.sign and HMACAlgorithm.verify in src/joserfc/_rfc7518/jws_algs.py pass the output of OctKey.get_op_key(...) to hmac.new(...) and OctKey.import_key in src/joserfc/_rfc7518/oct_key.py only emits a SecurityWarning for keys shorter than 14 bytes without rejecting zero-length input. This issue is fixed in version 1.6.8.

