1. Red
  2. Learn
  3. PHP2Shell

PHP2Shell fixed versions: every PHP branch, one table

PHP2Shell fixed version for PHP 8.5, 8.4, 8.3 and 8.2, plus what to do on 8.1 and older. The branch table with distro backports, checked 24 October 2026.

By Alexander Gusev, run.cloudPublished 24 October 20266 min readHow we check facts
On this page
  1. Which PHP versions are affected, branch by branch?
  2. Can a fixed package show an old version?
  3. What do the Linux distributions ship?
  4. How do I fix it?
  5. Am I affected? A three-state self-test
  6. Was it exploited before the fix?
  7. What is the bug, without the exploit?

The PHP2Shell fixes are PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35, for CVE-2026-109618 and CVE-2026-109619. Any php.net build below the fixed number on its branch is affected. PHP 8.1 and older have no php.net release. If your PHP is not on a fixed number, ask your host or update the package, then restart the PHP workers.

FactDetailSource
CVE idsCVE-2026-109618 and CVE-2026-109619PHP notice
SeverityCVSS v4 9.2 for both, rated CriticalGHSA-w8hw-w9fx-j79w, GHSA-6wmf-4rv5-p3rp
Disclosed21 October 2026, advance notice for 14:00 UTCPHP notice
Fixed releases8.5.12 · 8.4.27 · 8.3.36 · 8.2.35PHP notice, both GHSAs
No php.net release8.1 and older, including 7.x and 5.xPHP notice, watchTowr
In scopePHP-FPM, Apache mod_php, php-cgi, FrankenPHP, LiteSpeedPHP notice
ExploitationHoneypot attempts from 17 October (vendor-claimed)AWS
Checked24 October 2026this page

Which PHP versions are affected, branch by branch?

Both GHSA records list the same affected ranges: below 8.2.35, below 8.3.36, below 8.4.27 and below 8.5.12. The table puts every branch in one place, with what the PHP project and the vendors said at our check on 24 October 2026.

BranchFixed versionStatus of the branchWhere the fix comes from
8.58.5.12Supportedphp.net
8.48.4.27Supportedphp.net
8.38.3.36Supportedphp.net
8.28.2.35Reaches end of life on 31 December 2026php.net
8.1None from php.netNo longer receives project updatesSource backport branch from the PHP security team, or a vendor package
8.0None from php.netNo longer receives project updatesSame source backport branch, or a vendor package
7.4None from php.netNo longer receives project updatesSame source backport branch, or a vendor package
7.3 and older, 5.xNoneEnd of lifewatchTowr says all versions are affected with no fix; upgrade or use a vendor build
8.6 RC8.6.0 RC4 includes both fixesPre-releaseNot for production, per PHP

Sources for the table: the PHP notices for every row except the 7.3 and older row, which is watchTowr's reading. The UK NCSC says organisations using any version of PHP are affected and tells owners of older versions to move to a supported release. The PHP changelog dates 8.5.12 and 8.4.27 to 22 October 2026, a day after the advisory.

Can a fixed package show an old version?

The version table above is for php.net builds. Distributions, control panels and hosts rebuild PHP and often keep the old branch number. Two examples from the vendors' own pages:

  • Ubuntu 22.04's fixed PHP package is 8.1.2-1ubuntu2.28. It is a backport on the 8.1 branch.
  • CloudLinux's first fixed ea-php83 build was 8.3.35-2, a number below 8.3.36 that already carried the fix. Its php.net-numbered 8.3.36-1 builds followed on 23 October.

So a version below the table can be fixed, and a version in the table's affected range is not proof of exposure either. Check the package changelog for both CVE ids; how the distro backport trap works has the Ubuntu and Debian detail. CloudLinux says its rebased native PHP 8.2 and 8.3 changelogs name no CVE ids, so there you check that the version is 8.2.35 or 8.3.36 or later (page read 24 October 2026). See the host-side detail for the other two traps: the command-line php -v is often a different binary from the web PHP, and a panel selector shows a branch, not a build.

What do the Linux distributions ship?

At our check on 24 October 2026. These rows move, so open the linked page before you act.

