Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as an accepted emergency contact
-
ExploitSubmit crafted approve-recovery with own userID and session UUID
-
ExecutionFlip session WAITING→READY and clear wait_till
-
ImpactRetrieve recovery info and complete account takeover
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | Exploitation requires the attacker to already be an emergency contact that the victim previously ADDED AND ACCEPTED - the bug does not grant recovery rights over arbitrary accounts. Given that relationship, the attacker calls POST /emergency-contacts/approve-recovery supplying their own client-controlled userID plus a recovery-session UUID; the pre-fix server authorized on those client-supplied values and updated the row by UUID alone (CWE-639), letting the attacker move the session WAITING→READY, clear wait_till, and bypass the owner-configured notice period to retrieve recovery information. A secondary variant affects the reject/stop transitions: any user who KNOWS another recovery-session UUID could cancel a session they are not party to. Limiting factors: authenticated access as an established, victim-approved contact is mandatory; the attack is inherently targeted to that one relationship; the notice-period bypass only accelerates an already-authorized recovery path rather than creating one; and all vectors are closed in server image 2026.07.09. |
| Impact | Signals point to a moderate, conditional risk rather than a drop-everything emergency. The CVSS 3.1 vector (AV:N/AC:H/PR:L/UI:R) describes a network-reachable but authenticated attack of high complexity: the attacker must already be an accepted emergency contact of the specific victim, which is why PR:L and AC:H apply and why impact is bounded to victims who deliberately onboarded the attacker. Impact is genuinely high once conditions are met (C:H/I:H/A:H - the flaw clears the owner-configured waiting period and yields recovery of an end-to-end-encrypted account, i.e. account takeover). There is no KEV listing and no EPSS score in the provided data, so 'no public exploit identified at time of analysis' applies - the only public code consists of the vendor FIX commits and PRs, which demonstrate the root cause (CWE-639, user-controlled userID/session UUID trusted without ownership checks) but are not weaponized exploit code. The required pre-existing, victim-initiated trust relationship makes this inherently targeted rather than mass-exploitable, further lowering real-world urgency. Note the precondition tension: the input marks UI:R, but the 'user interaction' is really the victim's prior one-time acceptance of the attacker as a contact (a precondition), not interaction during exploitation - verify intent with the vendor advisory GHSA-2hxj-953x-c2vw. EPSS and KEV data are absent and should be checked before final prioritization. |
| Exploit ScenarioDerived | A person the victim previously added and accepted as an emergency contact initiates account recovery, then sends a crafted POST /emergency-contacts/approve-recovery request supplying their own userID and the recovery-session UUID. Because the server authorized on the client-supplied identifiers and updated the session by UUID alone, the attacker transitions the victim's session from WAITING to READY and clears wait_till, skipping the owner-configured notice period and continuing to recover the victim's end-to-end-encrypted account. No weaponized public exploit exists - only the vendor's fix commits are public. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 13, 2026
An authorization bypass in the Ente server (the self-hosted/cloud 'museum' backend) lets an emergency contact who was already added and accepted by a victim call POST /emergency-contacts/approve-recovery with their own client-supplied user ID and a recovery-session UUID, prematurely moving the victim's emergency recovery session from WAITING to READY, clearing the wait_till value, and skipping the owner-configured notice period to retrieve recovery information. The same insufficiently scoped update pattern affects the reject and stop transitions, so any party who merely knows another user's recovery-session UUID could cancel a session they are not part of. Exploitation requires authenticated access as an established, victim-approved emergency contact and does not create recovery rights over arbitrary accounts; there is no confirmed active exploitation and no public exploit identified at time of analysis, though the vulnerability is scored 7.1 and fixed in server image 2026.07.09.
RemediationAI
Upgrade to Ente server image 2026.07.09 or later, which contains the authorization fix; the two fix commits are 1fc4956f90277076559c16dedbfad10cb4d1227b and b3fa9f566466ac3660e276a67621130d684957e7 merged via pull requests 11311 and 11342, and full details are in advisory GHSA-2hxj-953x-c2vw. Self-hosted operators who cannot upgrade immediately should treat the emergency-recovery endpoints as untrusted: restrict access to /emergency-contacts/approve-recovery and the reject/stop routes to trusted networks or a reverse-proxy allowlist and audit emergency_recovery rows for sessions that transitioned from WAITING to READY with an unexpectedly cleared wait_till, understanding that these are compensating controls and not equivalent to the patch. Because the attack requires the victim to have already added and accepted the attacker as an emergency contact, review and prune emergency-contact relationships to remove anyone the account owner no longer recognizes, and notify users that an unexpected recovery-session cancellation could indicate the weak-bounded reject/stop variant. Rotating or disabling existing emergency-recovery sessions after patching closes any session that may have been transitioned by a client-supplied UUID.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is CWE-639 (Authorization Bypass Through User-Controlled Key): the Go backend in Ente's server component trusted client-supplied identifiers instead of deriving ownership from the session record. In the pre-fix code path, the handler compared the request's userID against the caller's authenticated identity and then executed UpdateRecoveryStatusForID using only the client-supplied recovery-session UUID, so the database row was selected and updated by an attacker-controlled key rather than one bound to the requester. The fix introduces ApproveRecoveryForSession, which first loads the row with GetRecoverRowByID and validates that session.UserID and session.EmergencyContactID match the request before performing a scoped UPDATE constrained by id, user_id, emergency_contact_id, and an allowed previous status set. This binds the transition to the true session parties and enforces the WAITING-to-READY state machine, and the accompanying unit test TestApproveRecoveryRejectsSpoofedSessionPartiesBeforeUpdate asserts a spoofed session-parties request returns permission denied while the row remains in WAITING. The underlying technology is the Ente emergency-recovery feature, an end-to-end encrypted account-recovery workflow built on an emergency_recovery table with status and wait_till microsecond timestamps, exposed via Gin HTTP endpoints under /emergency-contacts.
Know when the next one hits your stack
- 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:H/PR:L/UI:R/S:U/C:H/I:H/A:H
Network API with authenticated attacker holding an accepted-contact role (PR:L) and a strong relationship precondition (AC:H); the prior acceptance is a precondition not active interaction, so UI:N; recovery yields full account takeover (C/I/A:H).
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
2DescriptionCVE.org
Ente provides end-to-end encrypted cloud services and security tools. Prior to server image 2026.07.09, the POST /emergency-contacts/approve-recovery endpoint authorized approval using a client-supplied userID and updated an emergency recovery session using only its client-supplied recovery-session UUID. An accepted emergency contact could submit the contact's own identifier, transition the victim's session from WAITING to READY, clear wait_till, retrieve recovery information, and continue account recovery before the owner-configured notice period expired. Exploitation of the approval bypass required the victim to have previously added and accepted the attacker as an emergency contact, and it did not create recovery rights for an arbitrary account. Separately, the same insufficiently scoped update pattern affected the reject and stop recovery transitions, allowing a user who knew another recovery-session UUID to potentially cancel a session to which the user was not a party. This issue is fixed in server image 2026.07.09.
Technical POC Analysis
CWE-639 (Authorization Bypass Through User-Controlled Key) in the emergency-contact recovery flow of the Ente server image (ghcr.io/ente/server, the Go "museum" backend).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
An authorization flaw in the Ente server ('museum' backend) used for self-hosted and cloud deployments allows a party who already holds an established, victim-approved emergency contact relationship to bypass the account owner's configured waiting period and reach recovery information early, or to cancel a recovery session they are not part of. Exposure is limited to accounts whose owners have designated emergency contacts, so the risk is insider-adjacent and narrow rather than a broad, opportunistic compromise vector. Leadership should treat this as a data-protection and user-trust issue for any Ente deployment with emergency recovery enabled, and note that no public exploit was identified at time of analysis.
Apply vendor patch (server image 2026.07.09); until the upgrade is validated and deployed, disable or tightly restrict the emergency recovery feature, alert on approve-recovery/reject/stop transitions, and require owners to re-confirm emergency contact relationships.
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.
EUVD-2026-100469
NVD
CVE.org
EPSS
GitHub
Exploit-DB