Skip to main content

Cotonti CMS CVE-2026-121553

| EUVDEUVD-2026-115898 MEDIUM
Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG) (CWE-338)
2026-11-03 VulnCheck
6.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Trigger registration/email-change for target address
  2. Delivery
    Capture server HTTP Date header
  3. Exploit
    Compute md5(microtime()) candidate tokens offline
  4. Execution
    Submit candidates to users.register.php validate handler
  5. Impact
    Activate 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available

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

Alert me

AnalysisAIv1 – 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

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 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

Vendor (VulnCheck) PRIMARY 6.3 MEDIUM
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
vuln.today AI 3.7 LOW

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.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

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

Prevalence
Low
niche open-source PHP CMS with a small deployment footprint
Data Quality
4 sources
Confidence: Medium

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 MEDIUM
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
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· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

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

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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-2026-93868 CRITICAL
9.2 Sep 18

Unauthenticated attackers can reset the password of any Cotonti account, including administrator accounts, because passw

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

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