Skip to main content

PHPNuxBill EUVDEUVD-2026-95810

| CVE-2026-108109 CRITICAL
Improper Restriction of Excessive Authentication Attempts (CWE-307)
2026-10-09 VulnCheck GHSA-mph9-7w43-p247
9.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Identify valid customer username
  2. Delivery
    Trigger password-reset to generate OTP
  3. Exploit
    Brute-force 6-digit otp_code without lockout
  4. Execution
    Read new password from HTTP response
  5. Impact
    Hijack customer account

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Brute-force prevention, rate limiting
Exploitation Conditions

Exploitation targets the customer password-reset flow in system/controllers/forgot.php and works against default configurations - no special feature or setting must be enabled. Concrete prerequisites: (1) the attacker must know a valid customer username to initiate the reset, and (2) brute-force guessing of the 6-digit otp_code (roughly one million values) must complete within the OTP's validity window (~600 seconds per the patch's preserved filemtime). The limiting factors are the username requirement and the time-boxed window; no authentication, user interaction, or non-default configuration is needed, and the pre-patch absence of any attempt limit or lockout makes the brute force feasible.

Impact

All exploitability signals point to a genuine high priority. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) describes a network-reachable, low-complexity, unauthenticated flaw with high confidentiality and integrity impact (VC:H/VI:H), consistent with full account takeover, and the description corroborates every metric: unauthenticated attackers brute-force a 6-digit OTP in the password-reset flow with no attempt limits or lockout (CWE-307). The vendor patch and the GitHub commit diff confirm the root cause (missing attempt budget, plus a weak mt_rand OTP and the password echoed in the response), so the technical claim is strongly substantiated. Mitigating factors keep this short of trivial mass-exploitation: the attacker must already know a valid customer username and must complete the brute force within the OTP validity window (the patch preserves an ~600s filemtime window). No EPSS score was provided, and the vulnerability is NOT in CISA KEV; no public exploit code was supplied in the input. Active exploitation is therefore unconfirmed - the high score reflects strong intrinsic exploitability (reported by VulnCheck, vendor-patched) rather than evidence of in-the-wild attacks, and PHPNuxBill's niche footprint limits the realistic blast radius.

Exploit ScenarioDerived

An unauthenticated attacker who knows a target customer's username submits a password-reset request to system/controllers/forgot.php, then repeatedly posts guesses against the 6-digit otp_code at step 2. Because no lockout or attempt limit existed, the attacker brute-forces the ~1,000,000-value space within the reset window and the application returns the newly generated password in the HTTP response, yielding full account takeover. No public exploit code was identified in the provided data, but the attack is scriptable and requires no authentication or user interaction.

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

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

Alert me

AnalysisAIv1 – Oct 09, 2026

Account takeover in PHPNuxBill through 2025.3.20 allows unauthenticated remote attackers who know a valid customer username to brute-force the six-digit otp_code in the customer password-reset flow at system/controllers/forgot.php; because the pre-patch code has no attempt limit or lockout, an attacker can guess the OTP within its roughly 600-second validity window and then read the newly set password from the HTTP response. The vendor has published an upstream fix and advisory, but no public exploit identified at time of analysis, and the independent assessment rates this as a genuine high-priority issue requiring only a known username and default configuration.

RemediationAI

Apply the vendor fix by upgrading PHPNuxBill to a release containing commit c3c2a92d468af91136d747b75142ed72f10320cc or later; upstream fix available (PR/commit); released patched version not independently confirmed. If immediate upgrade is not possible, restrict or temporarily disable the customer password-reset endpoint system/controllers/forgot.php, add a reverse-proxy or WAF rule that rate-limits or blocks repeated POSTs to the reset verification step, and enforce a low attempt budget with lockout for any OTP check; these compensating controls can interfere with legitimate password resets and need exception handling. Monitor for many invalid verification attempts against a single username and for account resets without user initiation.

Affected VersionsENISA

phpnuxbill 0 ≤2025.3.20

Affected Packages

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

PHPNuxBill is a PHP-based hotspot billing and ISP customer management application. The vulnerable component is the customer password-reset controller, system/controllers/forgot.php, where a reset request generates a 6-digit OTP and stores it in a file; the verification step then compares the submitted otp_code without rate limiting, attempt tracking, or lockout. This is CWE-307, Improper Restriction of Excessive Authentication Attempts, and the provided CPE cpe:2.3:a:hotspotbilling:phpnuxbill:*:*:*:*:*:*:*:* covers the affected product line through 2025.3.20. The patch commit c3c2a92d468af91136d747b75142ed72f10320cc changes OTP generation from mt_rand to random_int, stores an attempts_left budget of 5, compares with hash_equals, deletes the OTP after failed attempts, and replaces the weak generated password with Password::_gen; this confirms the root cause was missing anti-automation in the reset verification path.

Know when Phpnuxbill 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.3 CRITICAL
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
vuln.today AI 9.1 CRITICAL

Network, unauthenticated, no interaction; low complexity since there is no lockout and the 6-digit space is brute-forceable in-window; account takeover gives C:H/I:H, no availability impact.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

DescriptionCVE.org

PHPNuxBill through 2025.3.20 contains an account takeover vulnerability in the customer password reset flow in system/controllers/forgot.php that allows unauthenticated attackers to brute-force the 6-digit otp_code. Attackers knowing a customer username can guess the code without attempt limits or lockout, then read the newly set password from the HTTP response to hijack the account.

Technical POC Analysis

The vulnerable file is system/controllers/forgot.php.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

PHPNuxBill (through 2025.3.20) contains a critical account takeover vulnerability that could allow attackers to compromise customer accounts, exposing billing and personal data. No public exploit identified at time of analysis, and Patch available per vendor advisory, but the flaw is easy to exploit with only a known customer username, making immediate remediation essential. Leadership should care because successful attacks can lead to data breaches, regulatory penalties, and loss of customer trust.

Business Impact: Severe
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 69% exploitable
Prevalence
Low
niche open-source ISP/MikroTik hotspot billing app, limited enterprise footprint
Data Quality
5 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 CRITICAL
CISA KEV No
Public POC No
EPSS 0.4%
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
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
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

Attack Technique

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

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