Patch release · PHP2Shell / PHP · 5 sourced facts

PHP ships fixes for two critical flaws

PHP 8.2.35, 8.3.36, 8.4.27 and 8.5.12 fix CVE-2026-109618 and CVE-2026-109619. The flaws sit in the runtime, so updating a CMS or plugin is not enough.

Published21 October 2026 Event date21 October 2026 Last substantive update22 October 2026, 16:45 UTC Reading time2 min

Key facts

Each fact is linked to the source that supports it.
  1. PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35 fix two critical vulnerabilities that can allow unauthenticated remote code execution. PHP Group
  2. The two advisories publish CVSS v4.0 scores of 9.2. NVD separately lists CVSS v3.1 scores of 9.8; those are different scoring systems and should not be averaged or mixed. GitHub / PHP Security Team NIST NVD
  3. PHP says all installations serving web requests are at risk, including PHP-FPM, Apache mod_php, php-cgi, FrankenPHP and LiteSpeed. It rates mod_php highest risk. PHP Group CERT-EU
  4. PHP 8.1 and older receive no upstream release. Minimal source backports exist for 7.4, 8.0 and 8.1, and distributions or LTS vendors may backport the fix. PHP Group CERT-EU
  5. PHP states that updating is the only complete mitigation. The interim configuration controls reduce specific attack paths but do not make an installation safe. PHP Group GitHub / PHP Security Team

The four releases

The PHP project published four security releases on 21 October 2026. They fix two memory-safety defects in the PHP runtime, tracked as CVE-2026-109618 and CVE-2026-109619 and collectively called PHP2Shell.

This is not a CMS, framework or plugin update. Both advisories describe flaws below the application layer. A fully patched WordPress, Drupal or Laravel installation still runs on an exposed PHP binary if the runtime has not been updated.

The affected surface is every PHP installation serving web requests. PHP names PHP-FPM, Apache mod_php, php-cgi, FrankenPHP and LiteSpeed, and singles out mod_php because the demonstrated attack can run before application code executes. PHP 8.1 and older have no upstream fix; the project published minimal source backports for 7.4, 8.0 and 8.1, while distributions and LTS vendors may ship their own backports.

What the patch does not cover

Patch status and evidence status are separate. A fixed release exists, which is a strong, verifiable fact. It does not mean any particular host has installed it, restarted its workers or rebuilt its container images. Those are separate checks, and the verification guide walks through them.

The two flaws are also not interchangeable. CVE-2026-109618 is an out-of-memory handling defect; CVE-2026-109619 is a stale-global-state use-after-free. They were disclosed together, but they have different trigger conditions and different interim controls. This site keeps them as separate vulnerability records rather than collapsing them into one severity label.

There is no complete configuration workaround. PHP’s own advisory says updating is the only complete mitigation. The interim settings are worth applying when an update cannot happen immediately, but they buy time rather than closing the issue. A WAF can also buy time; Cloudflare deployed rules roughly nine hours before disclosure and explicitly told customers to patch anyway.

What to check first

Confirm the runtime, not just the command-line binary. A server can report one version through php -v and serve requests through a different FPM pool, container image or application bundle. Then confirm that every worker was restarted after the update. The remediation guide covers the official interim controls and their limits.

Sources for this page

Revision history

Time (UTC) Recorded change
22 October 2026, 16:45 UTC Expanded source links and added the distinction between PHP's CVSS v4.0 and NVD's CVSS v3.1 scores.
22 October 2026, 16:45 UTC Current published version.

This is an independent summary written by PHP2Shell Live. It is not a republished article and is not an official notice from PHP, any vendor or any agency. Read the editorial policy.

Search PHP2Shell Live

Type to search the local index Results stay in your browser
↑ ↓ move Enter open Esc close