Summary
CVE-2026-93868 is a critical vulnerability in Cotonti Siena’s password recovery mechanism, caused by the use of a predictable token-generation function. Because the validation token is derived from md5(microtime()), an unauthenticated attacker can predict or brute-force valid recovery tokens and take over any account, including administrator accounts. The flaw affects Cotonti Siena versions up to and including 1.0.0 and carries a CVSS score of 9.2 (Critical).
Technical details
- Root cause: the password recovery routine in
modules/users/inc/users.passrecover.phpgenerates the validation token with$validationKey = md5(microtime());.microtime()without thetrueparameter is a low-entropy, time-based value, so the resulting MD5 hash yields only on the order of one million possible values per second. - Trigger conditions: an attacker initiates or observes the password recovery flow for a target account and reads the server’s
Dateresponse header to narrow down the timestamp window used to seed the token. - Attack vector: network-based, unauthenticated. The attacker precomputes candidate tokens for the observed time window and submits them against the password recovery validation endpoint until a match resets the target account’s password.
- Impact: full account takeover, including administrator accounts, since the predictable token allows resetting the password of any user without prior credentials.
Affected software
- Cotonti Siena versions up to and including 1.0.0
Severity
- CVSS v4.0 Base Score: 9.2 (Critical) —
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - CVSS v3.1 Base Score: 8.1 (High) —
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Mitigation and recommended actions
- Immediate: apply the fix tracked in the vendor’s pull request (#1898) that replaces the weak token generation with a cryptographically secure random value generator (e.g., PHP’s
random_bytes()), and upgrade to a version of Cotonti Siena beyond 1.0.0 once released. - If no patch is available: disable or restrict access to the password recovery feature until a fix can be applied, monitor for repeated password-recovery validation attempts from the same source, and consider requiring additional out-of-band verification (e.g., manual admin approval) for account password resets.