ChannelFixed packageSource
Debian 13 (trixie)php8.4 8.4.27-1~deb13u1, DSA-6574-1Debian tracker
Debian 12 (bookworm)php8.2 8.2.35-1~deb12u1, DLA-4848-1Debian tracker
Ubuntu 26.10php8.5 8.5.9-0ubuntu2.1Canonical
Ubuntu 26.04php8.5 8.5.4-0ubuntu1.5Canonical
Ubuntu 24.04php8.3 8.3.6-0ubuntu0.24.04.13Canonical
Ubuntu 22.04php8.1 8.1.2-1ubuntu2.28Canonical
Ubuntu 20.04 and older (ESM)php7.4 7.4.3-4ubuntu2.29+esm5 and older branches, ESM subscriptionCanonical
Red HatBulletin RHSB-2026-013, last updated 23 October 2026, 13:15 as shown on the page, says some updates are already available and additional updates are in progress. At our check on 24 October 2026 it listed no fixed package versions, and the CVE page (rated Important) listed no errata. Take the package version from the errata for your RHEL releaseRed Hat
cPanel EasyApache, CloudLinux alt-phpFixed ea-php52 to ea-php85 builds in stable from 21 October (vendor-claimed). Installing them is the server owner's jobCloudLinux
Heroku8.2.35, 8.3.36, 8.4.27, 8.5.12, plus a rebuilt 8.1.34 on Heroku-22. Redeploy to pick them upHeroku

Debian's tracker listed php8.2 in unstable as unfixed when we checked. Debian 12 and 13 are the fixed rows above.

How do I fix it?

What do I do if a host manages PHP for me?

Send support this and keep the reply:

For [your domain], which PHP build serves web requests, and is it fixed for CVE-2026-109618 and CVE-2026-109619? Please give the package or build identifier, confirm that every PHP-FPM, CGI or Apache worker for my domain was restarted after the fix was installed, and tell me if I must change the PHP version setting or redeploy.

  • Ask the question above and keep the written reply.
  • If you are on 8.1 or older, ask whether the host backported the fix, and what the plan is to move you (what to do on end-of-life PHP).
  • If the host has no answer yet, "nothing published" means ask again. It does not mean fixed or unfixed.

What do I do if I manage the server myself?

  • Take the fixed package from your distribution, or build a fixed release, for the branch you run.
  • Restart PHP-FPM, or Apache if you use mod_php, so no old worker keeps serving (restart steps after the update).
  • Rebuild and redeploy any container image that bundles PHP. A fixed base image does nothing until your image is rebuilt from it.
  • Check each virtual host, because one server can run several PHP versions.
  • If you cannot patch today, the PHP project lists interim mitigations per CVE and says updating is the only complete solution. The PHP notice has them. Restrict access or take the site offline if you cannot apply them.

Longer walkthroughs: fix and patch the PHP runtime.

Am I affected? A three-state self-test

Am I affected? Where you stand right now

A passive check from outside can only give you the first two states. Only evidence from the server or the host gives you the third.

  1. Detected Your site serves PHP and shows a php.net version below the fixed number for its branch. Treat it as exposed. Ask the host the question above, or update and restart today.
  2. Unknown The version is hidden, is on 8.1 or older, or could be a backport. This is the common case. Get the package or build identifier and the restart time from whoever runs the server.
  3. Confirmed by owner evidence You hold the fixed package or changelog entry naming both CVEs, and a restart or redeploy after it was installed. The runtime is fixed. The open question is whether anything happened before.

No scan, ours included, moves you from "unknown" to "confirmed". A scan can say a version is affected. It cannot see a backport.

Our checker page says what an outside check can and cannot confirm.

Was it exploited before the fix?

Amazon Threat Intelligence reported a honeypot attempt on 17 October 2026, four days before disclosure, and more activity on 21 October. AWS says it is unclear whether the attempts would have worked on real systems. The exploitation page tracks this with dates.

If your PHP was exposed between 17 October and your fix, look for PHP files you did not add, new scheduled tasks and new administrator accounts. Updating PHP does not remove anything planted earlier. The UK NCSC advises checking for compromise if you cannot update at once.

What is the bug, without the exploit?

The PHP security advisory of 21 October 2026 describes two flaws. CVE-2026-109618 is remote code execution through out-of-memory handling: PHP can be interrupted while internal request data is only partly initialised, and request cleanup may then treat that data as valid. CVE-2026-109619 is remote code execution through stale global state: request-owned internal state can survive after its memory is freed, and a later request handled by the same worker may use it. The two CVEs explained in plain terms go further. The advisory says both can allow unauthenticated remote code execution, and that the risk is highest for mod_php, where an exploit was demonstrated in which an unauthenticated request triggers the attack before any application code runs. We do not reproduce exploit material. You do not need it to fix a site.

