CVE-2026-109618 and CVE-2026-109619 explained for WordPress users
Short answer
Both are critical flaws in PHP itself, rated 9.2 out of 10, fixed on 21 October 2026 in PHP 8.2.35, 8.3.36, 8.4.27 and 8.5.12. CVE-2026-109618 (“RCE via OOM corruption”): when PHP runs out of memory at the wrong moment, a request can be left half set up, and the cleanup afterwards trusts invalid data. CVE-2026-109619 (“RCE via stale global state”): data from one request can survive into the next request on the same PHP worker after its memory was freed. Both can let an attacker who isn’t logged in run code on the server. For WordPress, the answer is the same as for any PHP site: update PHP.
The two flaws, in php.net’s words
From the security advisory of 21 October 2026 (php.net):
- CVE-2026-109618, RCE via OOM corruption: “out-of-memory handling can interrupt PHP while internal request data is only partially initialized. Request cleanup may then treat the invalid data as valid.”
- CVE-2026-109619, RCE via stale global state: “request-owned internal state can survive after its backing memory has been freed. A later request handled by the same worker may use that stale state before normal initialization resets it.”
Both GitHub advisories rate them critical, 9.2 on the CVSS v4 scale (CVE-2026-109618, CVE-2026-109619).
In plain words
PHP handles each visit to your site as a request, often in a long-running worker process that serves many requests one after another.
- The first flaw concerns what happens when PHP hits its memory limit in the middle of setting up a request. It stops abruptly, and the clean-up that follows can work on data that was never properly filled in. An attacker who can make that happen on purpose, with carefully shaped requests, can turn it into running their own code.
- The second flaw concerns leftovers: a piece of state from one request that should have been cleared stays behind, pointing to memory that has already been released. The next request on the same worker can use it before PHP resets it.
Neither needs a login, and neither depends on WordPress’s code.
Who is most at risk
php.net: “Who is at risk: all PHP installations serving web requests, including PHP-FPM, Apache with mod_php, php-cgi, FrankenPHP and LiteSpeed. We consider the risk highest for mod_php, with a demonstrated exploit where an unauthenticated request can trigger the attack before any application code runs.” (php.net)
How to see which one your host uses: mod_php or PHP-FPM?
What it means for a WordPress site
- The fix is a PHP update on the server. No WordPress release, plugin or theme update fixes it.
- Your plugins aren’t affected by the patch: it keeps the same PHP series (why).
- Sites on PHP 8.1 or older have no official fix, and need to move up: how to upgrade safely.
What to do, step by step: PHP2Shell: what WordPress site owners should do now. How to read advisories like these yourself: how to read a PHP security advisory.
Key takeaways
- CVE-2026-109618: out-of-memory handling can leave a request half initialised; cleanup then uses invalid data.
- CVE-2026-109619: state from a previous request can survive in a worker after its memory was freed.
- Both: critical, 9.2 on the CVSS v4 scale, unauthenticated remote code execution.
- Neither is in WordPress, a plugin or a theme: PHP itself must be updated.
- Fixed in 8.2.35, 8.3.36, 8.4.27 and 8.5.12; no official fix for 8.1 and older.
Frequently asked questions
What does “unauthenticated remote code execution” mean?
That someone who isn’t logged in to your site can, by sending crafted requests, make the server run code of their choice, with the permissions of the web server’s PHP process.
Why is it called PHP2Shell?
It’s a nickname used by security researchers and the press, not by the PHP project, whose advisories use the CVE numbers.
Can a WordPress security plugin protect me?
Not reliably: php.net says that for the most exposed setup an unauthenticated request can trigger the attack before any application code runs, and WordPress and its plugins are application code. Update PHP.
Check your own site before you upgrade
CompatNav is a free WordPress plugin. It reads the code of your plugins and themes on your own server and tells you, in plain words, what will break and what will only show notices on the PHP version you choose. It never changes your code. It can’t see problems that only appear while code runs with real data, so a quick check of your site after the upgrade still matters.
Sources
- php.net: Security advisory, 21 October 2026
- GitHub: GHSA-w8hw-w9fx-j79w (CVE-2026-109618)
- GitHub: GHSA-6wmf-4rv5-p3rp (CVE-2026-109619)
About the code examples: each output is the real output of the code shown, run with the official PHP builds, without a php.ini, with all errors reported and displayed. Only the file path was replaced by a neutral server path.