Summary
CVE-2026-43641 is a critical OS command injection vulnerability (CWE-78) in Softaculous Virtualizor’s admin panel billing-module handler. A mis-scoped authentication guard allows unauthenticated attackers to reach the billing callback handler and inject shell commands through a deserialized billing_data POST parameter, resulting in arbitrary command execution as root on the underlying server. The flaw carries a CVSS v4.0 base score of 9.3 (Critical) and is remotely exploitable without any credentials or user interaction.
Technical details
- Root cause: In
enduser/admin.php, the authentication guard is designed to redirect all requests to the login page unless the action isact=login. Theloginaction itself, however, bypasses authentication entirely and proceeds directly intoupdate_data_for_billing_modules(), exposing the billing hook to unauthenticated callers. - Injection sink: The handler
unserialize()s an attacker-suppliedbilling_dataPOST field and extracts auidvalue, which is concatenated unsanitized into a shell command executed via a helper (vexec()) that invokesscripts/billing_unsuspend.php $uidthrough/bin/sh -c. A crafteduidsuch as"2; id > /tmp/x ; #"executes arbitrary OS commands as root. - Trigger conditions: Exploitation requires an "eligible" target user record in the billing state machine (type 2, in-house billing enabled, with
cur_bal >= usage). Attackers can enumerate eligible accounts via a timing oracle against the unauthenticated endpoint, and a related flaw (CVE-2026-43643) allows unauthenticated manipulation of a tenant’s balance to force eligibility. Exploitation also depends on MySQL running in non-strict mode (the default in the EMPS distribution bundled with Virtualizor). - Attack vector: Network — a single unauthenticated HTTP POST request to the Virtualizor admin panel (default ports 4084/4085) is sufficient.
- Impact: Full compromise of the host as root, including the underlying hypervisor node in virtualization/hosting environments, resulting in complete loss of confidentiality, integrity, and availability.
Affected software
- Softaculous Virtualizor, versions up to and including 3.2.9 Patch 8
- Confirmed vulnerable builds: 3.2.9 Patch 7 and Patch 8
- Fixed in: 3.2.9 Patch 9 (released 2026-09-01) and 3.3.0
Severity
- CVSS v4.0 Base Score: 9.3 (Critical) —
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - Also reported with a CVSS v3.1 Base Score of 9.8 (Critical) —
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Mitigation and recommended actions
- Immediate: Upgrade Virtualizor to 3.2.9 Patch 9 or later (or 3.3.0), which adds
apikey-based authentication to the billing handler, restrictsunserialize()to safe data, and casts/validates integer input before it reaches the shell. - If immediate patching is not possible: Restrict network access to the Virtualizor admin panel (default TCP ports 4084/4085) to trusted management networks or an IP allowlist, and treat any internet-exposed panel on Patch 8 or earlier as remotely exploitable by anonymous attackers.
- Review server and audit logs for unexpected billing-module callback requests and unexplained root-level command execution originating from the Virtualizor panel process.

