On October 17-18, 2026, someone got into teamupdraft.com, the account site for the UpdraftPlus WordPress backup plugin, and TeamUpdraft believes they reached a customer database that included UpdraftCentral connection keys. Within about a day, Patchstack saw an attacker using valid keys to send signed remote commands that installed backdoor plugins on connected WordPress sites. This UpdraftCentral breach is a stolen-credential incident: the commands were legitimate, the keys were the problem.
This post covers the mechanism, the timeline, who is affected, and the cleanup. It also covers a point the first patch did not: updating the plugin revokes old keys but does not remove what was already planted. It belongs to the same month as other credential-centred incidents in our October 2026 attacks timeline.
TL;DR
| Question | Answer |
|---|---|
| What was stolen? | Per TeamUpdraft: customer data believed accessed, including hashed passwords, 2FA settings and UpdraftCentral, UpdraftVault and UpdraftClone keys |
| Is it a plugin bug? | No. Patchstack: "not a vulnerability in UpdraftPlus." No CVE for this campaign |
| How were sites hit? | Signed plugin.upload_plugin commands over UpdraftCentral |
| How many backdoors? | At least 99 distinct plugin names (Patchstack) |
| Does updating fix it? | Update to 1.26.13 (free) or 2.26.13 (Premium) to revoke old keys. It does not remove planted plugins or users |
| Who needs to act? | Anyone with a cloud UpdraftCentral key. Free UpdraftPlus users with no teamupdraft.com account: just keep updated (TeamUpdraft) |
| How many sites were compromised? | Not disclosed |
What did the attacker actually do?
UpdraftCentral is a remote management service that lets one dashboard control many WordPress sites. A client component ships inside every copy of UpdraftPlus (The Hacker News). A site is paired to the dashboard with a connection key, and commands from the dashboard are signed.
With valid keys, the attacker did not need an exploit. Patchstack observed signed plugin.upload_plugin commands sent to the site root as ordinary POST requests; WordPress then installed and activated the uploaded plugin through its normal installer. TeamUpdraft's own account is that the attacker "used a compromised key" and then used the connection to create admin accounts and install malicious plugins.
According to Patchstack, the keys do not expire: keys issued in November 2025 still worked in October 2026. A credential with no expiry is the detail that turned one database read into a fleet-wide problem.
What the backdoor plugins do
Per BleepingComputer, citing Nethemba's analysis (the Slovak pen-testing firm that first detected the attack):
- The plugin hooks every request and checks for a secret URL parameter. A match creates a user with the Editor role and grants it
manage_optionsandinstall_plugins. - That account survives removal of the plugin, so deleting the plugin alone does not end access.
- An early variant had a coding error that returned HTTP 500 errors. Per Nethemba (via BleepingComputer), the attacker removed it and uploaded a working version. Patchstack warns not to repair such a plugin, because fixing the error switches the backdoor on. Remove it.
- Names were disguised as maintenance tools, for example "Site Health Cache." Patchstack counted 99 distinct names.
TeamUpdraft says it suspects AI was used to speed up the attack, based on the pace of exploitation and the initially faulty plugins. That is the vendor's inference, not a confirmed finding.
Timeline
Times differ by source (BST from TeamUpdraft, UTC from Patchstack), so treat them as approximate.
| When | Event | Source |
|---|---|---|
| Oct 17-18 | Unauthorized access to teamupdraft.com identified; access route closed, all accounts signed out | TeamUpdraft |
| Oct 18, 15:32 UTC | First backdoor installation Patchstack observed | Patchstack |
| Oct 18-19 | Campaign runs about 18 hours; last install observed Oct 19, 09:23 UTC | Patchstack |
| Oct 19 | UpdraftPlus 1.26.12 / 2.26.12 released; The Hacker News reports a bug stopped it removing the cloud keys | The Hacker News |
| Oct 19, late evening BST | 1.26.13 / 2.26.13 released, revoking older UpdraftCentral connections | TeamUpdraft |
| Oct 21 | TeamUpdraft update: attacker used a compromised key; police and an external security firm involved | TeamUpdraft |
One detail does not line up between sources. TeamUpdraft's page gives a revocation cutoff of 13:07 BST on October 18, while a BleepingComputer-linked summary says connections made before 10 p.m. BST that day. We could not reconcile them. The first install Patchstack saw (15:32 UTC) is after the earlier cutoff, so check which one applies to you by confirming the key is gone, not by trusting the cutoff.
Who is affected?
- Cloud UpdraftCentral users: treat every connected site as potentially exposed. Wordfence says a site may be affected if UpdraftPlus was active while a cloud UpdraftCentral key was present.
- All teamupdraft.com account holders: names, email and billing addresses, order history, password hashes and 2FA settings are believed accessed. TeamUpdraft says it does not store card details.
- UpdraftVault and UpdraftClone users: TeamUpdraft disconnected all Vault sites and replaced all Clone client keys, so reconnect and copy new keys.
- Free UpdraftPlus users with no account: no action beyond updating, per TeamUpdraft.
- Self-hosted UpdraftCentral: not affected, per TeamUpdraft.
How big is the install base? Patchstack, CSO and The Hacker News say UpdraftPlus has more than 4 million active installations; some earlier coverage used lower figures, and we could not source a 3 million number. One outlet estimated about 10% of installs hold a key, roughly 400,000 sites. That is an exposure estimate, and TeamUpdraft has not published how many sites were actually hit.
What should I do on each site?
Do these in order, logging in to wp-admin directly rather than through UpdraftCentral.
- Update UpdraftPlus to 1.26.13 (free) or 2.26.13 (Premium) or later.
- Delete the connection key. In wp-admin: Settings > UpdraftPlus > Advanced Tools > UpdraftCentral. Patchstack also suggests checking from the command line, where any output means a key is present:
wp option get updraft_central_localkeys
wp option delete updraft_central_localkeys
- Audit Plugins, including the Must-Use tab, for anything you did not install. Compare names against the lists published by Patchstack and Nethemba.
- Audit Users. Remove unknown administrators and unexpected Editor accounts. Note that the plugin and its account are separate: remove both.
- Change every administrator password, reset 2FA where used, and sign out all sessions.
- Check logs for the trigger parameter and for unfamiliar IP addresses.
- If anything looks wrong, treat the site as compromised and restore a backup taken before October 17, as TeamUpdraft advises.
- Re-authorize remote storage and change storage access keys as a precaution if the site was reachable through UpdraftCentral.
- Reconnect to UpdraftCentral only afterwards. Patchstack's more cautious advice is to wait until the vendor explains the root cause.
On your TeamUpdraft account: change the password by typing the address into your browser, change it anywhere you reused it, and reset 2FA. Be wary of emails claiming to be from the company.
What is still unknown
| Question | Status |
|---|---|
| Number of compromised sites | Not disclosed |
| How the attacker entered teamupdraft.com | Not disclosed; TeamUpdraft says only that a compromised key was used |
| Whether the attacker still has access | TeamUpdraft said on Oct 21 there was no evidence of it |
| Full extent of actions on user sites | TeamUpdraft says unknown |
| Whether 1.26.13 leaves some keys untouched | Reported by Nethemba via a search summary; we did not verify it |
| ICO and police | TeamUpdraft says both were notified |
The wider pattern: management keys are crown jewels
A remote-management key is a credential that can install code. It is stored by a vendor, it does not expire, and it works until someone revokes it. That is the same shape as an AI provider key in a platform's environment variables, as in the Railway breach, or a token a coding agent reads from a .env file. The practical lessons carry over: expiring and scoped keys, one key per integration, and a rotation plan you have rehearsed. Our first 24 hours after a vendor breach runbook covers the generic version, and API keys in logs and env vars covers where copies hide.
It also fits a month of attacks that reach many sites through one trusted channel. The same week saw a compromised Rank Math PRO update, which our supply chain incidents tracker records alongside this one.
How Beam handles this
Beam does not manage WordPress sites, scan plugins or see a vendor's database, so it would not have prevented this breach. Beam is a local-first tool for AI coding agents. The overlap is the credential class: if an agent or script on your machine holds a management or deploy key, Beam can flag reads of .env and credential files so you know where copies live, which helps scope a rotation after an incident like this. Its detection is heuristic and its deny is hook-based, not a sandbox. It will not tell you whether a plugin on a remote site is malicious.
Related reading
- October 2026 attacks timeline
- October 2026 software supply chain incidents tracker
- Railway breach: environment variables, AI keys and what to rotate
- Your first 24 hours after a vendor breach: a rotation and monitoring runbook
- API keys in logs and env vars: how they leak and how to catch it
- PHP2Shell and AI agents: exploit speed and attack risk
Primary sources: TeamUpdraft security incident page · Patchstack write-up · BleepingComputer · The Hacker News · CSO Online
Accurate as of October 29, 2026. TeamUpdraft says its investigation is ongoing and its page was last updated October 23; check it and the plugin changelog for newer guidance.

