Technical briefing · 23 Oct 2026

php2shell WordPress vulnerability — CVE-2026-109618 & CVE-2026-109619

What happened, who found it, why updating WordPress does not fix it, and how to verify your PHP runtime.

Incident timeline

WhenWhat
Early Oct 2026Coordinated research and mitigations underway (Cloudflare reports WAF work ahead of public disclosure with PHP Foundation, OpenAI, and Wiz).
20 Oct 2026CVE IDs begin circulating early; PHP project brings pre-announcement forward and moves the release from 22 Oct 14:00 UTC to 21 Oct 14:00 UTC (PHP Foundation).
21 Oct 2026Emergency releases: PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35. CISA urges immediate patching. Wordfence briefly took services offline while applying mitigations.
After disclosureAgencies and vendors publish advisories; PoC and scanning activity reported by multiple national CERTs. Treat unpatched internet-facing PHP as urgent.

Primary sources: PHP Foundation, CISA, Cloudflare.

CVE-2026-109618 vs CVE-2026-109619

CVEFailure modeWhy WordPress updates fail
CVE-2026-109618Out-of-memory (OOM) corruption in PHP memory management / error handling — unauthenticated RCE demonstrated, including paths that can run before application code on mod_php.The bug is in the PHP binary. Application firewalls and plugin updates cannot replace a patched runtime. Confirm the PHP that serves HTTP — not only CLI — and restart workers after upgrade.
CVE-2026-109619Stale global / worker state across requests (use-after-free class) — later requests on the same worker can misuse freed memory for disclosure or RCE.

PHP powers a majority of websites worldwide; WordPress and WooCommerce sit entirely on PHP. A large share of internet-facing PHP still runs unsupported branches (8.1 and older) that need vendor backports or an upgrade path — which is why this incident hits WordPress operators especially hard.

Verification checklist for WordPress owners

  1. Check the PHP version WordPress sees. In wp-admin open Tools → Site Health → Info → Server and note the PHP version. Compare it to CLI php -v on the same host if you have SSH—they can differ when multiple PHP builds are installed.
  2. Ask your host the exact patch question. Send: “Is the PHP service serving my site patched for CVE-2026-109618 and CVE-2026-109619 (PHP 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 or a vendor backport), and have PHP-FPM/Apache workers been restarted or containers rebuilt?”
  3. If you are on End-of-Life PHP 7.4, 8.0, or 8.1. The PHP project does not ship full security releases for those branches. Ask for a distribution backport, plan an upgrade to a patched 8.2+ branch, or triage a migration off self-hosted PHP. Expect legacy themes and plugins to break on a hard jump to 8.3/8.4.
  4. After patching, verify workers and logs. Confirm the live web PHP build again in Site Health. Restart workers if the host has not. Review recent web-server error logs for unexpected memory-limit fatals or anomalous PHP worker behavior while you harden.

What to do next

Need the site stabilized on patched PHP now? WordPress PHP emergency response. Ready to leave self-hosted PHP permanently? WordPress to Shopify or WooCommerce to Shopify.

Emergency PHP rescueMigrate to ShopifyWooCommerce path
FAQ

Answers engines and founders both need.

php2shell is the informal name for two critical PHP remote code execution flaws—CVE-2026-109618 and CVE-2026-109619—disclosed with emergency patches on 21 October 2026. Both are rated CVSS v4.0 9.2. They affect PHP installations that serve web requests, including WordPress hosts.