Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft JWS General JSON with empty signatures array
-
ExploitSubmit token to app using deserialize_json()
-
Executionverify_general_json loop performs no checks, returns success
-
ImpactForged payload accepted as authentic
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Anti-spoofing controls
MITRE ATT&CK
1 technique across 1 tactic: Defense Evasion The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that the relying application (1) uses joserfc prior to 1.7.4, (2) processes JWS General JSON Serialization input via joserfc.jws.deserialize_json(), and (3) treats a successful deserialization as proof of authenticity. The attacker needs no signing key and no authentication (PR:N). Limiting factors that reduce real-world exposure: the flaw affects ONLY the General JSON Serialization path - compact JWS, JWT decoding, Flattened JSON serialization, and JWE JSON processing are explicitly NOT vulnerable - so applications that only use those APIs are unaffected regardless of version; the application must also accept attacker-controlled serialized JWS and act on the decoded payload. |
| Impact | All available signals point to a genuinely high-priority flaw, with one important scoping caveat. The provided CVSS:3.1 vector (AV:N/AC:L/PR:N/UI:N) describes a network-reachable, trivially-exploitable, unauthenticated condition, which is consistent with the CWE-290 authentication-bypass classification and the root cause: verify_general_json() iterates zero times over an empty signatures array and returns success, so any attacker can forge an 'authenticated' payload with no signing key. This is confirmed by the vendor advisory (GHSA-4pp3-559j-c5c2) and the fix commit. No EPSS score was supplied and the CVE is not in CISA KEV, so there is no evidence of active, widespread exploitation yet - the 9.1 rating reflects potential impact and ease, not observed attacks. The real-world risk is gated by application usage rather than mere installation: it only applies when a relying application calls joserfc.jws.deserialize_json() on attacker-supplied JWS General JSON Serialization and trusts the result. I diverge from NVD on the confidentiality metric: the direct library impact is integrity (a forged payload accepted as authentic); C:H appears to be a downstream/impersonation inference rather than a direct effect - verify with the vendor advisory. |
| Exploit ScenarioDerived | An application uses joserfc < 1.7.4 and calls deserialize_json() to validate JWS General JSON Serialization tokens it receives over the network, trusting a successful return as proof of signature authenticity. An attacker without any key submits a JSON object with an arbitrary payload and an empty "signatures": [] array; the verification loop runs no checks and returns success, so the relying application treats the attacker-chosen payload (e.g. {"user":"admin"}) as authentic. No public in-the-wild exploit is listed, but the fix commit ships a regression test that demonstrates the trivial bypass end-to-end. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 15, 2026
Authentication bypass in the joserfc Python library before 1.7.4 lets remote, unauthenticated attackers submit a JWS General JSON Serialization whose "signatures" array is empty and have joserfc.jws.deserialize_json() accept it as authenticated, so relying applications can be fooled into treating an arbitrary attacker-chosen payload as a signed, trustworthy message. Exposure is scoped: only the General JSON Serialization code path is affected - compact JWS, JWT decoding, Flattened JSON serialization, and JWE JSON processing do not reach the vulnerable logic - but where the vulnerable API is used and its success is treated as proof of authenticity, the integrity impact is high (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N per the independent assessment; the published base score is 9.1). No public exploit code or confirmed active exploitation has been identified at time of analysis; the fix commit, tests, and security advisory are publicly available.
RemediationAI
Upgrade joserfc to 1.7.4 or later - the vendor-released patch that adds the empty-signatures guard and its regression test (release notes: https://github.com/authlib/joserfc/releases/tag/1.7.4; fix commit: https://github.com/authlib/joserfc/commit/f409f8f058225d7686acab6546c94593e4c1bfbe; advisory: https://github.com/authlib/joserfc/security/advisories/GHSA-4pp3-559j-c5c2). If upgrading is not immediately possible, first identify every code path that calls joserfc.jws.deserialize_json() and either (a) migrate those call sites to Compact JWS, JWT decoding, or Flattened JSON serialization, none of which traverse the vulnerable General JSON path - this is the most reliable workaround but requires an input-format change on both signer and verifier; or (b) pre-validate the untrusted JSON before handing it to joserfc and reject any object whose "signatures" member is missing or an empty array, and never treat a successful deserialization with zero verified signatures as authentication - the trade-off is that this shim lives in your application, must be applied to every call site, and is easy to bypass if new call sites are added later. Regardless of mitigation, do not rely on deserialization success alone as proof of authenticity: resolve the key from the protected header via a trusted key allowlist, verify the signature with an explicitly expected key, and validate issuer/audience/expiry claims in the decoded payload.
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 implements JOSE standards including JSON Web Signature (JWS, RFC 7515). JWS defines three serializations: Compact, Flattened JSON, and General JSON. The General JSON Serialization is a JSON object containing a "payload" plus a "signatures" array of one or more signature objects. The vulnerable code in src/joserfc/_rfc7515/json.py parsed that structure and entered a verification loop over the signatures array; when the array was empty the loop performed zero iterations, so no signature check could fail and the function returned success. This is a classic CWE-290 (Authentication Bypass by Spoofing): the absence of a credential is treated as a valid credential. The upstream fix (commit f409f8f058225d7686acab6546c94593e4c1bfbe) adds an explicit guard, if not obj.signatures: return False, plus a regression test asserting that a General JSON object with an empty signatures array raises BadSignatureError. The CPE string cpe:2.3:a:authlib:joserfc:*:*:*:*:*:*:*:* maps the affected package to the Authlib-maintained joserfc project across all versions prior to 1.7.4.
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
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Unauthenticated network-delivered JWS with trivial empty-signatures bypass gives AV:N/AC:L/PR:N; direct impact is forged authentic payloads (I:H) with no inherent confidentiality or availability loss.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
joserfc is a Python library that provides an implementation of several JSON Object Signing and Encryption (JOSE) standards. Prior to 1.7.4, joserfc.jws.deserialize_json() accepts a JWS General JSON Serialization with an empty signatures array as authenticated. The verify_general_json() loop performs no iterations for the empty array and returns success because no signature check failed, allowing an attacker without a signing key to supply an arbitrary payload that relying applications may treat as authentic. The issue affects the General JSON Serialization path; compact JWS and JWT decoding, Flattened JSON serialization, and JWE JSON processing do not follow this vulnerable path. This issue is fixed in version 1.7.4.
Articles & Coverage 2
Technical POC Analysis
The bug class is CWE-290 Authentication Bypass by Spoofing, with related weaknesses CWE-345 Insufficient Verification of Data Authenticity and CWE-347 Improper Verification of Cryptographic Signature.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A critical authentication bypass in the joserfc Python library (versions before 1.7.4) lets a remote, unauthenticated attacker have a JWS General JSON message with an empty signatures array accepted as authentic, so any application that treats that API's success as proof of a valid signature may act on attacker-chosen content. The exposure is limited to the General JSON Serialization code path, but wherever that path is used for authorization decisions, token validation, or message integrity, the trust check itself is defeated. Leadership should treat this as a high-priority integrity risk for any product or internal service built on joserfc, with remediation effort concentrated on identifying and upgrading the specific callers rather than every JWS/JWT use case.
No vendor-released patch identified at time of analysis, so interim mitigations apply: (1) require and enforce a non-empty signatures array plus explicit key verification on any message passed to joserfc.jws.deserialize_json(); (2) block or reject General JSON Serialization input at the API gateway or input-validation layer where that serialization format is not required; (3) avoid using the vulnerable API's success as the sole proof of authenticity for authorization, token validation, or message integrity decisions; (4) monitor and alert on unexpected acceptance of unsigned or empty-signature payloads; (5) upgrade to the fixed upstream release (1.7.4 or later) as soon as it is validated for your environment, since the fix commit and advisory are publicly available. Note: exploitation status per provided context is 'no public exploit identified at time of analysis'; the affected component is unauthenticated per the CVSS vector (PR:N).
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 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
JWT malleability in joserfc versions 1.7.1 and prior allows a low-privileged user holding a valid token to craft alterna
joserfc is a Python library that provides an implementation of several JSON Object Signing and Encryption (JOSE) standar
EUVD-2026-102310
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB