PHP2Shell — What It Is and How to Fix It

Two remote code execution flaws in PHP, patched on 21 October 2026. Fixed in 8.5.12, 8.4.27, 8.3.36 and 8.2.35.

Free. No sign-up, no email. Public response headers only.

The two vulnerabilities

CVETechnical pathSeverity
CVE-2026-109618Memory corruption reachable through request body handling, triggered when the handler runs out of memoryCVSSv4 9.2 Critical
CVE-2026-109619Stale global state that survives across requests instead of being resetCVSSv4 9.2 Critical

Both allow remote code execution through ordinary web request handling. Both were patched by the PHP project on 21 October 2026. "PHP2Shell" is the community name for the pair, not an official product name.

Which PHP setups are affected

In short: any PHP installation that handles web requests. A CLI-only PHP build with no web SAPI is not exposed through this path.

Fixed releases

BranchFixed inNotes
8.68.6.0 RC4RC1 to RC3 are affected
8.58.5.12
8.48.4.27
8.38.3.36Recommended upgrade target from 8.1 and older
8.28.2.35Branch reaches end of life on 31 December 2026
8.1 and oldernoneNo official fix; some distributions ship backported builds

PHP 8.6 releases before RC4 are affected. PHP 8.1 and earlier will not receive an official fix; the PHP project only published source-level backports for those branches, so your practical options are upgrading to 8.3 or later, or asking your host or an LTS vendor for a patched build.

How to tell whether a site is affected

From the outside you can only read what the server chooses to advertise, which is why the check above often ends in "hidden". From the server you can settle it in one command:

php -v
# and confirm the SAPI actually serving requests:
php-fpm -i | grep -i "server api"
Subject: Please confirm the PHP version and patch level for this domain

Hello,

Please confirm which PHP version and which SAPI (PHP-FPM, mod_php, php-cgi, LiteSpeed or FrankenPHP) this domain uses, and whether it has been updated to the fixed release for its branch (8.5.12 / 8.4.27 / 8.3.36 / 8.2.35) per the security release published on 21 October 2026 covering CVE-2026-109618 and CVE-2026-109619.

If the current branch receives no official fix, please let me know the upgrade path.

If you cannot upgrade yet

Read this as partial mitigation, not as a fix. A site that only disables upload progress is still exposed to one of the two CVEs.

Timeline

Frequently asked

Is PHP 8.1 affected?

Yes, and it receives no official fix. Upgrade to a supported branch.

Is 8.2.35 a long-term answer?

It closes these two flaws, but the branch is end-of-life on 31 December 2026. Treat it as a stopgap.

Do you publish exploit code?

No. This site detects and explains exposure only. We deliberately do not host or link working exploits.

Are the two CVEs the same flaw?

No. They are two separate paths — memory corruption and stale global state — that were patched in the same release.