Deployment guide

UpdraftCentral: stolen keys, fake plugins, a clean restore

Deploy on a VPS Cloud →

Tutorial

UpdraftCentral: stolen keys, fake plugins, a clean restore

Security & Monitoring9 min read14 steps

On 17 and 18 October 2026, unauthorised access to the UpdraftPlus vendor's own website exposed UpdraftCentral connection keys, and WordPress sites then received fake plugins without any plugin vulnerability being involved. For an agency running a portfolio of client sites, updating is no longer the whole question: you need to know which sites were already hit, which keys are still valid and which accounts were created in the shadows. This guide gives the commands to check, revoke, audit and restore, site by site.

Contents· What happened at UpdraftPlus in October 20261/12
  1. 01What happened at UpdraftPlus in October 2026
  2. 02Versions and situations: where each site stands
  3. 03Why "up to date" does not mean "clean"
  4. 04The signs to look for on each site
  5. 05Audit each site, in order
  6. 06The same checks by environment
  7. 07At the slightest sign, treat the site as compromised
  8. 08Restore cleanly
  9. 09Restoring does not replace revoking
  10. 10Remote storage, sessions and passwords
  11. 11For an agency: one inventory, not ten spreadsheets
  12. 12Official documentation

What happened at UpdraftPlus in October 2026

The vendor, TeamUpdraft, identified unauthorised access to its own website on 17 and 18 October 2026. The data involved includes UpdraftCentral connection keys, the remote management service. With such a key, an attacker signs commands that a site accepts as coming from its dashboard, including the installation of a plugin. Patchstack observed the first backdoor installation on 18 October at 15:32 UTC and counts at least 99 malicious plugins with distinct names, disguised as maintenance tools. The central point lies elsewhere: this is not a flaw in the backup plugin. The vendor states that the plugin and its downloads are not affected, nor are backups kept in your own remote storage. The danger comes from a stolen remote management key, not from WordPress backups in general.

Versions and situations: where each site stands

Scroll the table

SituationStatusAction
UpdraftPlus 1.26.13 (free) or 2.26.13 (Premium), or newerExisting UpdraftCentral connections are revoked, according to the vendorStill check keys, plugins and accounts
UpdraftPlus 1.26.12According to Nethemba, a bug prevented the keys from being removedMove to 1.26.13 or newer, then delete the keys
Older versionA key may remain validUpdate, then delete the keys
Plugin up to date, fake plugin already plantedThe update does not remove the fake pluginAudit plugins and accounts, see below
Site never connected to UpdraftCentralNo key expectedRead the keys option to be sure
Self-hosted UpdraftCentralNot affected, according to the vendorNo action specific to this incident
Backups in your own remote storageNot affected, according to the vendorRe-authorise the storage and change its keys

Why "up to date" does not mean "clean"

The sentence "my plugin is up to date, I am covered" is wrong for two reasons. First, version 1.26.12 was meant to remove the keys but, according to Nethemba as quoted by BleepingComputer, a bug prevented it: only 1.26.13 and 2.26.13 fixed that point. Second, an update changes the code of the backup plugin; it removes neither a fake plugin that is already installed nor an administrator account that already exists. The vendor has also reported, in an update to its notice, sites where a plugin dropped by the attacker survived the initial incident and later created a new administrator, even after disconnection. A site is therefore declared clean only after checking keys, plugins and accounts, never on the strength of a version number.

The signs to look for on each site

  • An unknown plugin — the name Site Health Cache comes up often according to Patchstack, but the list is not exhaustive: the vendor also names Asset Forge 2, Core Smith, Image Forge and WP Forge.
  • A telltale description — the string "Small maintenance toolkit: keeps option storage tidy." is the most reliable file-level indicator according to Patchstack; not finding it proves nothing.
  • A hidden account — usernames such as data-ops43 or media-staff96, an example.org address, the display name Site Tools; some plugins hide these accounts from the Users screen.
  • An option ending in _sync_token — an entry whose name ends this way in the options table accompanies the backdoor.
  • An install with no author — a plugin that appeared without any administrator action, or a WordPress error email naming a plugin nobody knows.
  • A key still present — the updraft_central_localkeys option is not empty: the site stays exposed as long as that key exists.
  • A log line — in the UpdraftCentral log, probe.central.updraftplus.com followed by Command received: plugin.upload_plugin.

Audit each site, in order

  1. Work from the site itself

    Open the site's own WordPress dashboard, or an SSH session, but not UpdraftCentral: the vendor asks you to log in to each site directly.

  2. Read the existing keys

    wp option get updraft_central_localkeys
    Non-empty output means the site is exposed, according to Patchstack, even if you never used UpdraftCentral. An "option does not exist" error means no key is present.

  3. Update, then delete the keys

    wp plugin update updraftplus
    wp option delete updraft_central_localkeys
    The graphical path is Settings > UpdraftPlus Backups > Advanced Tools > UpdraftCentral, then "Manage existing keys"; the exact label varies by version, so the command is the reference gesture. Removing the site from the UpdraftCentral dashboard is not enough. Backups keep working.

  4. List the plugins and compare

    wp plugin list --fields=name,status,version
    ls wp-content/mu-plugins/
    Compare with the expected list for the portfolio: a plugin nobody approved is suspect, including in the Must-Use folder, which the Plugins screen does not always display.

  5. Search for the fake plugin's signature

    grep -r "Small maintenance toolkit: keeps option storage tidy." wp-content/plugins/ wp-content/mu-plugins/
    A hit is an alert. An empty search does not prove the site is clean.

  6. List privileged accounts

    wp user list --role=administrator --skip-plugins
    wp user list --role=editor --skip-plugins
    The --skip-plugins option matters: it avoids loading the plugins that hide accounts on screen. Compare with the expected list of people who actually administer the site.

  7. Look for the backdoor option

    wp option list --search="*_sync_token"
    Any entry found calls for the "compromised site" handling in the next section.

  8. Record the result

    One line per site: UpdraftPlus version, keys present or not, plugin gap, account gap, audit date, decision. This register serves as proof for the client and as a baseline for the next incident.

