Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessTrigger registration/email-change for target address
-
DeliveryCapture server HTTP Date header
-
ExploitCompute md5(microtime()) candidate tokens offline
-
ExecutionSubmit candidates to users.register.php validate handler
-
ImpactActivate account or confirm unowned email
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 Cotonti instance (through 1.0.0) exposes the registration or email-change validation flow and that the attacker can initiate a token-generating action (registration or email-change) tied to an address they wish to seize. The concrete prerequisite is reconstructing the md5(microtime()) input: the attacker uses the HTTP Date header to fix the whole-second timestamp and must brute-force the sub-second microtime component (roughly one million candidates per targeted second) offline, then replay matching 32-character tokens to the users.register.php validate handler. Limiting factors: the AC:H microsecond-guessing requirement bounds reliability and scale, success depends on timing the request against the server clock, and the only complete fix is upgrading past 1.0.0 to a build containing PR #1905's CSPRNG token generator. |
| Impact | This is a medium-severity authentication-bypass flaw rated CVSS 4.0 6.3 (AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:L/VA:L). The network vector with no privileges or user interaction makes it remotely reachable against any internet-facing Cotonti instance, but AC:H is the decisive limiter: the attacker must correctly guess the microsecond component of microtime() used as md5() input. Because the HTTP Date header reveals the whole-second value, the keyspace collapses to roughly one million candidates per targeted second, which is computable offline but still non-trivial and not reliably automatable at scale. No EPSS score was supplied and the CVE is not on the CISA KEV list; no public exploit was identified at time of analysis - only a VulnCheck advisory and the upstream issue/PR. The vuln.today decision label is 'this_month', not act_now or emergency, which is consistent with a real but non-urgent integrity issue rather than mass-exploited RCE. Net judgment: a genuine, patch-worthy weakness (predictable CSPRNG, CWE-338) with limited blast radius and a guessing cost that argues for scheduled patching rather than crisis response. Note the input vector assigns VA:L (availability), but the described impact - bypassing email-ownership verification to activate accounts or confirm addresses - is an integrity effect; the availability rating is not clearly supported by the description. |
| Exploit ScenarioDerived | An attacker initiates a registration or email-change for an address they do not control, then reads the server's HTTP Date header to learn the whole-second timestamp when the md5(microtime()) validation token was generated. They compute the ~1,000,000 candidate tokens for that second offline and submit them to the users.register.php validate handler until one is accepted, activating the account or confirming the email. No KEV listing and no public exploit code were identified; feasibility is bounded by the AC:H microsecond-guessing requirement. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 03, 2026
Predictable email-ownership verification tokens in Cotonti through 1.0.0 let unauthenticated remote attackers activate accounts or confirm email addresses they do not control. Because tokens are generated as md5(microtime()), an attacker who reads the server's HTTP Date header can pin the whole-second portion of the timestamp, brute-force the sub-second component offline (roughly one million candidates per targeted second), and replay any matching 32-character token to the users.register.php validate handler. Severity is rated CVSS 4.0 6.3 with AC:H reflecting the microsecond-guessing requirement that limits reliability and scale; no public exploit identified at time of analysis, and priority is this_month per vulnerability intelligence scoring.
RemediationAI
Apply the vendor fix delivered in PR #1905 (https://github.com/Cotonti/Cotonti/pull/1905); the input confirms patch availability from the vendor but does not name a tagged release version, so deploy a build after 1.0.0 that contains UsersHelper::newValidationToken() or backport that method and the three call-site replacements (users.functions.php line 97, users.passrecover.php, users.profile.php line 116) yourself, then invalidate and reissue any pending user_lostpass values created under the old md5(microtime()) scheme, since tokens already in flight remain predictable after the code change. If upgrading cannot happen immediately, disable public registration and email-change confirmation in the Cotonti configuration until the patch is in place - this removes the attack surface but blocks new signups and legitimate address changes - and manually review or clear pending activation rows rather than letting users self-validate. Monitor the users.register.php validate handler for bursts of invalid 32-character v parameters from a single source, which is the observable signature of candidate-token replay; note that this detection only catches failed guesses, and that reliable timing of requests against the server clock is the attacker constraint that AC:H in the assessment reflects.
Affected VersionsENISA
Affected Packages
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 a cryptographically weak pseudo-random number generator): the one-time secret stored in the user_lostpass field is produced by md5(microtime()) across several user-module code paths, notably modules/users/inc/users.functions.php (line 97, where the value is set when a user record is created), modules/users/inc/users.profile.php (line 116, email-change confirmation) and the password-recovery flow. microtime() yields a string such as "0.12345600 1700000000" whose entropy is confined to the microsecond fraction and the current second; md5 adds no entropy since it is a deterministic hash of that low-entropy input. Because the second is disclosed by the standard HTTP Date response header (whole-second granularity), the effective search space collapses to the microsecond component - on the order of one million candidate tokens per second, entirely computable offline with commodity hardware, with no server interaction until the final replay. The token length is fixed at 32 hexadecimal characters because user_lostpass is a char(32) column and the validate handlers accept only a v parameter of exactly that length. The vendor fix in PR #1905 introduces UsersHelper::newValidationToken() returning bin2hex(random_bytes(16)) - 128 bits from a CSPRNG, hex-encoded to preserve the 32-character format - and swaps it into users.functions.php, users.passrecover.php and users.profile.php.
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
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N
Remote and unauthenticated (AV:N/PR:N/UI:N) but AC:H because the attacker must guess the microtime() microsecond value; impact is limited to bypassing email verification (I:L), with no confidentiality or availability effect.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Cotonti through 1.0.0 generates registration and email-change validation tokens with md5(microtime()), allowing attackers to bypass email-ownership verification by predicting tokens. Attackers can derive the generation time from the HTTP Date header and compute candidate tokens offline. They then submit these tokens to the users.register.php validate handler to activate accounts or confirm email addresses they do not control.
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.
SQL injection vulnerability in modules/rss/rss.php in Cotonti before 0.9.14 allows remote attackers to execute arbitrary
Cross-site request forgery in Cotonti 1.0.0 (commit f43f1fc3) lets a remote attacker escalate privileges to administrato
PHP object injection in the Cotonti 1.0.0 Comments plugin allows unauthenticated, network-reachable attackers to instant
A vulnerability has been found in Cotonti Siena v0.9.25. Affected by this vulnerability is the file /admin.php?m=config&
Cotonti Siena 0.9.19 contains a stored cross-site scripting vulnerability in the admin configuration panel's site title
A stored cross-site scripting (XSS) vulnerability in the Edit Page function of Cotonti CMS v0.9.24 allows authenticated
Unauthenticated attackers can reset the password of any Cotonti account, including administrator accounts, because passw
Cotonti Siena 0.9.20 allows admins to conduct stored XSS attacks via a direct message (DM). Rated medium severity (CVSS
Cotonti Siena 0.9.20 allows admins to conduct stored XSS attacks via a forum post. Rated medium severity (CVSS 4.8), thi
Cross-site request forgery in Cotonti 1.0.0 (commit f43f1fc3) administration configuration handler allows a remote attac
Cross-Site Request Forgery in the Personal File Storage (PFS) module of Cotonti 1.0.0 (commit f43f1fc3) allows remote at
PHP object injection in Cotonti 1.0.0 allows authenticated users with comment-write permissions to pass attacker-control
EUVD-2026-115898
NVD
CVE.org
GitHub
Exploit-DB