{"id":"CVE-2026-93868","aliases":[],"url":"https://o3.security/vulnerability/CVE-2026-93868","summary":"Cotonti through 1.0.0 Predictable Password Recovery Token via Weak PRNG","details":"Cotonti through 1.0.0 derives password recovery validation tokens from md5(microtime()) in users.passrecover.php, creating a predictable token space of approximately one million values per second. Unauthenticated attackers can read the server Date header, precompute candidate tokens within a narrow time window, and probe them against the passrecover authentication endpoint to reset any account password including administrators.","published":"2026-09-18T19:56:34.779Z","modified":"2026-09-19T11:45:42.543436888Z","cvss":null,"epss":null,"cisaKev":null,"exploitsKnown":null,"affectedPackages":[],"fix":{"url":"https://github.com/Cotonti/Cotonti/pull/1898","label":"Cotonti/Cotonti#1898"},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/93xxx/CVE-2026-93868.json"},{"type":"PACKAGE","url":"https://github.com/Cotonti/Cotonti"},{"type":"ARTICLE","url":"https://github.com/Cotonti/Cotonti/blob/1.0.0/modules/users/inc/users.passrecover.php"},{"type":"REPORT","url":"https://github.com/Cotonti/Cotonti/issues/1890"},{"type":"FIX","url":"https://github.com/Cotonti/Cotonti/pull/1898"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-93868"},{"type":"ADVISORY","url":"https://www.vulncheck.com/advisories/cotonti-through-1.0.0-predictable-password-recovery-token-via-weak-prng"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-09-19T11:45:42.543436888Z"}}