October 2026 has been one of the most serious months for WordPress security in recent memory. Attackers exploited a critical file-upload flaw in a page-builder toolkit, hijacked the update channel of a premium SEO plugin, and stole remote-management keys from a backup service. Then, on October 21, 2026, the PHP project released emergency patches for two critical remote code execution flaws in PHP itself.
These incidents are not known to be connected, and each reaches websites in a different way: an exploited plugin vulnerability, a supply-chain compromise, stolen access keys and a server-level language flaw. One rule applies to all of them: updating closes the entry point, it does not undo what an attacker already changed.
Quick reference: October 2026 incidents
| Threat | Date | Attack type | Required action |
|---|---|---|---|
| Bricksforge | Exploited from Oct 7 | Unauthenticated PHP file upload (CVE-2026-85097, CVSS 10.0) | Update to 3.1.8.10 |
| Rank Math SEO PRO | Oct 15 to 16, disclosed Oct 16 | Supply-chain backdoor in 3.0.123 (CVE-2026-111862, CVSS 9.8) | Restore or clean in order, then install 3.0.124 |
| UpdraftPlus / UpdraftCentral | Disclosed Oct 19 | Stolen connection keys used to install backdoors | Update to 1.26.13 (free) or 2.26.13 (Premium), replace connections, rotate storage keys |
| PHP RCE flaws (“PHP2Shell”) | Patched Oct 21 | Unauthenticated remote code execution (CVE-2026-109618, CVE-2026-109619, CVSS 9.2) | Host must update to PHP 8.5.12, 8.4.27, 8.3.36 or 8.2.35 |
Bricksforge: critical remote code execution
Bricksforge, an advanced toolkit for Bricks Builder, has a critical flaw tracked as CVE-2026-85097 with a CVSS score of 10.0. Versions up to 3.1.8.9 let unauthenticated attackers upload and execute PHP files, giving them full control of the site. Patchstack observed exploitation starting October 7.
What to do: update to 3.1.8.10 immediately, then search upload directories and theme folders for unexpected PHP files. If the vulnerable version was live after October 7, assume the site needs inspection, not just a patch.
Rank Math SEO PRO: a self-restoring backdoor
Rank Math PRO, the paid edition of the Rank Math SEO plugin, distributed malware for about 11 hours. Copies downloaded from rankmath.com or delivered as updates between October 15 at 20:02 UTC and October 16 at 07:12 UTC contained a backdoor. Wordfence assigned it CVE-2026-111862 with a 9.8 severity score, and Patchstack notes that firewall rules cannot mitigate it, because the attack happened inside Rank Math’s own systems. The free Rank Math SEO plugin on WordPress.org is not affected.
The version number does not tell you if you are affected. Version 3.0.123 was first released on October 7, so copies installed before the window are clean. What matters is when your copy was downloaded or updated:
- Installed and activated during the window: treat the site as compromised, even if it now runs 3.0.124.
- Installed but never activated: delete the plugin files, install 3.0.124 from your Rank Math account and run a security scan.
- Downloaded but never installed: this incident alone does not indicate compromise.
Why updating is not enough. The malware recreates its hidden backdoor whenever someone visits the site. Installing 3.0.124 replaces the plugin but leaves behind files, administrator accounts and scheduled tasks the malware placed elsewhere.
Recovery order. Rank Math recommends restoring a site and database backup from before October 15 at 20:02 UTC, then scanning, rotating all credentials and installing 3.0.124. Without a clean backup, begin with these three steps before anything else:
- Delete the entire
rank-math-profolder through your file manager or FTP. Deactivating is not enough. - Delete the
wp_optionsentries named_uf6qdn2hmm,t8krdk990phband_np5pvf754c. - Block outgoing connections to
rank1cdn[.]com.
Indicators of compromise:
- PHP files in
wp-content/mu-plugins/, other plugins’ folders, theinc/,includes/andlib/folders of non-default themes, anduploads/ - A file at
wp-includes/class-wp-cache-util.php, which is not part of WordPress core - Code using
base64_decodewith XOR loops, the keyxmmqhn, orproc_open - Administrator usernames starting with
wpsupport_or emails ending in@wp-mail[.]net .htaccessrules running.cachefiles as PHP, crontab entries tagged#ms6v46, unknown scheduled events and new SSH authorized keys
Wordfence cautions that the absence of these indicators does not prove a site is clean. Rotate every credential the site could reach, and download 3.0.124 only by logging in at rankmath.com directly. Rank Math never sends download links by email.
UpdraftPlus and UpdraftCentral: stolen connection keys
UpdraftPlus is one of the most widely used backup plugins, with more than 3 million active installations. Attackers stole UpdraftCentral connection keys from TeamUpdraft. Because commands signed with those keys looked authentic, connected websites accepted them as legitimate, allowing attackers to install rogue plugins, create administrator accounts and plant persistent backdoors.
This was a key compromise, not a flaw in the plugin’s code. Updating to 1.26.13 (free) or 2.26.13 (Premium) revokes the compromised keys, but it does not remove anything already installed on a site.
What to do: update, follow TeamUpdraft’s instructions for replacing UpdraftCentral connections, review installed plugins and administrator accounts, and re-authorize remote storage such as Dropbox, Google Drive or Amazon S3 with freshly rotated access keys.
PHP2Shell: when the threat sits below WordPress
On October 21, the PHP project released PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35 to fix two critical vulnerabilities that can allow unauthenticated remote code execution. Some coverage has labeled them “PHP2Shell.” The PHP security team gave advance notice a day earlier, rated both flaws CVSS v4.0 9.2, and urges every PHP user to update immediately.
This matters to every WordPress site, regardless of which plugins it runs. The PHP team says the risk is highest for Apache mod_php, where it has a demonstrated exploit in which an unauthenticated request triggers the attack before any application code runs. WordPress, its security plugins and any firewall rules written in PHP never get the chance to act.
| CVE | Root cause | Highest risk |
|---|---|---|
| CVE-2026-109618 (RCE via OOM corruption) | Out-of-memory handling can interrupt PHP while internal request data is only partly initialized, and request cleanup may then treat the invalid data as valid | Apache mod_php |
| CVE-2026-109619 (RCE via stale global state) | Request-owned internal state can survive after its memory is freed, and a later request on the same worker may use it before initialization resets it | Apache mod_php |
Who is at risk. Every PHP installation that serves web requests, including PHP-FPM, Apache mod_php, php-cgi, FrankenPHP and LiteSpeed.
How to update:
- Ask your host to upgrade to PHP 8.5.12, 8.4.27, 8.3.36 or 8.2.35 and restart PHP workers. Linux distributions and LTS vendors received the patches in advance, so updated packages should already be available.
- PHP 8.1 and older no longer receive official updates. The PHP security team published minimal source backports for 7.4, 8.0 and 8.1, and some LTS vendors offer backported fixes, but upgrading to a supported version is the real fix.
- PHP 8.2 reaches end of life on December 31, 2026, so sites on 8.2 should plan their next upgrade now.
- Servers relying on the volunteer-run rpms.remirepo.net repository did not get same-day updates; the PHP team recommends switching to distribution packages or building from source.
- Confirm your version under Tools > Site Health > Info > Server rather than assuming your host has patched.
If you cannot update immediately. The PHP team is explicit that these steps reduce exposure to specific attack paths but do not make a server safe.
For the out-of-memory flaw:
- Set
memory_limit=-1in a way applications cannot override, such asphp_admin_valuein the FPM pool or Apache configuration. An underlying allocation failure can still reach the vulnerable code. - Lower
post_max_sizeto 8M for sites without uploads or 32M where uploads are needed, keepingupload_max_filesizebelow it. Consider enforcing request size, field count and header limits at the web server or proxy level. - Use a container or cgroup memory limit as a safety boundary. Do not use
RLIMIT_ASorRLIMIT_DATA, which can trigger the vulnerable failure.
For the stale state flaw:
- Set
session.upload_progress.enabled=0in php.ini, the FPM pool or server configuration, then restart every worker. Setting it throughini_set()or a.user.inifile does not work. - On PHP 8.5, set
fatal_error_backtraces=0and restart workers. - Remove invalid or deprecated per-request settings that emit diagnostics before initialization. Hiding errors with
display_errorsor the@operator does not help.
For most WordPress site owners on managed hosting, these settings are a conversation with the host, not something to change yourself. The practical action is to confirm the patched version is live.
How to audit your WordPress site now
If your site was active or updated between October 7 and October 22, 2026, work through this triage.
Security checks
- Check your PHP version under Tools > Site Health > Info > Server. If it is not 8.5.12, 8.4.27, 8.3.36 or 8.2.35 or later, contact your host.
- Scan for unauthorized files with a server-level scanner or a tool such as Wordfence.
- Review users under Users > All Users and delete unknown administrator accounts.
- Review plugins, including hidden ones, by comparing the admin list against the plugins directory on the server.
- Rotate credentials: WordPress passwords, database credentials and salts in wp-config.php, hosting, FTP, SFTP and SSH access, SMTP, payment and API keys, and remote storage keys.
- Restore from a clean backup if compromise is confirmed, making sure it predates the relevant exposure window.
SEO checks
Compromised WordPress sites are often used for SEO spam, so also look for:
- Conditional redirects that only trigger for Googlebot or mobile visitors
- Spam pages, doorway pages or unfamiliar URLs in your XML sitemap
- Injected links, hidden text or rewritten title tags and meta descriptions
- New 404 or 500 errors on previously healthy pages
- Changed robots.txt rules, unexpected noindex tags or altered canonical tags
- Security issues or manual actions in Google Search Console
The fastest way to see what changed is to compare a fresh crawl against one taken before October 7. New URLs, changed status codes, redirect chains and altered canonicals stand out immediately. Crawl with a Googlebot user agent too, since some malware hides spam from regular browsers. A crawler like SiteAuditLint detects these visible SEO symptoms, but it cannot see server-side code, database changes or malware that produces no output, so pair it with a malware scanner and server log review.
One outcome, four routes
The October incidents reach the same outcome by different routes: attacker-controlled PHP running on your server. Bricksforge did it through a file upload, Rank Math PRO through a poisoned update, UpdraftPlus through stolen keys, and the PHP flaws through the language runtime itself.
For WordPress site owners, plugin hygiene and server patching now need to be treated as one security process. Remove plugins you do not use, follow vendor advisories for the ones you keep, confirm your host patches PHP promptly, and keep a clean crawl baseline so you can see exactly what changed when something goes wrong.
For more on auditing WordPress sites, see our WordPress SEO hub .