Wordpress Escape

Home / Guide

Security

PHP2Shell: Updating WordPress Doesn't Update PHP

On October 21, 2026 the PHP project shipped emergency fixes for two unauthenticated remote code execution bugs rated CVSS 9.2. They are not WordPress bugs. They are worse than that: they are bugs in the thing WordPress cannot run without.

5 min read 5 sections Built to rank
On this page
  1. What PHP2Shell actually is
  2. It's a PHP bug. That's why it's a WordPress problem.
  3. The part your host won't volunteer: PHP.org will not patch 8.1 or older
  4. What to do today
  5. Or remove the runtime
  6. Frequently asked questions
Quick answer

Install PHP 8.5.12, 8.4.27, 8.3.36 or 8.2.35, or a vendor package whose changelog names CVE-2026-109618 and CVE-2026-109619, then restart every PHP worker. Updating WordPress core, your theme and your plugins does nothing. PHP.org is not shipping a new 7.4 / 8.0 / 8.1 release; some hosts (cPanel, CloudLinux, Plesk) shipped backports that keep the old version number. A static site has no PHP process, so this class of bug cannot reach it.

01

What PHP2Shell actually is

Two vulnerabilities, disclosed together and nicknamed php2shell:

  • CVE-2026-109618 - out-of-memory handling via longjmp() leaves request memory uninitialized, which an attacker can drive to reliable code execution.
  • CVE-2026-109619 - fatal-error handling leaves global memory pointing at freed regions, which later requests can read or branch on.

Both are rated CVSSv4.0 9.2. Both are unauthenticated - no login, no account, no plugin required. Every PHP release from 5.4 through 8.5.11 is affected, and the PHP project says every installation that serves web requests is at risk: PHP-FPM, Apache with mod_php, php-cgi, FrankenPHP and LiteSpeed alike.

Wordfence, which protects over 5 million WordPress sites, reported blocking more than 74,000 exploit and probing attempts and no confirmed compromises among those sites as of October 21. watchTowr reported exploitation in the wild. Both can be true at once, and neither is a reason to wait.

02

It's a PHP bug. That's why it's a WordPress problem.

Let's be straight: this is not a flaw in WordPress, and anyone telling you WordPress caused it is selling something. Laravel, Drupal, Magento and a hand-rolled contact.php are all equally exposed.

The reason it lands hardest on WordPress is structural. WordPress is a PHP application. There is no configuration, no hardening plugin and no premium tier that makes a WordPress site stop executing PHP on every single request. Wordfence put it in one line that's worth repeating: updating WordPress itself does not update PHP.

So the patch you need isn't in your wp-admin dashboard. It's in a layer most site owners have never logged into, don't control, and in many cases don't know the version of.

03

The part your host won't volunteer: PHP.org will not patch 8.1 or older

Upstream fixes exist for PHP 8.5, 8.4, 8.3 and 8.2. The PHP project is not shipping a new 8.1, 8.0 or 7.4 release - those branches are end-of-life. They did publish source backports for people who build PHP themselves. Whether your site gets a fix depends entirely on your host.

cPanel, CloudLinux and Plesk shipped backports within a day, often without changing the version string php -v prints. Cheap shared WordPress hosts frequently will not. We audited one ordinary cPanel box the day after disclosure: 27 vhosts, four PHP branches, 21 of them on PHP.org-EOL versions, zero patched packages installed. Two were still on PHP 7.4 (EOL November 2022). The host did have a backport in a disabled Imunify repo - most site owners never see that layer, and WordPress cannot apply it from wp-admin.

The honest version of 'just update PHP' on a typical WordPress site is: open a ticket, wait, then find out which plugins break on a live site. Or stop running PHP.

04

What to do today

  1. Find your PHP version. cPanel: MultiPHP Manager. Elsewhere: ask your host, or run our free scan.
  2. Patch to 8.5.12, 8.4.27, 8.3.36 or 8.2.35, or a vendor build confirmed to carry both fixes. A distro version number alone doesn't tell you.
  3. Restart every PHP worker. Installing the package is not enough - running workers keep the old code in memory until they're recycled.
  4. If you're on 8.1 or older, plan the version move now. A WAF (Imunify360, Wordfence, Cloudflare) blocks some known paths and buys you time; every advisory still says the PHP update is required.
  5. Check what else runs PHP on the same account - a forgotten staging copy or an old /betacrm/ folder shares the same interpreter.
05

Or remove the runtime

Here is the uncomfortable arithmetic. Hardening is a bet that you will win every future race between disclosure and patch, forever, on a site that pays you nothing while you do it. php2shell is the fourth or fifth time this decade that bet has been called.

A static site has no PHP process. There is no interpreter to confuse, no request memory to corrupt, no worker to restart. The HTML files don't execute. That doesn't make you invincible - your DNS, your host account and your build pipeline are all still real targets, and anyone who tells you static means unhackable is lying to you. But this entire class of vulnerability stops applying, and it stops applying permanently rather than until the next CVE.

Get rid of WordPress · The recurring security problems · Already compromised?

Scan reports your PHP version

We'll tell you which PHP you're on, whether that branch still gets security fixes, and what a static migration would take.

Frequently asked questions

Does updating WordPress protect me from CVE-2026-109618?

No. This is a vulnerability in PHP, the language runtime underneath WordPress. Core, theme and plugin updates do not change your PHP version. You need PHP 8.5.12, 8.4.27, 8.3.36 or 8.2.35, plus a restart of every PHP worker.

I'm on PHP 7.4 or 8.0. When is my patch coming?

Not from PHP.org. Those branches are end-of-life. Some hosts (cPanel, CloudLinux, Plesk) shipped backports that keep the old version number - ask them to confirm the package changelog names CVE-2026-109618. If your host has no backport, you move to a supported PHP version or you stop running PHP.

Is my WordPress site definitely compromised?

Not necessarily. As of October 21, Wordfence reported no confirmed compromises across the 5 million-plus sites it protects, which suggests the exploit is non-trivial to land. watchTowr has observed exploitation in the wild. Treat it as urgent, not as settled.

Does a firewall fix this?

Partly. Imunify360, Wordfence and Cloudflare rules block known exploit paths, including the PHP multipart and session-upload-progress surface. That is genuinely useful breathing room. It is not the fix, and every vendor advisory says so.

Can a static site be hit by this?

No. There is no PHP process to exploit. Static hosting still has real risks - a stolen host login, a hijacked DNS record, a poisoned dependency in your build - but no amount of malformed requests to an HTML file produces code execution.

Will migrating break my SEO?

It shouldn't. We keep URLs, titles, meta descriptions, schema and redirects intact; that's the entire point of the process. Static pages typically improve Core Web Vitals, which helps rather than hurts.

Scan my site free

Find out which PHP version your site is running

Free scan, 60 seconds, no login. We report your PHP version, whether it still receives security fixes, and whether wp-login is exposed.

Scan my site free
Keep reading
All guides33
Related searchesphp2shell wordpresscve-2026-109618 wordpressphp vulnerability wordpress