Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain valid JWT from application
-
DeliveryAppend trailing == padding to Base64url token segments
-
ExploitSubmit modified token in authentication header
-
ExecutionLibrary validates signature successfully
-
PersistDeny-list hash lookup misses padded variant
-
ImpactRevoked session access granted
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V15 - Secure Coding and Architecture Data authenticity verification
|
| Exploitation Conditions | Exploitation requires two conditions to be simultaneously true: (1) the application must implement deny-list-based token revocation or anti-replay protection that compares raw JWT strings or their cryptographic hashes, and (2) the attacker must already possess a valid or formerly valid JWT issued to them. Applications performing only stateless JWT signature verification without a deny list are not vulnerable to this bypass. The vulnerability does not apply to ECDSA-signed JWTs in the sense that those are already malleable for independent reasons unrelated to padding; the padding malleability is most impactful for HMAC (HS256/HS384/HS512) or RSA (RS256, PS256, etc.) signed tokens where developers reasonably assume canonical, non-malleable token representation. The non-default architectural choice of a deny list is the primary limiting factor that scopes the real-world risk. |
| Impact | The CVSS 4.0 score of 2.3 (AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N) accurately reflects a narrow, conditional impact. The AT:P metric is the critical signal: specific attack requirements must be present - the application must implement deny-list-based token revocation or anti-replay protection using raw JWT strings or their hashes. Without this architectural pattern, the malleability is inconsequential. PR:L confirms that an attacker must already hold a valid (or formerly valid) JWT, limiting the threat to insider or post-authentication scenarios. No EPSS score was supplied for this CVE, and it is not listed in CISA KEV; no public exploit code has been identified at time of analysis. The overall real-world risk is low for most deployments and low-to-moderate only for the specific subset of applications that combine joserfc with a token-hash deny list for revocation or replay prevention. The vendor advisory itself acknowledges this conditionality explicitly. |
| Exploit ScenarioDerived | An attacker whose JWT has been added to an application's token revocation deny list (for example, after an admin-initiated logout or session invalidation) resubmits the same token with trailing == padding appended to one or more Base64url-encoded segments. The server passes library-level signature validation, computes a hash of the padded token string, finds no matching entry in the deny list, and grants continued access despite revocation. No public exploit code exists, but the technique requires only basic knowledge of Base64 encoding and is trivially reproducible by any holder of a valid JWT. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 29, 2026
JWT malleability in joserfc versions 1.7.1 and prior allows a low-privileged user holding a valid token to craft alternate byte-distinct representations by exploiting the library's acceptance of non-conforming trailing Base64 padding (==), which violates the JOSE specification. Applications using deny-list-based token revocation or anti-replay protection are at risk of bypass, since a padding-modified token hashes to a different value that will not match the stored revoked-token record. No public exploit code has been identified and this vulnerability is not listed in CISA KEV; the vendor-released fix is joserfc 1.7.2.
RemediationAI
Upgrade joserfc to version 1.7.2, which resolves this issue by rejecting JWTs containing non-conforming trailing Base64 padding, as confirmed by the vendor advisory at https://github.com/authlib/joserfc/security/advisories/GHSA-5jhw-7jv7-qcqq. For deployments unable to upgrade immediately, a compensating control is to normalize JWT strings before computing deny-list lookups: strip any trailing = padding characters from all Base64url-encoded segments before hashing or comparing tokens against the revocation store. This control must be applied consistently at every JWT comparison point in the application - a single unguarded code path is sufficient to reintroduce the bypass. Note that this workaround does not address the inherent ECDSA malleability cited in the advisory; applications relying on ECDSA-signed token non-malleability require architectural changes beyond this fix.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
joserfc (CPE: cpe:2.3:a:authlib:joserfc:*:*:*:*:*:*:*:*) is a Python library implementing JOSE standards - JWS, JWT, JWE, and related specifications - published under the authlib organization on PyPI. The JOSE/JWT specification (RFC 7515, RFC 7519) mandates that Base64url-encoded values MUST omit padding characters (=). By accepting JWTs that include trailing == padding, joserfc violates this canonicalization requirement, producing token malleability: the same logical credential can be encoded in multiple byte-distinct forms, all of which the library considers valid. CWE-345 (Insufficient Verification of Data Authenticity) classifies the root cause - the library does not enforce the canonical encoding form required by the standard before verifying or consuming the token. The advisory further notes that ECDSA-signed JWTs are inherently malleable due to the nature of ECDSA signatures regardless of this bug; the padding malleability is most dangerous for HMAC- and RSA-signed tokens, where non-malleability is otherwise a reasonable security assumption that applications may legitimately rely upon.
Know when Joserfc gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
AC:H captures the non-default deny-list architecture required; PR:L reflects that a valid token must already be held; only integrity bypass applies with no confidentiality or availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
joserfc is a Python library that provides an implementation of several JSON Object Signing and Encryption (JOSE) standards. in versions 1.7.1 and prior, joserfc accepts JWTs with trailing padding (==) which are not conforming to the JOSE specifications. This leads to malleability of the JWTs when consumed by joserfc. Depending on this application this might or not be an issue. This could lead to bypass of token revocation or anti-replay protection when implemented as a deny list of tokens or a deny list of token hashes. Note that ECDSA JWS are always malleable because of the malleability of ECDSA signatures (first test case in the code bellow). This makes a scheme which assumes that JWTs are not malleable brittle. However for other signatures (or MAC) schemes it might make sense to assume non malleability of the token. This issue has been fixed in version 1.7.2.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
joserfc is a Python library that provides an implementation of several JSON Object Signing and Encryption (JOSE) standar
Joserfc versions 1.6.2 and earlier fail to validate the PBES2 iteration count parameter in JWE tokens, allowing unauthen
Resource exhaustion in joserfc (versions 1.3.4-1.6.5) is possible because the RFC7797 unencoded-payload (b64=false) JWS
Authentication bypass in the joserfc Python library before 1.7.4 lets remote, unauthenticated attackers submit a JWS Gen
EUVD-2026-50450
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB