New on LowEndTalk? Please Register and read our Community Rules.
All new Registrations are manually reviewed and approved, so a short delay after registration may occur before your account becomes active.
All new Registrations are manually reviewed and approved, so a short delay after registration may occur before your account becomes active.
URGENT: Virtualizor Compromised (31st AUG)
Jamie_DreamIT
Member, Host Rep
in Security
Virtualizor has been compromised, their BGP hijack a few days ago seems to have a deployed a malicious package.
- RESET/LIMIT ALL API CREDENTIALS IN THE VIRT MASTER PANEL BY IP
- CHECK FOR SUSPICIOUS KEYS AND ENSURE SSH IS LOCKED DOWN
- CHECK IF THIS FILE EXISTS ( /etc/systemd/system/java-jre-update.service )
If you're an affected host, NOC or provider and would want to work together, please DM me, we'll appreciate any assistance here.
Comms are being sent for existing customers, at this stage, we don't see evidence of VPS's being compromised.
Good luck to other providers out there.
Thanked by 10forest Gravely oloke frodothebearer MattBGP JasonM AspireHosting AlbaHost JerryHou zGato
Comments
I stopped using virtualizor many years ago, i don't think anyone should use them commercially
List of our providers that use Virtualizor:
I honestly cannot understand why anyone would even consider using virtualizor in 2026, it is literally paying to disadvantage your business in every conceivable way.
Bad support, bad practices, bad software, a complete and total mess of a UI, terrible UX, supports literally everything but badly in the most limited way possible, multiple security issues and about $3 cheaper than VirtFusion.
Even more crazy when you consider VirtFusion offer migration services.
Since when?
fucking Virtualizor
Fuck
Is there a statement from Virtualizor?
From my quick research providers that have advertised or listed Virtualizor on their site over the last 6 months, pinging for viability.
FYI
@DediRock
@SolidVPS
@SmokyHosts
@hostdare
@xHosts
@Fourplex
@rarecloud
@HostMayo
@hostnamaste
@LittleCreek
@HostSlick
@3K33
Here we go again. . .
Update:
If you're a host that has been compromised, please DM me your Slack email and we can collaborate and work together.
Promox is also being hacked. Check it before you lose all your data.
So Virtualizor themselves haven't confirmed it?
And what were the range(s) that got hijacked?
Can confirm we're not using Proxmox
This may not be true according to our internal reports
Virtualizor is a POS PHP based cesspool. Condolences to those that use it commercially and were affected by this.
More info about this?
Thanks for the heads up @Jamie_DreamIT.
Any more IoCs (Indicators of Compromise) discovered yet? Would be helpful if anyone can share the sha256 hash or what the
java-jre-update.serviceis actually executing/calling (C2 IP / domain / reverse shell).Time to lock down all master/slave nodes and audit systemd units.
I think with all these recent incidents which are rising we need a new topic category called "vulnerability" here on LET to find these posts eaiser.
We can confirm that 5 of our 34 Virtualizor hypervisor nodes contained the same malicious modifications described in this thread. This was a root-level host compromise, not merely unauthorised access to a Virtualizor panel account.
How the compromise was triggered
On the affected nodes, malicious commands had been inserted directly into legitimate Virtualizor files:
/usr/local/virtualizor/_universal.php/usr/local/virtualizor/globals.php/usr/local/virtualizor/zzvirtserviceThe PHP files contained injected
@exec()commands. Thezzvirtservicestartup script contained a similar payload inside itsstartfunction.The injected code performed the following actions as root:
Added an attacker-controlled key to
/root/.ssh/authorized_keys.Installed Java 17 if Java was not already installed.
Downloaded
widdow.jarfrom:https://cdn.nerat.cc/installer/widdow.jarExecuted the JAR as root.
Removed the original
/tmp/widdow.jardownload.Created additional persistence, a systemd service and a local user account.
The normal Virtualizor root cron job executed:
/usr/local/emps/bin/php /usr/local/virtualizor/scripts/virt_check.phpOn one examined node, this ran at
2026-08-29 22:23:01 CEST. In the same second, the malicious root SSH key was created. This strongly indicates that the initial malicious execution occurred through the modified Virtualizor files—not through an SSH login.Timeline from one affected node
22:23:01– Virtualizorvirt_check.phpstarted as root.22:23:01–/root/.ssh/authorized_keyswas created.22:23:11– systemd configuration was reloaded.22:23:29–30– Java 17 and its dependencies were installed through DNF.22:23:34– maliciousjava-jre-update.servicestarted.22:23:35– malware installation marker created.22:24:01– Virtualizorvirt_check.phpcompleted.22:32:30– unauthorised userproxyuserand its home directory were created.22:33:56– successful password SSH login asproxyuserfrom193.32.127.248.2026-08-30 01:49:23– theproxyuserSSH session ended.That unauthorised SSH session remained open for approximately 3 hours and 15 minutes.
There was no logged use of the injected root SSH key on the inspected node. However, the key allowed passwordless root access and must be considered a fully functional backdoor.
Malicious systemd service
Service name:
java-jre-update.serviceDescription:
Java Runtime Environment Update ServiceCommand:
java -Xmx128M -jar /usr/lib/jvm/.cache/jre-runtime.datPayload location:
/usr/lib/jvm/.cache/jre-runtime.datSHA-256:
b81a4e1fab9fc4e404d57224fe71e2c143aa93942bd46998789bdc944a7870c7The service used
Restart=always. On the examined system, the service file had already been removed while systemd still had the old configuration loaded and the Java process remained active.The payload was approximately 13.5 MB.
Network indicator
We captured the Java process maintaining an established connection to:
31.77.220.138:2025The connection disappeared after the malicious Java process was stopped.
SSH key indicator
Attacker public key:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP13pPAm5jmInLQYD3XNb3HwrW4cAKDcphoT4kSKrnteFingerprint:
SHA256:YQmy1hKF1h5cdJLxlZ5EScNoxe/UDWahjsWuQw2ERi8Additional indicators
cdn.nerat.cc/installer/widdow.jar/tmp/widdow.jar/usr/lib/jvm/.cache/jre-runtime.dat/usr/lib/jvm/.cache/.installedjava-jre-update.serviceproxyuser193.32.127.24831.77.220.138:2025/tmp/.vz_svc_doneCurrent impact assessment
We identified these indicators on 5 of our 34 Virtualizor hypervisors. We are continuing to examine every node because the absence of the Java process alone does not prove that a system is clean.
At the time of writing:
proxyusersession means the attacker had interactive access after the automated infection.Actions taken
We have been isolating the affected nodes and have:
proxyuseraccount.Because root access was obtained, simply deleting the identified files cannot establish that an affected host is trustworthy. A clean rebuild is the only reliable long-term remediation.
Customer precautions
We are advising all customers to:
authorized_keysfiles for unfamiliar entries.Quick checks for other Virtualizor operators
Before deleting anything, preserve copies, metadata and hashes for investigation.
Search the Virtualizor installation for the known injection:
Check the service, process, account and connection:
Check the payload hash:
Do not restart Virtualizor or
zzvirtservicebefore checking the files. Restarting an infected startup script may execute the payload again.Virtualizor urgently needs to confirm:
We will provide further information as our investigation continues. Other affected providers are welcome to compare timestamps, hashes, SSH indicators and destination addresses with us privately.
Also since virtualizor pushed updates 1-2 days ago which it was not generally from them, 5 out of 34 total hypervisors were affected by this as those 5 were updated but the rest failed for some reason as checked by cronjob/emails. Seems Virtualizor has no clue on what is going on and keep asking if we are using hetzner or ovh...
EDITED, to include more detaiils.
@virtualizor
@virtualizor
Let me guess, none of the hosts whose nodes were compromised will actually fully reinstall from scratch?
another thing to note, the malware gets that ip from resolving
connect.ne-rat.xyz. I think nerat is a RAT SaaS, there's a panel hosted atweb.ne-rat.xyz, so the malware isn't made specifically for this attack, so I don't think the attacker is very sophisticated.Also this IP 31.77.220.138 is from QWINS LTD and upstream seems to be @dataforest maybe they can isolate that IP at least...
Yeah, CDN is too. I reported both. Looks like the C2 doesn't respond anymore though, so I guess they acted.
I reported the .cc domain too but it's nicenic so they probably won't do shit.
So only servers that got patch 3.2.9.8 got hacked so far?
It would be best if they reinstall, because we never know what the attacker could have done
Not exactly. It appears that the 3.2.9.8 update notification was fake. All five affected servers reported that the update completed successfully, but their installed Virtualizor version remained 3.2.9.7 afterwards.
*8 update was released on 20th August?