Skip to main content

NivoCart CVE-2026-94107

| EUVDEUVD-2026-83727 CRITICAL
Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG) (CWE-338)
2026-09-20 VulnCheck GHSA-g4x6-pg76-867r
9.2
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Identify administrator email address
  2. Delivery
    Submit password-reset request to forgotten.php
  3. Exploit
    Predict weak md5(mt_rand()) token (no rate limit)
  4. Execution
    Complete reset and set new password
  5. Impact
    Log 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.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
No patch listed yet 0.4% exploitation probability (EPSS)

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

Alert me

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

nivocart 0 ≤2.4.0

Affected Packages

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

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

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.

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

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.

Executive ViewAI

Why It Matters

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.

Business Impact: Severe
Compensating Controls

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

EPSS Score
0.4%
Top 64% exploitable
Prevalence
Rare
Obscure open-source OpenCart-fork shopping cart, negligible enterprise footprint
Social Media
3
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment CIRCL GitHub VulDB

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.4%
Patch available No
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
None
System Exposure· derived
Open
Automatable
No
Human Impact
Very High
Technical Impact
Total

Priority Score

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

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