Skip to main content

Cotonti EUVDEUVD-2026-83365

| CVE-2026-93868 CRITICAL
Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG) (CWE-338)
2026-09-18 VulnCheck GHSA-rw92-cwm5-wp25
9.2
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Request password reset for admin
  2. Delivery
    Read server Date header
  3. Exploit
    Precompute md5(microtime()) token candidates
  4. Execution
    Probe tokens against passrecover endpoint
  5. Persist
    Validate matching token
  6. Impact
    Reset admin password and take over account

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Cryptographic PRNG selection
Exploitation Conditions

Exploitation requires that the target account's password-recovery flow be invoked (attacker can trigger it for any account, including admin) and that the attacker can read the server's Date header to bootstrap the microtime() timing window. The limiting factor is timing: the attacker must precompute and probe candidate tokens within the narrow window before the token seed drifts, and must succeed against the ~1M-value/second space (reflected as AC:H/AT:P). No authentication, no user interaction, and no special server configuration are needed - the weak md5(microtime()) token generation is the default behavior in Cotonti through 1.0.0. Any endpoint rate-limiting or short token TTL would further constrain the probing step.

Impact

This is a genuine high-priority flaw, not a CVSS-inflation case. The impact is complete account takeover of any user including administrators via an unauthenticated network path (PR:N/UI:N), which correctly justifies full VC:H/VI:H/VA:H. The tempering factors are real and well-modeled by the vendor's CVSS 4.0 vector: AC:H and AT:P (attack requirements present) reflect that success is not deterministic - the attacker must win a race against a narrow time window, precompute the correct md5(microtime()) candidate, and probe it before the token expires or the window drifts. No EPSS score, no CISA KEV listing, and no public POC were provided, so there is no evidence of active exploitation - the signal here is a credible reported flaw with a vendor patch, reported by VulnCheck, rather than in-the-wild abuse. Net: treat as a priority patch for any Cotonti operator because the impact is total (admin takeover) and unauthenticated, but the low deployment footprint and probabilistic timing requirement mean opportunistic mass exploitation is less likely than targeted attacks against known Cotonti sites.

Exploit ScenarioDerived

An unauthenticated attacker targeting a known Cotonti site issues a password-recovery request for the admin account, then reads the server's HTTP Date header to anchor the microtime() seed. They precompute the ~1 million candidate md5(microtime()) tokens for the relevant second and rapidly probe them against the passrecover endpoint until one validates, allowing them to reset the admin password and seize the account. No public exploit code was identified at time of analysis, though the technique is fully described in the VulnCheck advisory.

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

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

Alert me

AnalysisAIv1 – Sep 18, 2026

Unauthenticated attackers can reset the password of any Cotonti account, including administrator accounts, because password-recovery validation tokens in Cotonti through 1.0.0 are derived from md5(microtime()) rather than a cryptographically secure random source, leaving roughly one million predictable candidate values per second. Exploitation requires the attacker to trigger the recovery flow for a target account, read the server's Date header to bootstrap the microtime() timing window, then precompute and probe candidate tokens against the passrecover endpoint before the seed drifts - a timing-constrained but fully unauthenticated attack (assessed CVSS 3.1 AV:N/AC:H/PR:N/UI:N, C:H/I:H/A:H; CVSS 4.0 base 9.2). No public exploit code or confirmed in-the-wild exploitation was identified at time of analysis; any endpoint rate-limiting or short token lifetime further constrains the probing step, so this is a genuine high-priority flaw rather than a CVSS-inflation case.

RemediationAI

Apply the upstream vendor fix, which replaces the predictable token generator in modules/users/inc/users.passrecover.php with $validationKey = bin2hex(random_bytes(32)) (256 bits of CSPRNG output) and corrects the $validationKey/$validationkey case mismatch that could bypass the empty-value check; the fix is delivered via the vendor's upstream pull request (https://github.com/Cotonti/Cotonti/pull/1898) referenced alongside the issue at https://github.com/Cotonti/Cotonti/issues/1890 and the VulnCheck advisory at https://www.vulncheck.com/advisories/cotonti-through-1.0.0-predictable-password-recovery-token-via-weak-prng - patch availability is confirmed per vendor, but a formally tagged patched release was not independently confirmed from the supplied data, so review the PR or advisory for the applicable distribution before relying on a release package, and backport the one-line change if no tag is yet published. Until the fix is deployed, disable self-service password recovery or restrict the passrecover endpoint to trusted networks (trade-off: administrators lose self-service resets and must reset credentials manually or via CLI), and front the endpoint with strict rate-limiting and short-lived, single-use reset tokens (trade-off: aggressive throttling can lock out legitimate users and does not eliminate the race, only narrows the probing window). Additional compensating controls include monitoring for bursts of failed token validations from a single source, alerting on administrator password-reset events, and forcing credential rotation for privileged accounts on affected instances.

