Coop
CVE-2026-63400
LOW
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAcquire victim password and establish session
-
ExploitVictim resets password to recover
-
ExecutionSession not invalidated on reset
-
ImpactRetain compromised account access up to 30 days
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V7 - Session Management Session expiration enforcement
|
| Exploitation Conditions | Exploitation requires that the attacker has already compromised the account out-of-band - specifically, acquired the victim's password AND established an authenticated, database-backed Coop session - BEFORE the legitimate user performs a password reset. The flaw (resetPasswordForToken updating the password row without clearing stored sessions) then causes that pre-existing session to survive the reset. Key limiting factors: it provides no initial access on its own (PR:L, prior compromise mandatory), it only manifests when the victim actually performs the reset recovery action (AT:P), and the surviving session is self-limiting because sessions carry a 30-day maximum age after which access is lost regardless. There is no unauthenticated or default-configuration remote attack path. |
| Impact | This is a genuinely low-priority issue, and the signals are consistent rather than conflicting. The CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:L/UI:N) scores only 2.3, and the vuln.today decision label is 'monitor' - not act_now or emergency. The defining constraint is PR:L combined with AT:P: exploitation is not a standalone network attack but a post-compromise persistence weakness. The attacker must ALREADY hold the victim's password and an established session before the flaw has any value; it then merely lets that pre-existing session outlive the password reset the victim performs to recover. It is not in CISA KEV (not confirmed actively exploited), no EPSS score was supplied, and no public exploit was identified. Impact is bounded - the vendor rated only VC:L (limited confidentiality), with no integrity or availability impact, and the stale session self-expires at the 30-day database max age. In short, this is a correct and legitimate CWE-613 finding, but it is a low-real-risk defense-in-depth gap, not a high-CVSS-but-low-risk inflation case and not a widespread exploitation threat; prioritize it as routine patching. |
| Exploit ScenarioDerived | An attacker who has already phished or otherwise obtained a Coop user's password logs in and establishes a database-backed session. The legitimate user later notices or suspects compromise and resets their password, reasonably expecting this to log the attacker out. Because resetPasswordForToken updates the password row without invalidating existing sessions, the attacker's session keeps working, retaining account control until it naturally expires at the 30-day maximum age. No public exploit was identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
Coop, the open source review and moderation tool from ROOST, fails to invalidate database-backed sessions when a user resets their password, so any session an attacker had already established survives the reset for up to the 30-day session maximum age. The flaw requires a prerequisite compromise - an attacker must already hold the victim's password and have created an authenticated session before the legitimate user completes a reset (PR:L, AT:P), meaning it grants no initial access on its own. It affects versions prior to 1.0.2 and is fixed in 1.0.2; this is a low-severity issue (vendor CVSS 2.3) that only manifests after prior credential compromise and only when the victim performs the reset. No public exploit code is identified at time of analysis, and the priority label is monitor.
RemediationAI
Upgrade to Coop 1.0.2, which contains the fix from PR #778 (commits 15b1fe9, 4a246ac, 1caa9e2 and ab3514f, with the advisory also citing commit f226db0fb7f03096d2a832304ad9614e944e4bf8) that invalidates sessions on password change or reset as part of a single transaction with the password update; details are in https://github.com/roostorg/coop/security/advisories/GHSA-g5xq-67g7-36r2 and https://github.com/roostorg/coop/pull/778. On instances that cannot be upgraded immediately, administrators responding to a suspected credential compromise should treat a password reset as insufficient on its own and directly delete the affected user's rows from the public.session table so any attacker-held session is destroyed, and should review account activity for the remainder of the 30-day session window; the trade-off is that this logs the user out everywhere and any surviving session evidence is lost, so capture session and access records first. Because exploitation presupposes the password was already stolen, the primary prevention remains credential hygiene and prompt rotation after suspected compromise.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
This is a CWE-613 (Insufficient Session Expiration) defect in Coop's server-side GraphQL user data layer. Coop stores user sessions as rows in a PostgreSQL public.session table (managed through Kysely query building), with a 30-day maximum session age. The resetPasswordForToken path, which handles token-based password resets, updated the user's password row but never deleted the corresponding session rows, so pre-existing sessions continued to satisfy authentication after the credential changed. The upstream fix in PR #778 reworks UserAPI so that the password update and session purge occur inside a single Kysely transaction created with makeKyselyTransactionWithRetry, preventing a state in which the password has rotated but the session cleanup failed independently. Notably, the change-password variant deletes all of the user's sessions except the caller's own currentSid, so a user is not logged out of the browser tab from which they are rotating their password. The GraphQL/HTTP front end is network-reachable (AV:N), but the trigger depends on a pre-existing authenticated session and on the victim actually completing a reset, which is why the assessed severity is low and the attack requires special conditions (AT:P).
Know when Coop 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:L/VI:N/VA:N/SC:N/SI:N/SA:N
Attacker already holds credentials and a session so PR:L; no victim-side UI is needed by the attacker (UI:N); impact is limited retained account access (C:L) with no integrity/availability effect per the vendor scope.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
DescriptionCVE.org
Coop is an open source review and moderation tool from ROOST. Prior to 1.0.2, resetPasswordForToken updates the password row without invalidating database-backed sessions. An attacker who has acquired a password and established a session retains access even after the legitimate user resets the password, leaving the compromised account under attacker control until the session expires at its 30-day maximum age. This issue is fixed in version 1.0.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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Affected Products (CPE)CVE.org
Unauthenticated GraphQL queries against Coop deployments earlier than 1.0.0 expose organization records and reviewer ide
Cross-tenant account takeover in ROOST Coop before 1.0.2 stems from the SAML verify callback resolving the authenticated
Unauthenticated organization provisioning through the GraphQL Mutation.createOrg operation in ROOST Coop releases before
Cross-organization IDOR in Coop before 1.0.2 lets an authenticated user who holds MRT queue-edit permission grant or rev
NVD
CVE.org
EPSS
GitHub
Exploit-DB