Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify administrator email address
-
DeliverySubmit password-reset request to forgotten.php
-
ExploitPredict weak md5(mt_rand()) token (no rate limit)
-
ExecutionComplete reset and set new password
-
ImpactLog in with full admin access
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Cryptographic PRNG selection
|
| Exploitation Conditions | Exploitation requires: (1) knowledge of a valid administrator's email address to seed the reset request; (2) the NivoCart admin password-reset feature (forgotten.php) being reachable, which is default behavior; (3) the attacker predicting or brute-forcing the 10-hex-character recovery code derived from substr(md5(mt_rand()),0,10) - feasible precisely because there is no rate limiting and no token expiration, allowing unlimited guesses and offline PRNG-seed prediction. Limiting factors: token prediction is non-trivial work (reflected as AC:H/AT:P), and the attacker must first obtain a legitimate admin email. No authentication and no user interaction are required (PR:N/UI:N). Applies to NivoCart through version 2.4.0. |
| Impact | This is a genuinely high-severity, unauthenticated administrative account-takeover flaw, not a CVSS-inflated low-risk issue. The vendor CVSS 4.0 vector (9.2, AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H) is internally consistent with the description: exploitation is remote and pre-authentication (PR:N) but carries real complexity (AC:H/AT:P) because the attacker must predict or brute-force the mt_rand()-seeded token - 10 hex chars derived from ~31 bits of PRNG entropy - and must know a valid administrator email. The saving graces the vendor correctly encodes are that this is not a trivial one-shot: token prediction requires effort, which is why AC:H/AT:P are appropriate rather than AC:L. However, the absence of rate limiting and token expiration (stated in the description) materially lowers that barrier, making offline/online brute force practical. No EPSS score, no CISA KEV listing, and no explicit proof-of-concept exploit code are present in the provided data, so this is 'no public exploit identified at time of analysis' - the CWE-338 mechanism is fully documented in the VulnCheck advisory and linked source lines but weaponized code was not supplied. The dominant risk-limiting factor is product prevalence: NivoCart is an obscure open-source shopping cart, so despite the high technical impact this is a targeted-opportunity vulnerability rather than a mass-exploitation candidate. |
| Exploit ScenarioDerived | An attacker who knows or guesses a NivoCart store administrator's email submits a password-reset request to admin/controller/common/forgotten.php, which generates a recovery code via substr(md5(mt_rand()), 0, 10). Because the token derives from a weak, predictable PRNG and there is no rate limiting or expiration, the attacker predicts or brute-forces the recovery code, completes the reset, and logs in with full administrative privileges. No public exploit code was identified in the provided sources, though the vulnerable code paths are published in the VulnCheck advisory and NivoCart GitHub source. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 20, 2026
Administrative account takeover in NivoCart through 2.4.0 is possible because the forgotten.php password-reset flow derives recovery codes from PHP's non-cryptographic mt_rand() and MD5, allowing unauthenticated remote attackers who know a valid administrator email address to predict or brute-force the 10-hex-character token and reset the administrator password. No authentication or user interaction is required per the assessed vectors (PR:N/UI:N), and the absence of rate limiting and token expiration materially lowers the effort; CVE metadata scores this 9.2 under CVSS 4.0 and the independent assessment confirms high severity. No public exploit identified at time of analysis, but the vulnerable code path and affected version are publicly documented.
RemediationAI
No vendor-released patch is identified in the available references; check the NivoCart GitHub issue at https://github.com/nivocart/nivocart/issues/25 and the VulnCheck advisory at https://www.vulncheck.com/advisories/nivocart-through-2.4.0-predictable-administrator-password-reset-token for updated guidance. Until an official fix is available, restrict the admin interface, especially forgotten.php and the password-reset submission endpoint, to trusted IP addresses or VPN-only access, with the trade-off that remote administrators may be locked out. If operationally possible, disable the admin self-service password reset feature entirely, at the cost of losing automated admin recovery. Add strict rate limiting and short expiration windows for password-reset requests at the web server, reverse proxy, or WAF, but note these controls reduce online guessing and may not fully prevent PRNG prediction if enough token samples can be collected. If custom code changes are acceptable, replace mt_rand() and md5() with random_bytes() and hash_hmac(), store tokens hashed with expiration and one-time use, and test admin recovery flows; this creates an unsupported fork and should be superseded by an official vendor patch when released. Monitor admin password-reset and reset-submission logs for anomalous attempts.
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 flaw is classified as CWE-338, Use of Cryptographically Weak Pseudo-Random Number Generator, and affects a PHP-based e-commerce application. NivoCart's admin password-reset controller generates recovery codes with substr(md5(mt_rand()), 0, 10): mt_rand() is a non-cryptographic Mersenne Twister PRNG, and hashing a small integer output with MD5 does not add entropy, leaving a 10-character hexadecimal value with only 40 bits of output and predictable internal state. The CPE cpe:2.3:a:nivocart:nivocart:*:*:*:*:*:*:*:* identifies NivoCart as the affected product, and the public references point to GitHub issue 25 plus the vulnerable forgotten.php and user model code at commit 6ea6600, as well as the VulnCheck advisory. Exploitation is not trivial because the attacker must first obtain a legitimate administrator email and the token prediction reflects AC:H/AT:P in the assessed vector, but the lack of rate limiting and lack of token expiration make repeated guessing and offline PRNG-seed prediction feasible.
Know when Nivocart 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:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Remote and unauthenticated (AV:N/PR:N/UI:N) but AC:H because predicting the mt_rand()-seeded token requires effort; full admin takeover yields C:H/I:H/A:H.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
NivoCart through 2.4.0 contains a predictable password reset token vulnerability in the forgotten.php endpoint that generates recovery codes using substr(md5(mt_rand()), 0, 10). Attackers who know an administrator's email address can request a password reset and predict the token to gain administrative account access without rate limiting or expiration.
Articles & Coverage 1
Executive ViewAI
NivoCart e-commerce deployments running version 2.4.0 or earlier are exposed to a critical flaw in the administrative password-reset flow that allows an unauthenticated outsider who knows an administrator's email address to seize full control of the storefront. Compromise at the administrative level puts customer records, order history, and any payment-adjacent data handled by the platform at risk, and the absence of rate limiting or token expiration makes sustained attempts practical rather than theoretical. With no vendor-released patch identified at the time of analysis, leadership should treat every internet-facing NivoCart instance as an active exposure until interim controls are deployed.
No vendor-released patch identified at time of analysis. Interim mitigations: disable or block external access to the forgotten.php password-reset endpoint; enforce MFA and IP allowlisting for administrator access; apply reverse-proxy or WAF rate limiting and token/lockout controls on password-reset requests; rotate administrator credentials and validate admin account inventories; restrict internet exposure of NivoCart administrative interfaces; enable alerting on password-reset volume, admin login anomalies, and configuration changes; and plan replacement or migration if the vendor does not ship a fix.
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
Authenticated back-office users of NivoCart (through 2.4.0) holding only view-only privileges can upload and execute arb
NivoCart through 2.5.1 allows unauthenticated attackers to retrieve guest order invoices via the account/order download(
NivoCart through 2.5.1 emits the expected CAPTCHA answer directly into the HTML of protected public forms, so unauthenti
Unauthenticated attackers can disable self-service password recovery in NivoCart through 2.4.0 by sending a GET request
EUVD-2026-83727
GHSA-g4x6-pg76-867r
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB