SnowDriven Research · News

PHP2Shell (CVE-2026-109618, CVE-2026-109619): what to do now

Update PHP now. On 21 October 2026 the PHP project fixed two critical vulnerabilities that can let an attacker run code on a web server without logging in. The fixed versions are PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35. On PHP 8.1 or older there is no fixed release from the project: upgrade, or get a patched package from your vendor.

Advisory
21 Oct 2026
Fixed in
8.5.12 · 8.4.27 · 8.3.36 · 8.2.35
Severity
CVSS v4.0 9.2
8.1 and older
No release
Updated
21 Oct 2026

The short answer

Last updated

Do this now
Update to the release for your branch, PHP 8.5.12, 8.4.27, 8.3.36 or 8.2.35, or install your Linux distribution’s or vendor’s patched package. Then restart every PHP process, so the patched code is what serves requests.
On 8.1 or older
The PHP project ships no fixed release. Upgrade to a supported version, or get a backported fix from your distribution or long-term support vendor.
Can’t update today
The advisory lists settings that reduce exposure, but they don’t make a server safe. The interim measures.
Source
The PHP project’s security advisory of 21 October 2026.

Before you change anything. This page is general information, not advice for your system. The facts come from the PHP project’s advisory and the reports we link, last checked on 21 October 2026, and they can change, so confirm on the PHP advisory before you act. Back up, test every change on a copy that isn’t in production where you can, keep a way back, and follow your own change process. You follow these steps at your own risk (terms). SnowDriven isn’t affiliated with The PHP Group (trademarks).

Key facts

From the PHP project’s advisory of 21 October 2026, and from other reports where they are named.

The flaws
CVE-2026-109618 and CVE-2026-109619, in PHP itself rather than in WordPress or any application. Both can allow unauthenticated remote code execution: running code on the server without logging in.
Severity
Critical. The PHP project rates both CVSS v4.0 9.2.
Fixed in
PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35, released on 21 October 2026. The project’s advance notice of 20 October 2026 scheduled the release for 21 October 2026 at 14:00 UTC.
Older versions
No release for PHP 8.1 and older. The project published minimal source backports for 7.4, 8.0 and 8.1, as branches on GitHub rather than releases. Nothing is published for 7.3 and older.
Exploitation
The PHP project’s advisory doesn’t say whether the flaws are being exploited; it describes a demonstrated exploit against Apache with mod_php. Reported by watchTowr: exploitation seen in the wild as of 21 October, on its honeypot network. Reported by Cloudflare: attack traffic aimed at these flaws, including attempts to get past its protections. Reported by Huntress: no exploitation seen on its partners’ systems as of 4:30 pm ET on 21 October.
The leak
Reported by Huntress and Infosecurity Magazine: word of the vulnerabilities leaked in a Hacker News post on 20 October, before the coordinated release. Infosecurity Magazine reports that the post named the CVE numbers.
The name
The advisory calls them “RCE via OOM corruption” and “RCE via stale global state”. “PHP2Shell” is the name used in security researchers’ reports, not the PHP project’s.

Who is affected

The advisory covers every PHP installation that serves web requests, including PHP-FPM, Apache with mod_php, php-cgi, FrankenPHP and LiteSpeed.

Check your version

It takes a minute. Check the PHP that serves the site, not only the one on the command line.

  1. On the server

    Either command prints the version:

    php -v
    php -r 'echo PHP_VERSION;'
  2. What the web server runs

    The command-line PHP can be a different version from the one behind PHP-FPM or mod_php. To see what the site really uses, put a file containing <?php phpinfo(); at a private, hard-to-guess path, open it once, then delete it: it shows server details that shouldn’t stay public.

  3. In WordPress

    Open Tools → Site Health → Info, then the Server section: it lists the PHP version.

  4. In a hosting panel

    Your hosting control panel may show the PHP version for each site, often where you can change it.

  5. On distribution packages

    A backported fix may keep the same PHP version number. Compare the installed package version with your vendor’s security notice rather than the version alone.

What to do now

By how your PHP is run. In every case, back up first.

Managed WordPress or shared hosting

Your host controls PHP. Check its status page or notices for CVE-2026-109618 and CVE-2026-109619, or ask support whether PHP on your plan has the fix, and when.

If your plan lets you choose a PHP version and you’re on 8.1 or older, ask whether that version gets a backported fix. If it doesn’t, plan the move to a supported version, tested on a staging copy first. Keep WordPress, themes and plugins updated as usual, but they don’t fix this.

Your own server, with distribution packages

