October 23, 2026 - 7 min read

By PhishClean Research Team

PHP2Shell: what site owners and visitors should do

Two critical flaws in PHP itself let an attacker who is not logged in run code on a web server. Patches shipped on 21 October 2026, and attack traffic started before they did.

PHP runs most of the web's content management systems, including WordPress, Drupal and Joomla. Wiz, whose researchers found the bugs, puts PHP behind about 70% of websites. That is why a bug in PHP's core engine matters more than a bug in any one plugin: every site on a vulnerable PHP build is exposed, however well its own code is written.

If you run a PHP site: update PHP to 8.5.12, 8.4.27, 8.3.36 or 8.2.35 today. Updating WordPress, plugins or themes does not fix this.

What PHP2Shell is

PHP2Shell is the name for two vulnerabilities, CVE-2026-109618 and CVE-2026-109619, both rated 9.2 under CVSS v4.0. According to Wiz, they come from how PHP handles fatal errors, especially running out of memory: the error leaves corrupted state behind, and a later request reuses it. Wiz describes four variants:

The result is code execution on the server without logging in. Wiz demonstrated it against WordPress, Drupal and Joomla. The memory-read variant matters on its own too: process memory can hold database passwords, API keys, session tokens and certificates. CISA's alert says the flaws affect all PHP installations serving web requests.

Is it being exploited?

Attempts, yes. Successful break-ins, not confirmed as of 22 October:

Public exploit code plus mass scanning usually means mass compromise follows within days for sites that have not updated. Treat the window as already open.

Which PHP versions are fixed

BranchFixed in
PHP 8.58.5.12
PHP 8.48.4.27
PHP 8.38.3.36
PHP 8.28.2.35
PHP 8.1 and olderNo official fix. Upgrade to a supported branch, or use a patched build from your Linux distribution or host.

Wiz reports that versions back to PHP 5.4 are affected. The PHP project only ships fixes for 8.2 and newer.

How to check your PHP version

curl -sI https://your-site.example | grep -i x-powered-by

No X-Powered-By header does not mean you are safe; many servers hide it. Check from the inside.

What to do as a site owner

  1. Update PHP to a fixed release, then restart PHP-FPM or your web server so the new build is actually the one running.
  2. On shared or managed hosting, the host updates PHP, not you. Check their status page or ask support whether your server runs a fixed build. Some hosts, such as SiteGround, have said their customers are protected.
  3. If you cannot update today, set session.upload_progress.enabled = 0 in php.ini. It blocks one attack path for CVE-2026-109619 only; the PHP maintainers say there is no complete mitigation.
  4. Look for signs of attack. Wiz lists unusual multipart requests followed by memory-limit errors or bursts of HTTP 500 responses, oversized or malformed PHPSESSID cookies, and unexplained PHP worker restarts. Application logs may show little, because this happens below your application.
  5. If the site was exposed and unpatched, rotate secrets that live in PHP's memory: database passwords, API keys, payment and email credentials. Then check for files you did not add, new admin users, and scripts injected into your pages.

What it means if you only visit websites

You cannot patch someone else's server, and you cannot tell from the address bar whether a site runs a vulnerable PHP. What you can do is recognise what hacked sites tend to show their visitors. No reports so far tie a particular payload to PHP2Shell. In past waves of mass-hacked sites, though, the same few tricks keep coming back:

The common thread: the domain is real, so checks that only ask "is this a known bad site?" pass it. What gives these pages away is what they ask you to do.

Where PhishClean fits

PhishClean reads the page as well as the address, so its checks still work when a hacked site serves the trap from its own real domain. PhishClean 1.8.0, rolling out to the browser stores now, adds warnings aimed at exactly these pages:

They sit alongside the existing fake virus, "click Allow" and fake login checks. Everything runs on your device, and no page content is sent anywhere.

It does not fix the server. If you own a PHP site, updating PHP is the only real fix.

Frequently asked questions

Does updating WordPress fix PHP2Shell?

No. The flaws are in PHP itself, below WordPress, plugins and themes. Only a fixed PHP version helps.

Is there a workaround if I cannot update PHP today?

Setting session.upload_progress.enabled to 0 blocks one attack path for CVE-2026-109619. It is not a complete mitigation, and the PHP maintainers say updating is the only safe choice.

My site runs PHP 7.4 or 8.1. Is it affected?

Very likely. Wiz reports versions back to 5.4 are affected, and the PHP project only fixes 8.2 and newer. Move to a supported branch, or ask your Linux distribution or host for a patched build.

Sources

Catch the trap even when the site is real

PhishClean checks what a page asks you to do, not only where it lives, so a hacked site serving a fake prompt still gets flagged.

Install PhishClean free

Last updated:

Share this guide

If this helped, share it with someone who runs a website, or subscribe for new browser-security guides from PhishClean.