Skip to main content

joserfc EUVDEUVD-2026-102310

| CVE-2026-102946 CRITICAL
Authentication Bypass by Spoofing (CWE-290)
2026-10-15 GitHub_M
9.1
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Craft JWS General JSON with empty signatures array
  2. Exploit
    Submit token to app using deserialize_json()
  3. Execution
    verify_general_json loop performs no checks, returns success
  4. Impact
    Forged 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.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

joserfc < 1.7.4

Affected Packages

euvd joserfc fix: 1.7.4

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

Vendor (GitHub_M) PRIMARY 9.1 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
vuln.today AI 7.5 HIGH

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.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None

Lifecycle Timeline

2
Patch available
Oct 15, 2026 - 20:03 EUVD
CVE Published
Oct 15, 2026 - 18:28 cve.org
CRITICAL 9.1

DescriptionCVE.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.

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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.1%
Top 98% exploitable
Prevalence
Low
newer niche JOSE library, limited adoption versus PyJWT/python-jose
Data Quality
4 sources
Confidence: Medium

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.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Total

Priority Score

46
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +46
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy