The Key Was Never on Your Server: Stolen UpdraftCentral Keys Backdoored WordPress Sites, and the First Emergency Patch Deleted Nothing
On 19 October 2026 TeamUpdraft — the company behind UpdraftPlus, which WordPress.org credits with more than four million active installations — published a security notice: over the weekend of 17–18 October it identified unauthorised access to teamupdraft.com. The company believes its customer database was accessed, and it enumerates what that database holds. Names, email addresses, billing addresses, order history. Password hashes. Two-factor settings. And then the line that turns a vendor breach into a fleet compromise:
connection keys for UpdraftCentral, UpdraftVault and UpdraftClone
UpdraftCentral is a remote site-management dashboard, and its client ships inside every copy of UpdraftPlus. A valid connection key lets whoever holds it send signed commands to a connected WordPress site — including plugin.upload_plugin. The attacker did exactly that.
The important property: the key is not yours to lose
The Slovak security firm Nethemba was among the sites hit, and published a running first-hand analysis on 19 October that it has been updating since. Its account of its own compromise is the cleanest statement of the trust model at issue:
On the night of 19 October an attacker at 43.250.53.42 sent plugin.upload_plugin through UpdraftCentral to three of Nethemba’s sites. On two, WordPress installed and activated an unknown plugin; on the third it failed on permissions. All three ran current WordPress 7.1.3 and UpdraftPlus 2.26.11 — patched against CVE-2026-10795, the June authentication bypass in the same channel (CVSS 3.1 8.1, affecting UpdraftPlus up to and including 1.26.4, published to NVD on 11 June 2026 and still marked Deferred). The attacker exploited no server weakness and no misconfiguration. It simply held keys that, as Nethemba puts it, “are generated and kept by the UpdraftCentral Cloud service and have never been on our servers.”
That is the distinguishing feature of this incident and the reason it belongs in the supply-chain column rather than the WordPress-plugin-vulnerability column. There was no vulnerable code on the victim’s site. There was a legitimate management channel, a legitimate signature, and a credential the site owner had no ability to protect because they never possessed it. One affected administrator told Nethemba their site ran Wordfence, Patchstack and Cloudflare, and none of them stopped the validly signed UpdraftCentral command. Correctly so: to a defensive stack, a signed command from the site’s own management service is authorised traffic.
You may hold a key you never decided to create
The exposure question most owners will get wrong is whether they use UpdraftCentral at all. Several administrators who contacted Nethemba say they never turned it on.
Nethemba reports checking the plugin source of versions 2.26.11 and 1.26.13 and finding that when a user logs in to their teamupdraft.com account from inside the plugin — free or premium, on the Premium/Extensions tab — a checkbox reading “Add this website to UpdraftCentral” is ticked by default as long as the site has no key. Installing the plugin alone creates nothing; signing in to an account inside it does. That catches essentially every premium site, because premium users sign in for the licence and updates, plus any free site ever connected to an account.
So the correct test is not “do I use UpdraftCentral” but “does a key exist on this site,” and that is checkable in one command from the WordPress root:
wp option delete updraft_central_localkeys
Or in the dashboard: Settings → UpdraftPlus Backups → Advanced Tools → UpdraftCentral → Manage existing keys. TeamUpdraft’s own instructions add the step people skip — removing the site from the UpdraftCentral dashboard is not sufficient, because the attacker holds the dashboard’s private key. What counts is deleting the key on the site.
The emergency release that deleted no keys
TeamUpdraft’s remediation was to ship a plugin update that revokes pre-incident connection keys automatically, pushed through WordPress.org so site owners would get it without acting. The right instinct. The execution needed two attempts.
Nethemba, which read the code, reports that UpdraftPlus 1.26.12 / 2.26.12, released on 19 October to delete the old keys, “because of a bug it deletes no key at all.” The vendor fixed it the same evening in 1.26.13 / 2.26.13. TeamUpdraft’s own notice now describes 1.26.13 and 2.26.13 as the releases that automatically disconnect every UpdraftCentral connection made before 22:00 BST on 18 October — while an earlier passage on the same page still instructs UpdraftCentral users to update to 1.26.12 or 2.26.12 “or later.” Read the version number, not the sentence: 1.26.13 / 2.26.13 is the floor.
There is a second, narrower gap. Nethemba’s code reading finds that 1.26.13 deletes keys created before 12:07 UTC on 18 October, whereas the vendor’s stated exposure cutoff is 22:00 BST (21:00 UTC) the same day. Keys created in that roughly nine-hour band are considered exposed by the vendor but are not removed by the automatic fix. Those must be deleted by hand. This is the kind of discrepancy that only surfaces when somebody reads the patch instead of the release note, and it is the single most actionable finding in the whole write-up.
What the backdoors did, and how many there were
Nethemba’s own compromise was survivable because the attacker’s first payload was broken: the plugin was meant to create a disguised administrator account and log the attacker in via a secret link, but a coding error made it crash every uncached request, and WordPress emailed about the fatal error. That is how a security firm found an active backdoor “within minutes to hours.” It is not a control anyone should count on.
Working variants followed, and the picture Nethemba assembled from affected administrators across 19–20 October is of an attacker iterating fast on live sites:
- Three variants, many disguises. Of ten further samples sent in by three administrators, all belonged to three known variants — broken, working, and a minimal one — with only the name, description, fake author and secret token changed. Patchstack’s parallel analysis, which Nethemba says confirms and extends its own, counted 99 different backdoor plugin names installed between 18 October 15:32 and 19 October 09:23, and a second attacker address,
2a09:bac5:4e21:2e3c::49b:9. - The quiet variant leaves no database trace. One minimal sample simply logs the attacker in as an existing administrator when called without the
mparameter — creating no user, writing nothing to the database. Detection for that one lives in the web access log, not in the user list. - One variant hides from the plugin list. A sample named “Site Health Cache” conceals itself from the WordPress admin plugin screen, which is why Nethemba’s checking script reads files from disk rather than asking WordPress.
- A crashed site does not mean a failed attack. On two sites belonging to one administrator, working backdoors were active for over three hours before the broken variant crashed things. The crash was the last event, not the first.
- The attacker returned repeatedly. Nethemba logs further commands to all three of its sites through 19 October, the last at 20:27 CEST; on another administrator’s site the attacker deleted its own broken backdoor at 12:22 CEST with
plugin.delete_pluginand uploaded a replacement two seconds later. On 20 October between 11:30 and 12:00 UTC it probed the secret triggers of already-removed backdoors on at least three sites from178.83.37.220,178.83.37.243and178.94.218.31. Nethemba’s blunt corollary: if a backdoor is still on your site, the attacker is actively using it.
Note the sequencing, because it undercuts the usual reassurance that a vendor’s containment ends the incident. Nethemba states that the attacks on its sites started after TeamUpdraft had confirmed the breach and closed the attacker’s access. Stolen keys keep working until the site deletes them. Evicting an intruder from the issuing service does nothing about credentials already copied out of it.
How many sites are in scope
Nobody knows, and the honest range is wide. UpdraftPlus has more than four million active installations, every one of which contains the UpdraftCentral client, but only connected sites — those holding a key — accept the commands. Nethemba points to the vendor’s own estimate during the June CVE-2026-10795 episode that fewer than 10% of users hold an UpdraftCentral or Migrator key, which puts the connected population at roughly 400,000 and no higher. Patchstack’s 99 observed backdoor names across an eighteen-hour window is the only hard number on actual exploitation, and it is a floor on names, not a count of victims.
TeamUpdraft’s own AI claim
In a 21 October update timestamped 10:23 BST, TeamUpdraft published a short list of established facts. Most are what you would expect: access locked down with no evidence the attacker still has it, a compromised key used to reach the site, an external cyber-security firm engaged, the police and the Information Commissioner’s Office notified, the 19 October release revoking connection keys, and an acknowledgement that the attacker used the connection to users’ sites “to create admin accounts, install malicious plugins etc — the extent of that is unknown.” One item is not expected:
The speed of the exploits following the breach combined with the initially faulty backdoor plugins suggest that the hackers used AI to accelerate their attack.
Treat that as what it is: a vendor hypothesis, stated as a suggestion, during an ongoing investigation, with the reasoning shown. And the reasoning is at least coherent — it is the same inference Nethemba’s evidence supports from the other side, where a first payload shipped broken, got iterated into three working variants with rotating names and authors, and was redeployed within two seconds of deleting its own failure. Fast, high-volume, sloppy-then-corrected is the signature.
It is not proof. Nothing published so far demonstrates model involvement, and “the attacker worked quickly and shipped a bug” has described competent human intrusions for thirty years. What is notable is not the claim’s truth value but who is making it: a plugin vendor, mid-incident, now reaching for AI acceleration as the default explanation for tempo. That is a change in how defenders narrate attacks, and it will outlive this particular investigation.
The second WordPress distribution compromise of the same week
UpdraftCentral is not an isolated event. On 16 October Rank Math published a security notice stating that copies of Rank Math PRO 3.0.123 downloaded from rankmath.com, or delivered as updates, between 20:02 UTC on 15 October and 07:12 UTC on 16 October contained malware — roughly eleven hours of poisoned downloads. The clean release is 3.0.124. The free Rank Math SEO plugin on WordPress.org is not named in the notice.
Two details make it a useful contrast. First, the version number does not tell you whether a copy is affected: Rank Math’s changelog dates 3.0.123 to 7 October, more than a week before the window opened, so identical version strings exist in both clean and malicious form — the same provenance problem as the TensorLake npm package that shipped a worm under a valid attestation. Second, the remediation guidance is explicitly order-dependent: Rank Math tells owners to delete the entire rank-math-pro folder (“deactivating the plugin alone is not sufficient”), remove three specific wp_options entries, and block outbound traffic to rank1cdn[.]com before touching anything else, because the malware can rebuild its backdoor on a page visit. Wordfence assigned the incident CVE-2026-111862 at 9.8 and noted on 17 October that installing 3.0.124 replaces the plugin but removes nothing the malware placed elsewhere. Patchstack’s position is the one that generalises: because the attack was on Rank Math’s own systems, “a rule is not possible for mitigation.”
Different mechanisms — one a stolen management key, one a poisoned download — converging on the same conclusion. The WordPress plugin estate has two trusted remote channels into every site, the update channel and the management channel, and in the same week attackers used one of each. Neither is a vulnerability a site owner can patch.
What to do
- Check every UpdraftPlus site for a key, including ones you believe were never connected.
wp option delete updraft_central_localkeys, or Settings → UpdraftPlus → Advanced Tools → UpdraftCentral → Manage existing keys. The “Add this website to UpdraftCentral” checkbox defaults to ticked when you sign in to a teamupdraft.com account inside the plugin, so the key may exist without a decision behind it. - Update to 1.26.13 / 2.26.13 or later — not 1.26.12 / 2.26.12. The .12 release was intended to revoke pre-incident keys and, per Nethemba’s reading of the code, revoked none. Then delete by hand any key created on 18 October between 12:07 and 21:00 UTC, which the automatic revocation does not cover but the vendor considers exposed.
- Hunt on disk and in the access log, not in the admin UI. One variant hides from the plugin list; another creates no user and writes nothing to the database, authenticating the attacker as an existing admin. Check the
mu-pluginsdirectory, enumerate plugin folders from the filesystem, review administrator accounts, and grep access logs for the probing addresses and the truncatedMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36user agent Nethemba recorded. - Treat a crash or a removed backdoor as mid-incident evidence, not as the all-clear. Working backdoors preceded the broken one on at least two documented sites, and the attacker has returned to probe triggers after removal. If a key was live between 17 and 19 October, rotate the site’s administrator passwords, re-authorise remote storage and change storage access keys, as TeamUpdraft itself advises for sites reached through UpdraftCentral.
- Inventory your remote-management channels the way you inventory credentials. The transferable lesson has nothing to do with WordPress: any service that holds a key capable of installing code on your systems is a single compromise away from being your attacker, and your WAF will wave its traffic through because the signature is valid. Enumerate every such channel — backup agents, RMM tools, CI deploy keys, plugin and extension managers, agent platforms with write access — and ask for each one whether you could revoke it from your side, today, without the vendor’s help. The OVHcloud CLI release hijack and the GhostAction credential sweep are the same question asked about distribution and about CI.
- Discount the AI-acceleration framing until someone shows evidence. The vendor has offered an explicit hypothesis with its reasoning, which is more than most do, and the iteration tempo is consistent with it. It is still a hypothesis. Nothing in your remediation changes based on the answer — a signed command from a stolen key is equally fatal whichever intelligence composed the payload.
Verification note: TeamUpdraft’s breach dates, the enumerated database contents including the connection keys, the remediation list, the ICO notification, the 21 October 10:23 BST established-facts update and the quoted AI-acceleration suggestion were read first-hand from the vendor’s own incident page on 21 October 2026, which carries a “last updated 21 October 2026 11:05 BST” stamp and is explicitly described by the vendor as an ongoing investigation. The attack mechanics, the 43.250.53.42 and later probing IP addresses, the three backdoor variants and their hiding behaviour, the default-ticked UpdraftCentral checkbox as verified in the code of versions 2.26.11 and 1.26.13, the finding that 1.26.12 / 2.26.12 deletes no keys, and the 12:07–21:00 UTC revocation gap are attributed throughout to Nethemba’s first-hand analysis as an affected party, read first-hand and not independently reproduced by us. The 99 backdoor plugin names and the second attacker address are attributed to Patchstack as relayed by Nethemba; we did not read Patchstack’s post directly. CVE-2026-10795’s description, CVSS 3.1 base score of 8.1, affected range through 1.26.4, 11 June 2026 publication date and Deferred status come from a direct NVD 2.0 API lookup. Rank Math facts — the 15–16 October download window, version 3.0.123 and 3.0.124, the 7 October changelog date, the three wp_options entries, the rank1cdn domain, the CVE-2026-111862 assignment at 9.8 and the Wordfence and Patchstack positions — are from The Hacker News’ 19 October report, read first-hand, which quotes Rank Math’s own 16 October notice. Install-base figures are WordPress.org’s and the vendor’s; the ~400,000 connected-site estimate derives from the vendor’s own prior “fewer than 10%” statement and is an upper bound, not a victim count. We did not probe, scan or test any third-party site, and the attacker’s identity, motive and use of AI are unestablished. Discovery was via the Brave Search API.
Sources:
- TeamUpdraft — Security incident on teamupdraft.com: what happened, what we’ve done, and what you need to do (19 October 2026, updated 21 October 2026)
- Nethemba — Critical security problem in UpdraftCentral: an attacker holding the service’s keys planted a backdoor on our websites (19 October 2026, continuously updated)
- NVD — CVE-2026-10795 (UpdraftPlus authentication bypass, CVSS 3.1 8.1, affects ≤ 1.26.4)
- The Hacker News — Popular WordPress SEO Plugin Rank Math PRO Hijacked to Deliver Self-Restoring Backdoor (19 October 2026)
- al-ice.ai — Agent Sessions First, Cloud Keys Second: The OVHcloud CLI Release Hijack
- al-ice.ai — Valid Provenance, Poisoned Source: TensorLake 0.5.144 Shipped the Shai-Hulud Worm
- al-ice.ai — GhostAction Opens a Second Front: a Fake Font, a VS Code Trigger, and an OAuth Approval the Victim Never Sees
- al-ice.ai — GitHub Ships a Package Firewall, and Names Coding Agents as Endpoints That Need One