Install the PHP security updates from your Linux distribution or long-term support vendor; the advisory says they received the patches in advance. Then restart every PHP process (PHP-FPM pools, Apache if it runs mod_php, FrankenPHP or LiteSpeed) and confirm the package version against your vendor’s notice.

If you rely on the volunteer-run rpms.remirepo.net repository: the advisory says it wouldn’t have updates on the day, and points to distribution packages or a source build instead.

Compiled from source

Build PHP 8.5.12, 8.4.27, 8.3.36 or 8.2.35 (whichever matches your branch) from php.net’s source downloads (Windows builds are on php.net too), deploy, and restart every worker.

For 7.4, 8.0 and 8.1 the project published minimal source backports as GitHub branches, for people who build from source or have no long-term support vendor: PHP 7.4, PHP 8.0 and PHP 8.1. They aren’t releases, so test them as you would your own patch.

On PHP 8.1 or older

There is no fixed release from the PHP project. Ask your distribution or long-term support vendor for a backported fix, naming both CVEs. If you build PHP yourself, the source backports cover 7.4, 8.0 and 8.1. For 7.3 and older nothing is published: upgrade, or find a vendor that covers your version.

The lasting fix is a supported version. PHP 8.2’s security support ends on 31 December 2026, so aim for 8.4 or 8.3; our PHP 8.2 guide covers the move for WordPress sites and custom apps. Use the interim measures below while you work on it.

Can’t update today: the interim measures

The advisory lists measures that reduce exposure while you arrange the update. They don’t make an installation safe; only updating is a complete fix. In short:

  • Memory limit. Set memory_limit=-1 where applications can’t override it, with php_admin_value in the PHP-FPM pool or the Apache config.
  • Request size. Keep post_max_size low: 8M with no uploads, 32M with them, and upload_max_filesize below it. Add request-size limits at the web server or proxy.
  • Memory boundary. Put a memory limit on the container or cgroup instead, but not with RLIMIT_AS or RLIMIT_DATA.
  • Upload progress. Set session.upload_progress.enabled=0 in php.ini, the FPM pool or the server config, then restart every worker. Setting it with ini_set() or .user.ini doesn’t count.
  • PHP 8.5 only. Set fatal_error_backtraces=0, then restart every worker.
  • Errors and timeouts. Fix fatal errors and timeouts that a visitor can trigger.

Each measure has conditions. Read the full list in the PHP advisory before you change a setting.

The WordPress picture

From our WordPress PHP tracker’s snapshot of 21 October 2026: WordPress.org’s figures, summed by what the PHP project published for each version.

WordPress sites reporting to WordPress.org, 21 Oct 2026

PHP 8.1 or older
36.4%
No fixed release from the PHP project: 7.4, 8.0 and 8.1 got source backports only. Vendors may backport.
PHP 7.3 or older
5.7%
Part of the figure before it: nothing at all is published for these versions.
PHP 8.2 or newer
63.6%
Fixed releases exist, but each site still has to install one.

Source: our WordPress PHP tracker, from WordPress.org’s PHP version statistics as stored on 21 October 2026 (the data as JSON).

Updates

What has changed since the advisory, newest first. We add to this list as things develop.

  1. The PHP project released PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35 and published its advisory. Reported by watchTowr: exploitation seen in the wild as of 21 October. Reported by Huntress: no exploitation seen on its partners’ systems as of 4:30 pm ET that day. We published this page.

  2. The PHP project gave advance notice of a critical security release, scheduled for 21 October 2026 at 14:00 UTC. Reported by Huntress and Infosecurity Magazine: word of the vulnerabilities leaked on Hacker News the same day.

Sources

Each checked on the day shown. Third-party reports are theirs; we quote only what the page says.

About this page

Updated
Verified
21 Oct 2026

Cite this page

SnowDriven. “PHP2Shell (CVE-2026-109618, CVE-2026-109619): what to do now.” SnowDriven Research. https://snowdriven.com/research/php2shell/ (last updated 21 October 2026).

One click or tap selects the whole citation, ready to copy.

About these facts

The facts are the vendor’s, from its own advisory, and each report is its publisher’s, attributed by name; all were checked on the day shown, and the WordPress shares are WordPress.org’s. Any of them can change without notice, and our summary can fall behind or contain mistakes, so confirm with the source before you act. Information only, provided as is (terms). Reuse: free to quote, with credit to SnowDriven and a link (terms of use).

Start a project

Need urgent help with a PHP or WordPress site?

We can update PHP on your server or work with your host on it, apply the interim measures while a fix is arranged, and plan the move off PHP 8.1 or older. Tell us what you run; we reply within one business day.

Pittsburgh, PA · Since 2015 · First step: a 30-minute call