On 23 October the PHP project posted an informational advisory on session upload progress for CVE-2026-115560. It says the issue needs an unusual configuration and application code, suggests setting session.upload_progress.enabled=0 until the next regular bugfix release, and promises a full advisory with that release. It names no fixed version. We will add a row here when it does.

If you run WordPress, why a WordPress update is not enough is on its own page, and the other PHP2Shell guides cover hosts and containers. All the incidents of the month are on the October 2026 tracker.

Questions people ask

What is the fixed version for PHP 8.3?

PHP 8.3.36. The PHP project lists 8.3.36, 8.2.35, 8.4.27 and 8.5.12 as the releases that fix CVE-2026-109618 and CVE-2026-109619. Any 8.3.x below 8.3.36 from php.net is affected. A distribution package can carry the fix and still report an older number, so check its changelog.

I am on PHP 8.1 or older. Is there a fix?

Not from php.net as a release. The PHP security team published minimal source backports for 7.4, 8.0 and 8.1, and some vendors ship their own fixed packages. If neither applies to you, the realistic path is to move to a supported PHP branch and test the site.

Does updating WordPress fix PHP2Shell?

No. The bug is in the PHP engine under WordPress, WooCommerce and every other PHP application. The fix is a fixed PHP package on the server and a restart of the workers that serve your site.

php -v says 8.3.35 but my host says it is patched. Who is right?

Both can be right. Distributions and control panel vendors often ship the fix as a new build and keep the old version number. Ask the host for the package or build identifier and for confirmation that the workers were restarted.

Is PHP 8.2 still getting fixes?

PHP 8.2.35 fixes both CVEs. The PHP project's notice says the 8.2 branch reaches end of life on 31 December 2026, so plan the move to 8.3 or newer.

Can a scan tell me if my PHP is fixed?

Only partly. A scan from outside can read a version the site chooses to show. It cannot see a backport, which runtime serves a virtual host, or whether workers restarted. Your host or server can show that.

Sources

  1. PHP security notices, 20, 21 and 23 October 2026 (php.net)Fixed releases per branch, end-of-life statement, source backports for 7.4, 8.0 and 8.1, affected SAPIs, interim mitigations.
  2. GHSA-w8hw-w9fx-j79w: CVE-2026-109618 (php/php-src advisory)Affected below 8.2.35, 8.3.36, 8.4.27 and 8.5.12. CVSS v4 9.2.
  3. GHSA-6wmf-4rv5-p3rp: CVE-2026-109619 (php/php-src advisory)Same affected and patched versions. CVSS v4 9.2.
  4. PHP 8 changelog (php.net)8.5.12 and 8.4.27 entries dated 22 October 2026 name both advisories. We did not read the 8.3.36 and 8.2.35 entries.
  5. Canonical: PHP2Shell vulnerability fixes available (Ubuntu blog, 21 October 2026)Fixed package version for each Ubuntu release, including 22.04's PHP 8.1 backport.
  6. Debian security tracker: CVE-2026-109618
  7. Red Hat CVE page: CVE-2026-109618At our check on 24 October 2026 it listed no errata and pointed to bulletin RHSB-2026-013, which is the newer notice.
  8. Red Hat security bulletin RHSB-2026-013Last updated 23 October 2026, 13:15, as shown on the page. Says some updates are already available and additional updates are in progress. Lists no fixed package versions.
  9. CloudLinux: fixed ea-php and alt-php packagesVendor-claimed. Fixed builds keep the old version number until the php.net-numbered builds arrive.
  10. Heroku changelog: PHP runtime builds with the PHP2Shell fixes
  11. UK NCSC: critical security issue affecting PHP
  12. watchTowr: CVE-2026-109618 FAQResearcher's reading of older branches. Vendor-authored.
  13. Amazon Threat Intelligence: PHP2Shell attempts seen in MadPot honeypots (AWS Security Blog, 21 October 2026)Vendor telemetry. AWS says it is unclear whether the attempts would have worked on real systems.

Facts on this page are dated and point at the primary source next to them. If a vendor status changes after the date shown, the vendor's page wins; tell us at support@run.cloud and we will update it.