On August 31, 2026, the web hosting and cloud infrastructure industry was rocked by a severe, coordinated supply-chain attack targeting Virtualizor, a widely used PHP-based Virtual Private Server (VPS) control panel. Threat actors successfully compromised the software’s update distribution mechanism, deploying a sophisticated, multi-stage payload that grants attackers persistent, root-level access to bare-metal hypervisors.
Initial telemetry and forensic artifacts gathered from affected hosting providers indicate that the attack vector bypassed traditional web application vulnerabilities entirely. Instead, threat actors leveraged a malicious update package—disguised as a legitimate software patch—to inject arbitrary execution commands directly into core Virtualizor system files. Once executed via automated root-level cron jobs, the payload downloads and installs a Java-based Remote Access Trojan (RAT) linked to a commercial “Malware-as-a-Service” (MaaS) platform known as “nerat.”
This comprehensive threat intelligence report provides a complete technical teardown of the attack chain, detailed Indicators of Compromise (IoCs), an analysis of the threat actor’s infrastructure, and a mandatory, step-by-step incident response playbook for Network Operations Centers (NOCs) and system administrators. If your organization utilizes Virtualizor to manage KVM, OpenVZ, or LXC environments, immediate containment and forensic triage are required.
The Attack Surface: Understanding Virtualizor and Hypervisor Risk
To understand the severity of this breach, one must first understand the architectural role Virtualizor plays within a hosting environment. Virtualizor is a powerful web-based VPS control panel that allows administrators to deploy, manage, and virtualize servers across KVM, Xen, OpenVZ, and LXC environments. It acts as the central nervous system for thousands of boutique and mid-sized hosting providers, bridging the gap between bare-metal hardware, virtualization APIs (like libvirt), and billing platforms such as WHMCS.
Because of this central role, Virtualizor requires extensive privileges. The software routinely interacts with the host operating system’s kernel, manages disk images, manipulates network bridges, and stores highly sensitive credentials—including MySQL database root passwords, SSH private keys for slave nodes, and customer API tokens.
Historically, the security community has scrutinized PHP-based control panels for their reliance on legacy codebases and frequent exposure to web-based vulnerabilities, such as SQL injection, command injection, and authentication bypasses. However, the August 2026 incident represents a paradigm shift. This is not a zero-day exploit targeting a poorly sanitized input field in the web UI. This is a supply-chain interdiction attack. By compromising the trust relationship between the hypervisor and the vendor’s update server, attackers have effectively weaponized the system administrator’s own automation tools against them.
Anatomy of the Attack: The Supply-Chain Vector
The attack was first identified in the early hours of August 31, 2026, when multiple hosting providers reported anomalous behavior on their Virtualizor master and slave nodes. Initial rumors circulating within industry forums suggested a Border Gateway Protocol (BGP) hijack was responsible for intercepting update traffic. BGP hijacking occurs when an attacker falsely announces ownership of IP address prefixes, maliciously rerouting internet traffic to attacker-controlled servers.
However, subsequent forensic analysis by affected providers, including detailed reports from AlbaHost and other tier-1 hosting reps, clarified the true nature of the vector. The compromise was not a transient network interception, but a direct compromise of the update mechanism itself.
The “Phantom Update” Mechanism
Affected servers received an automated push notification for a software update, labeled as version 3.2.9.8. In a legitimate scenario, the Virtualizor cron job would fetch the patch, verify its cryptographic signature, and apply the changes. In this malicious campaign, the update server (or the endpoint serving the update payload) was weaponized.
Intriguingly, forensic logs from compromised nodes revealed a discrepancy: while the system reported that the update to 3.2.9.8 completed successfully, the actual backend version of the Virtualizor software remained at 3.2.9.7. This indicates that the update script did not patch the software; rather, it executed a localized bash/shell payload designed to modify specific PHP files and deploy the secondary malware, leaving the version number untouched to avoid triggering immediate suspicion in the admin dashboard.
This technique mirrors some of the most devastating supply-chain attacks in recent history, such as the SolarWinds Orion compromise or the 3CX desktop app supply-chain attack, where the vendor’s legitimate signing and distribution infrastructure is abused to push malware to a highly privileged user base.
The Execution Chain
The execution chain of this malware is a masterclass in blending in with legitimate system administration tasks. The attackers did not rely on a remote exploit to gain initial access; they relied on the host’s own scheduled tasks to execute the payload with root privileges.
Code Injection into Core Files
The malicious update script injected arbitrary PHP execution commands into core Virtualizor files that are loaded on nearly every page request and system process. Specifically, artifacts were found in:
/usr/local/virtualizor/_universal.php/usr/local/virtualizor/globals.php/usr/local/virtualizor/zzvirtservice
The injected code utilized the PHP @exec() function. The @ symbol in PHP is an error-control operator that suppresses error messages, ensuring that if the execution fails, it does not generate a log entry in the standard PHP error log, thereby evading basic log-monitoring solutions.
Weaponizing the Cron Job
Virtualizor relies heavily on background cron jobs to manage virtual machine states, check licensing, and synchronize master/slave nodes. One such critical cron job executes the following command at regular intervals:
/usr/local/emps/bin/php /usr/local/virtualizor/scripts/virt_check.php
This script runs as the root user. When the compromised _universal.php or globals.php files are invoked during the execution of virt_check.php, the injected @exec() commands are triggered with full root privileges. Forensic timelines from an affected node show the exact sequence of events:
- 22:23:01: Virtualizor
virt_check.phpstarts as root. - 22:23:01: The injected PHP code executes, creating an unauthorized SSH key in
/root/.ssh/authorized_keys. - 22:23:11: Systemd configuration is reloaded.
- 22:23:29: The system package manager (DNF) is invoked to install Java 17 dependencies.
- 22:23:34: The malicious systemd service (
java-jre-update.service) is started. - 22:24:01: The legitimate
virt_check.phpcompletes its run, entirely unaware of the destruction it just facilitated.
By chaining the execution to a legitimate, expected root cron job, the attackers bypassed the need for privilege escalation exploits. The system willingly handed over the keys to the kingdom.
Payload Analysis: The “Widdow” Java RAT & SaaS Cybercrime
Once the initial PHP injection establishes a foothold, the bash payload initiates the download and deployment of the primary Remote Access Trojan (RAT).
Why Java? The Evasion Strategy
The choice to deploy a Java-based RAT (widdow.jar) rather than a traditional compiled ELF binary or a bash reverse shell is a calculated evasion technique. Linux hypervisors are typically protected by Host Intrusion Detection Systems (HIDS) like OSSEC, Wazuh, or commercial EDR solutions. These security tools are heavily optimized to detect anomalous ELF binaries, suspicious shell scripts, and known PHP webshells.
Java applications, however, execute within the Java Virtual Machine (JVM). To a basic file integrity monitor, the payload looks like a generic .jar or .dat file. The actual malicious execution happens within the memory space of the legitimate java process. Furthermore, Java is cross-platform, meaning the exact same payload can be deployed across the diverse array of Linux distributions (AlmaLinux, Ubuntu, Debian, CentOS) that hosting providers utilize for their hypervisors.
The SaaS RAT Infrastructure (nerat)
The malware downloads a file named widdow.jar from the domain cdn.nerat.cc. Once executed, it moves itself to a hidden directory structure designed to look like legitimate Java Runtime Environment cache files: /usr/lib/jvm/.cache/jre-runtime.dat.
Threat intelligence analysis reveals that “nerat” is not a custom, state-sponsored piece of malware. It is a commercial Remote Access Trojan sold as a Software-as-a-Service (SaaS) or Malware-as-a-Service (MaaS) platform. The malware dynamically resolves its Command and Control (C2) server via the domain connect.ne-rat.xyz. Furthermore, the attackers manage their botnet through a web-based dashboard hosted at web.ne-rat.xyz.
This SaaS model drastically lowers the barrier to entry for cybercriminals. The threat actor behind this Virtualizor compromise did not need to possess the skills to write a sophisticated, polymorphic Java RAT. They simply rented access to the nerat infrastructure, pointed it at the Virtualizor update server, and let the automated exploitation do the heavy lifting. This democratization of cybercrime tools is what makes supply-chain attacks increasingly frequent and devastating.
Persistence Mechanisms and Lateral Movement
Gaining root access is only half the battle; maintaining it through server reboots and administrative audits is where the “nerat” payload excels. The attackers implemented a triad of persistence mechanisms to ensure long-term access to the compromised hypervisors.
Systemd Service Hijacking
The malware creates a systemd service file named java-jre-update.service. The naming convention is specifically designed to blend in with routine system maintenance tasks.
[Unit]Description=Java Runtime Environment Update Service[Service]ExecStart=/usr/bin/java -Xmx128M -jar /usr/lib/jvm/.cache/jre-runtime.datRestart=alwaysUser=root[Install]WantedBy=multi-user.target
The Restart=always directive ensures that if a system administrator notices the high CPU usage of the Java process and kills it via kill -9, systemd will immediately respawn the malware within seconds.
SSH Key Injection and Backdoor Accounts
Relying solely on a C2 connection is risky; network firewalls or egress filtering can sever the tie to the attacker. To establish a reliable fallback, the payload injects an attacker-controlled Ed25519 SSH key directly into the root user’s authorized_keys file:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP13pPAm5jmInLQYD3XNb3HwrW4cAKDcphoT4kSKrnte
This grants the attacker passwordless, silent root access via SSH, bypassing any web-based panel logging or two-factor authentication requirements.
Additionally, the attackers created a local system user named proxyuser. Telemetry from a compromised node showed an interactive SSH session originating from IP 193.32.127.248 logging in as proxyuser and remaining active for over three hours. This interactive session allowed the attacker to manually enumerate the system, map the internal network, and potentially pivot to other infrastructure.
The Installation Marker
To prevent the payload from executing multiple times and corrupting the host, the bash script creates a one-time marker file at /tmp/.vz_svc_done and a permanent marker at /usr/lib/jvm/.cache/.installed. The injected PHP code checks for the existence of these files before attempting to download the JAR again, demonstrating a level of operational security (OpSec) designed to minimize network noise.
Comprehensive Master List of Indicators of Compromise (IoCs)
Network Operations Centers (NOCs) and Security Operations Centers (SOCs) must immediately ingest the following IoCs into their firewalls, DNS sinks, SIEMs, and endpoint detection platforms.
Network & Domain Indicators
| Indicator Type | Value | Context / Notes |
|---|---|---|
| C2 IP Address | 31.77.220.138 | Hosted via QWINS LTD / DataForest. Port 2025. |
| Attacker SSH Source | 193.32.127.248 | Source IP for interactive proxyuser login. |
| Malware CDN | cdn.nerat.cc | Hosts the initial widdow.jar payload. |
| C2 Resolution Domain | connect.ne-rat.xyz | Dynamic DNS resolution for the RAT C2. |
| Attacker Web Panel | web.ne-rat.xyz | SaaS dashboard used by the threat actor. |
File System & Hash Indicators
| File Path | Description |
|---|---|
/usr/lib/jvm/.cache/jre-runtime.dat | The active Java RAT payload. |
/tmp/widdow.jar | Temporary download location (usually deleted post-execution). |
/usr/lib/jvm/.cache/.installed | Persistence marker file. |
/tmp/.vz_svc_done | One-time execution marker. |
/usr/local/virtualizor/_universal.php | Check for unauthorized @exec() injections. |
/usr/local/virtualizor/globals.php | Check for unauthorized @exec() injections. |
/usr/local/virtualizor/zzvirtservice | Check for bash injection in the start function. |
Payload SHA-256 Hash:b81a4e1fab9fc4e404d57224fe71e2c143aa93942bd46998789bdc944a7870c7 (Note: Hash may vary if the SaaS RAT generates polymorphic builds per victim).
System & Identity Indicators
- Malicious Systemd Service:
java-jre-update.service - Unauthorized Local User:
proxyuser - Malicious SSH Fingerprint:
SHA256:YQmy1hKF1h5cdJLxlZ5EScNoxe/UDWahjsWuQw2ERi8
Impact Assessment: What This Means for Hosting Providers
The compromise of a hypervisor control panel is a worst-case scenario for any hosting provider. Unlike a standard web server breach, where the damage is contained to a single application, a hypervisor breach threatens the integrity of the entire physical node and every virtual machine residing upon it.
the Threat to VPS Guest Instances
While early reports from providers indicated no immediate evidence of individual customer VPS instances being modified, this should offer zero comfort. With root access to the bare-metal host, the attacker has unrestricted access to the underlying disk images (qcow2, raw, or LVM volumes) of every KVM or OpenVZ container on the node.
An attacker can mount a customer’s virtual disk directly on the compromised hypervisor host, bypassing the guest OS’s authentication mechanisms entirely. This allows them to siphon databases, inject backdoors into customer websites, or deploy ransomware across hundreds of downstream victims simultaneously.
Data Exfiltration and the MySQL Database
The Virtualizor MySQL database is a goldmine of sensitive infrastructure data. It contains the servers_sshkeys table, which stores the private SSH keys used by the master node to communicate with slave nodes. If an attacker exports this database, they instantly gain lateral movement capabilities to every other hypervisor in the provider’s fleet without needing to exploit another vulnerability.
Furthermore, the database contains customer PII, hashed passwords, API tokens for domain registrars, and integration keys for billing systems. At least one affected provider has already reported indications that their MySQL database may have been exported off-site. Under GDPR, CCPA, and other data privacy frameworks, this constitutes a catastrophic reportable data breach.
Loss of Trust and SLA Violations
Because the attackers obtained root-level access, the fundamental trust of the operating system is broken. Simply deleting the identified malicious files cannot establish that an affected host is trustworthy. Rootkits can easily hide secondary payloads in kernel memory, UEFI partitions, or unused disk sectors. The only reliable long-term remediation is a complete, bare-metal wipe and OS rebuild, resulting in massive downtime, Service Level Agreement (SLA) violations, and severe reputational damage.
Incident Response Playbook: Step-by-Step Remediation
If you operate Virtualizor, consider your infrastructure compromised until proven otherwise. Do not wait for an official statement from the vendor. Execute the following incident response playbook immediately.
Triage and Containment
WARNING: Do not simply reboot the server or restart the Virtualizor services. Restarting an infected startup script may trigger secondary logic bombs or wipe forensic evidence.
- Isolate the Node: Null-route the server’s public IP at the upstream switch or firewall level, allowing only your management IP to access SSH.
- Sever C2 Connections: Block outbound traffic to
31.77.220.138and drop all DNS resolution fornerat.ccandne-rat.xyzat the network edge. - Preserve Forensics: Take a full memory dump and raw disk image of the affected node before attempting any remediation. This is critical for law enforcement and post-incident analysis.
Detection and Hunting
Run the following commands across your entire fleet of Virtualizor master and slave nodes to identify compromised systems.
Hunt for Injected PHP Code:
grep -RsnE 'cdn\.nerat\.cc|widdow\.jar|jre-runtime\.dat|AAAAC3NzaC1lZDI1NTE5AAAAIP13pPAm5jmInLQYD3XNb3HwrW4cAKDcphoT4kSKrnte' /usr/local/virtualizor /etc/systemd/system /root/.ssh 2>/dev/null
Hunt for the Systemd Service and Processes:
systemctl status java-jre-update.service --no-pagerpgrep -af 'java|jre-runtime|widdow'
Hunt for the Backdoor User and Network Connections:
getent passwd proxyuserss -tpna | grep -E '31\.77\.220\.138|:2025'
Verify the Payload Hash:
sha256sum /usr/lib/jvm/.cache/jre-runtime.dat 2>/dev/null
Eradication and The Hard Truth
If any of the above commands return a positive result, the node is compromised.
Do not attempt to “clean” the server. Removing the java-jre-update.service and deleting the .dat file does not guarantee the removal of kernel-level rootkits, modified SSH binaries, or hidden cron jobs. The industry consensus among top-tier hosting providers and security researchers is absolute: A clean, bare-metal rebuild is the only reliable remediation.
For nodes that show no signs of infection, you must still execute the following hardening steps:
- Revoke and Rotate All API Keys: Reset all API credentials in the Virtualizor Master Panel. Restrict API access strictly by IP whitelisting.
- Audit SSH Keys: Manually inspect
/root/.ssh/authorized_keyson every node. Remove any unrecognized Ed25519 or RSA keys. - Lock Down SSH: Disable password authentication entirely. Force all administrative access through a centralized, multi-factor authenticated bastion host.
- Database Password Rotation: Assume the MySQL root password stored in
/usr/local/virtualizor/universal.phpis compromised. Change the MySQL root password and update the Virtualizor configuration immediately.
The Paradigm Shift: Moving Away from Legacy Panels
The August 2026 Virtualizor compromise has ignited a firestorm of frustration within the web hosting community, accelerating a paradigm shift away from legacy, PHP-based control panels.
For years, system administrators have debated the merits of Virtualizor versus modern alternatives like VirtFusion or Proxmox VE. Virtualizor has historically competed on price, offering a highly affordable, feature-dense solution for boutique hosts. However, as pointed out by industry veterans during this crisis, the cost savings are rapidly eclipsed by the technical debt, poor UX, and severe security liabilities inherent in managing bare-metal hypervisors via a PHP web application.
Modern infrastructure demands API-driven, immutable architectures. Platforms like VirtFusion utilize modern development frameworks, enforce strict separation of concerns, and offer seamless migration services for providers looking to abandon compromised ecosystems. Proxmox VE, an open-source powerhouse, relies on native Linux kernel integrations and robust, audited codebases rather than third-party PHP wrappers.
This incident serves as a grim reminder that in the cloud infrastructure space, the control plane is just as critical as the data plane. Hosting providers must evaluate their software supply chain with the same rigor they apply to their physical data center security. Relying on legacy software that requires root-level PHP execution via cron jobs is an unacceptable risk in the modern threat landscape.
Conclusion
The August 31, 2026, Virtualizor supply-chain attack is a watershed moment for the hosting industry. It demonstrates that threat actors are no longer content with picking the lock on a single web server; they are poisoning the well, compromising the very tools that administrators use to build and maintain the internet’s infrastructure.
The use of a SaaS-based Java RAT highlights the commoditization of advanced persistent threats, allowing low-skill actors to execute high-impact, root-level breaches. For hosting providers, the mandate is clear: Audit your automation, isolate your hypervisors, and prepare for the painful but necessary process of bare-metal remediation.
As the forensic investigation continues and Virtualizor’s developers are pressed for transparency regarding the compromise of their update servers, the hosting community must unite, share threat intelligence, and fundamentally rethink how virtualization infrastructure is managed in an era of relentless supply-chain warfare.
Frequently Asked Questions (FAQ)
Q: Were the actual VPS instances (customer VMs) hacked in this Virtualizor breach?
Currently, there is no confirmed evidence that the guest VPS instances were directly modified by the automated script. However, because the attackers gained root access to the bare-metal hypervisor, they possess the technical capability to mount, read, and modify the underlying virtual disk images of every VPS on the compromised node. Customers should treat their data as potentially exposed.
Q: Can I just delete the malicious Java file and restart the server?
A: No. Deleting /usr/lib/jvm/.cache/jre-runtime.dat removes the visible payload, but it does not remove the SSH backdoors, the modified PHP core files, or potential kernel-level rootkits that may have been deployed during the 3+ hour interactive SSH session. A full OS reinstall is the only way to guarantee the server is clean.
Q: How did the attackers bypass the Virtualizor update verification?
A: The attackers likely compromised the vendor’s update server directly or utilized a sophisticated Man-in-the-Middle (MitM) technique to serve a malicious script disguised as the 3.2.9.8 update. The script manipulated local files without actually updating the software version number, effectively hiding the breach from the admin dashboard.
Q: What is the “nerat” RAT and should my firewall block it?
A: “nerat” is a commercial, SaaS-based Remote Access Trojan that attackers rent to control botnets. It relies on domains like connect.ne-rat.xyz and cdn.nerat.cc. Network administrators should immediately sinkhole these domains and block associated IP ranges (such as those owned by QWINS LTD) at the edge firewall.
Q: Are other control panels like SolusVM or Proxmox affected by this specific attack?
A: No. This specific supply-chain attack targeted the proprietary update mechanisms and file structures unique to Virtualizor. However, all hosting providers should use this incident as a catalyst to audit the update security, API key management, and SSH hardening of their respective control panels.
Q: What should I tell my customers who are asking about the breach?
A: Transparency is vital. Inform your customers that a vulnerability in a third-party management software resulted in unauthorized access to the host node. Advise them to immediately rotate all passwords, SSH keys, and database credentials associated with their VPS, and to review their application logs for any signs of unauthorized access.
This post first appeared at - The CyberSec Guru