Affected VersionsENISA

Cotonti 0 ≤1.0.0

Affected Packages

euvd cotonti no fix

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

The root cause is CWE-338 (Use of Cryptographically Weak Pseudo-Random Number Generator), specifically the token assignment in modules/users/inc/users.passrecover.php where $validationKey = md5(microtime()). PHP's microtime() returns the current Unix timestamp with microsecond fractional precision, so its output - and therefore the MD5 hash of that output - is drawn from a space of only about 1,000,000 distinct values per second, and the output is directly correlated with server wall-clock time. An attacker who can observe the server's Date response header can approximate that clock, enumerate candidate tokens for a narrow window of seconds, and submit them to the passrecover authentication endpoint until one matches, yielding a valid reset for an arbitrary account. The vulnerable code sits in the users module of the Cotonti PHP CMS and applies to all versions covered by cpe:2.3:a:cotonti:cotonti:* (i.e., the entire tracked release line through 1.0.0). The defect is compounded by a variable-name case bug noted in the upstream fix ($validationkey vs $validationKey), which meant the emptiness check could be bypassed and the weak generator invoked. MD5 itself is not the primary weakness here - the entropy collapse of the input seed is.

Know when Cotonti 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 (VulnCheck) PRIMARY 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
vuln.today AI 8.1 HIGH

Unauthenticated network attack (PR:N/UI:N) but success requires winning a timing race and brute-probing a large token space, so AC:H; admin account takeover yields full C:H/I:H/A:H.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
High
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

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.

Executive ViewAI

Why It Matters

Cotonti deployments at version 1.0.0 and earlier are exposed to a critical, remotely exploitable authentication bypass that can allow an unauthenticated attacker to reset passwords for any account, including administrators. Successful exploitation could give an outsider full control of the affected site, its content, and connected user or customer data, with potential regulatory, financial, and reputational consequences. Leadership should treat any internet-facing Cotonti instance as high risk and prioritize emergency remediation.

Business Impact: Severe
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.6%
Top 52% exploitable
Prevalence
Low
Cotonti is a niche open-source PHP CMS with minimal enterprise footprint
Social Media
4
Sightings
Data Quality
6 sources
Confidence: High

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.6%
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
No
Human Impact
Very High
Technical Impact
Total

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

CVE-2013-4789 HIGH POC
7.5 Aug 09

SQL injection vulnerability in modules/rss/rss.php in Cotonti before 0.9.14 allows remote attackers to execute arbitrary

CVE-2026-55742 CRITICAL
9.4 Jun 18

Cross-site request forgery in Cotonti 1.0.0 (commit f43f1fc3) lets a remote attacker escalate privileges to administrato

CVE-2026-91939 CRITICAL
9.3 Sep 15

PHP object injection in the Cotonti 1.0.0 Comments plugin allows unauthenticated, network-reachable attackers to instant

CVE-2025-44115 MEDIUM POC
5.4 Jun 02

A vulnerability has been found in Cotonti Siena v0.9.25. Affected by this vulnerability is the file /admin.php?m=config&

CVE-2021-47808 MEDIUM POC
5.4 Jan 16

Cotonti Siena 0.9.19 contains a stored cross-site scripting vulnerability in the admin configuration panel's site title

CVE-2024-24115 MEDIUM POC
5.4 Feb 08

A stored cross-site scripting (XSS) vulnerability in the Edit Page function of Cotonti CMS v0.9.24 allows authenticated

CVE-2022-39840 MEDIUM POC
4.8 Sep 05

Cotonti Siena 0.9.20 allows admins to conduct stored XSS attacks via a direct message (DM). Rated medium severity (CVSS

CVE-2022-39839 MEDIUM POC
4.8 Sep 05

Cotonti Siena 0.9.20 allows admins to conduct stored XSS attacks via a forum post. Rated medium severity (CVSS 4.8), thi

CVE-2026-55741 HIGH
8.7 Jun 18

Cross-site request forgery in Cotonti 1.0.0 (commit f43f1fc3) administration configuration handler allows a remote attac

CVE-2026-55744 HIGH
8.6 Jun 18

Cross-Site Request Forgery in the Personal File Storage (PFS) module of Cotonti 1.0.0 (commit f43f1fc3) allows remote at

CVE-2026-93872 HIGH
7.7 Sep 18

PHP object injection in Cotonti 1.0.0 allows authenticated users with comment-write permissions to pass attacker-control

CVE-2026-71294 HIGH
7.6 Aug 05

PHP Object Injection in Cotonti CMS's Comments plugin grants any authenticated member a deserialization primitive reacha

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