The same checks by environment

Scroll the table

EnvironmentTypical commandNote
Debian or Ubuntu`sudo -u www-data wp --path=/var/www/html plugin list`Adapt the path and the user to your installation
RHEL, AlmaLinux or Rocky`sudo -u apache wp --path=/var/www/html plugin list`User `nginx` if the web server is nginx
Docker Compose`docker compose exec -u www-data wordpress wp plugin list`The service name depends on your file; WP-CLI is often missing from the WordPress image, check
Shared hosting with SSH`wp plugin list` from the site folderWithout SSH, use the file manager or SFTP
Without WP-CLIInspect `wp-content/plugins/` and `wp-content/mu-plugins/` over SFTPCompare each folder with the expected list
All environments`wp config shuffle-salts`Changes the WordPress security keys and closes open sessions

At the slightest sign, treat the site as compromised

If a backdoor account exists or the trigger appears in the logs, Patchstack recommends treating the site as fully compromised. The order matters. Delete the UpdraftCentral key first, otherwise the attacker keeps their way in. Then deactivate the fake plugin and remove its folder directly on the server: the vendor warns that some plugins are designed to erase their traces when deleted from the dashboard. Do not fix a code error in that plugin to "repair" it: Patchstack warns that this activates the backdoor. Remove the account and the _sync_token option, then prefer restoring over manual cleanup, because nothing proves that a hand cleanup found everything.

Restore cleanly

  1. Choose the restore point

    Take a backup from before 17 October 2026 and check that it really predates the compromise: file dates, the last known plugin installation, server logs.

  2. Restore outside production

    Mount the backup on a test site or a disposable server, never directly in production. Re-run the audit section checks there: keys, plugins, accounts, signature.

  3. Compare with a clean installation

    wp core verify-checksums
    wp plugin verify-checksums --all
    These commands compare core and plugin files with the checksums of the official directory; a modified file is reported.

  4. Update before going back online

    Move UpdraftPlus to 1.26.13 or 2.26.13 at the very least, update everything else, then delete the keys again: a backup from before the incident may contain some.

  5. Return to production and monitor

    Switch over the restored site, then re-read plugins and accounts over the following days. A plugin or account that reappears signals a door still open elsewhere.

  6. Decide on reconnection

    TeamUpdraft allows reconnecting to UpdraftCentral once the site is checked and secured. At the date of its article, Patchstack advised waiting for the cause to be explained. If you do not need remote management, leave it disconnected.

Restoring does not replace revoking

Restoring a clean backup does not exempt you from deleting the keys or changing credentials: the vendor says so itself. Always proceed in this order: keys deleted, passwords changed, sessions closed, then back online.

Remote storage, sessions and passwords

Backups kept in your remote storage (Google Drive, Dropbox, Amazon S3) are not affected, according to the vendor, but sites reachable through UpdraftCentral must re-authorise that storage and change its access keys. Rotate the S3 keys, renew the authorisation for Drive or Dropbox accounts, then change the WordPress security keys with wp config shuffle-salts and the passwords of all legitimate administrator and editor accounts. On the vendor side, change your password by typing the address by hand in the browser, reset two-factor authentication, and if you use UpdraftVault, reconnect the storage and run a manual backup: the sites had been disconnected. The data exposed at the vendor includes names, email addresses, billing addresses and order history; passwords are stored there only in hashed form.

For an agency: one inventory, not ten spreadsheets

Across dozens of sites, the time does not go into the command, it goes into the question "who has what". Keep a living register per site: UpdraftPlus version, presence of keys, expected plugin list, expected administrator list, date of the last audit, date of the last backup. Without a reference list, a plugin is never "unknown", only "not yet seen". Look at your restore points before you need them: at ServOrbit.com, backups are weekly on entry-level plans and daily on the Pro plan and on every Agency plan, and you should check that a copy from before 17 October 2026 still exists. Our guide on testing the restore of a client VPS backup describes the procedure to rehearse cold, and the update routine for a portfolio remains the one from the two recent WordPress alerts.

Official documentation

TeamUpdraft notice on the October 2026 incident: https://teamupdraft.com/blog/security-incident-october-2026/

Patchstack analysis: https://patchstack.com/articles/updraftcentral-key-compromise-wordpress-backdoors/

BleepingComputer article: https://www.bleepingcomputer.com/news/security/stolen-updraftcentral-keys-used-to-backdoor-wordpress-sites/

WP-CLI, user list: https://developer.wordpress.org/cli/commands/user/list/

WP-CLI, plugin checksum verification: https://developer.wordpress.org/cli/commands/plugin/verify-checksums/

WP-CLI, security key rotation: https://developer.wordpress.org/cli/commands/config/shuffle-salts/

A portfolio of client sites to check, without multiplying logins

A portfolio of client sites needs a single inventory of plugins and access. With the ServOrbit.com agency space, you follow accounts, expiry dates and services from one interface: you manage the client relationship, we run the infrastructure.

Need help?

Browse our help center and FAQ, or reach our team — callback, WhatsApp or email. Support in French, English and Arabic.

Message us on WhatsAppopens in a new tab