Build1 distinct publisher3 min readPublished
Origin validation checks the last AS in the path, so leaving AS24940 there was enough to look legitimate, and the attacker spent the window getting a certificate in Softaculous's name and serving updates from a clone.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
Longest prefix match happens before anything you would call security. A router holding both 162.55.0.0/16 and 162.55.80.0/24 forwards those 256 addresses to the /24, and the /16 is never consulted for them [3][1]. AS path length does not break that tie. Neither does RPKI, because origin validation decides whether a route enters the table, not which route already in the table wins [4].
So the question is why the /24 entered the table at all. Virtualizor's writeup says the announcement kept AS24940, Hetzner, on the path as the apparent origin [4], and Doug Madory's read is that the forged origin made the route RPKI-valid, with a hijack path of 6204 62390 24940 against a legitimate path of just 24940 [5]. Origin validation compares three things against a ROA: the prefix, its length, and the origin ASN [3]. Forging the ASN handles one of them. The length is handled by whoever set maxLength on the ROA covering that space, because a /24 announced with origin 24940 comes out Valid only if that ROA permits prefixes as long as /24 [3]. maxLength is the field operators widen so they never have to reissue a ROA after deaggregating. That is the cost of leaving it wide.
Then the window. 20:57 UTC on 28 August 2026, running just under 33 hours, closes at roughly 05:57 UTC on 30 August [1][6][2]. Inside it, the attacker obtained a TLS certificate in Softaculous's name and stood up a clone site that served malicious Virtualizor updates [7].
The certificate deserves a closer look. Virtualizor's account says only that one was obtained [7]. That does not require a compromised CA. Reachability-based domain validation asks whoever answers at the address the name resolves to, and the attacker held the route to those addresses, which host a number of Softaculous systems, for a day and a half [1][2][5]. Controlling the route was enough to control the name, and controlling the name was enough to get a certificate issued.
The measurable part of this incident ends with the traffic itself. Virtualizor says it cannot tell how many users were affected because it never saw or logged the hijacked traffic, which passed exclusively through the attacker's infrastructure [8]. Virtualizor has not published a victim list. For your own exposure to be zero, one of two things has to hold: your updater made no fetch in that window, or the /24 never entered your transit provider's table. The first is in your egress logs. The second you mostly cannot reconstruct after the fact.
The reach is the reason to care about a hosting panel at all. Virtualizor is what hosting companies use to manage the VPS fleets they rent to customers [10], so a malicious update lands on the control plane for other people's servers. Virtualizor also warns that users who made payments on the site during the attack most likely had financial data stolen, while saying it is unclear the attackers were even after it [9]. The company has not attributed the incident [11].
The condition for this to transfer to your own updater is narrow and checkable. It transfers wherever the client verifies nothing about the payload that the transport has not already asserted. Where that holds, 33 hours of someone else's routing is 33 hours of your code execution [6][7].
Ranked by verification strength, evidence, and original report placement.
Virtualizor states that at approximately 20:57 UTC on 28 August 2026, the network AS62390 (NexonHost) began announcing 162.55.80.0/24 without authorization, routed through the transit provider AS6204 (Zet.net).
162.55.80.0/24 is a portion of Hetzner's address space containing IP addresses for a number of Softaculous systems.
The hijacked announcement was more specific than Hetzner's normal announcement of the surrounding block 162.55.0.0/16, so under standard BGP route selection it took precedence on every network that accepted it.
The hijacked announcement retained AS24940 (Hetzner) on the AS path as the apparent origin.
Doug Madory said in a 1 September 2026 Bluesky post that the hijackers forged the origin to make the route RPKI-valid, giving a hijack AS path of 6204 62390 24940 against a legitimate path of 24940.
The BGP hijack lasted almost 33 hours, from Friday to Sunday of the previous week.
Distinct publishers with included, body-backed reporting in this cluster.
1 article · September 2, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
build
Route leak prevention moves into the protocol, and two Tier-1s are stripping the signal1 distinct publisher
build
The same gigabyte of VPS RAM sells for $0.47 and $58.00 on the same day1 distinct publisher
build
Cross-node pod traffic: routing or encapsulation, and why that choice is a debugging decision1 distinct publisher
build
A missing WHERE clause, 24 databases, and the case for guards over prompts1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Victim's own timeline, one outside reader
The routing specifics are unusually concrete for an incident this fresh — timestamp, announcing AS, transit AS, both prefix lengths — and they are concrete because Virtualizor wrote them and Risky Business reprinted them. The single piece of evidence not sourced to the victim is Doug Madory's path read, which is also the piece that carries the story's central claim about RPKI. No routing archive, no certificate transparency log, no third network confirming what it accepted.
Unmeasurable by the victim's own admission
Nobody can say how far this reached. The hijacked traffic bypassed Virtualizor entirely, so there is no server-side record of who fetched a poisoned update, and our coverage offers no propagation data, no count of hosting providers touched and no downstream VPS figures. Any number put here would be invention.
Told smaller than it is
The restraint runs the other way here. The victim declines to estimate impact, hedges even the payment-theft warning with a note that stealing card data may not have been the point, and names nobody as the attacker. A 33-hour window in which a signed-looking update channel for hosting-control software belonged to someone else is a bigger event than this telling makes it sound — the reason it reads modest is that the only party with the facts has none of the numbers.
Disclosure shaped by the party disclosing
Softaculous is simultaneously the victim, the sole substantive source and the vendor whose customers now have to ask whether they installed the update. Its framing is technically honest and also conveniently exculpatory: the failure lives in internet routing, the certificate came out of a normal issuance process, and no one is named. Risky Business is a subscription newsletter with a sponsor and no stake in the outcome; Madory's contribution is a routing observation, not a defence of anybody.
Solid on how, silent on how much
We would defend the mechanism: forged origin, more-specific /24, certificate obtained inside the window, clone site serving updates. Two things keep this from higher — the ROA and maxLength configuration that allowed a /24 to validate is inferred rather than shown, and nothing about scale is knowable from what has been published. If independent routing data or a certificate transparency entry surfaces, the technical core should survive it unchanged.