
Two critical RCEs in PHP core
Cisco Talos advisory on "php2shell", two unauthenticated RCE flaws in PHP core, CVE-2026-109618 and CVE-2026-109619 (CVSS v4.0 9.2), affecting every build since PHP 5.4. One flaw is an out-of-memory handling bug leaving request data partly initialized; the other reuses stale state after free. PHP 8.1 and older get no patch (about 50% of PHP systems). Includes ini-level mitigations and Snort SIDs 67359 and 67360. No exploitation seen as of 21 October 2026.
What it is
"php2shell" is a pair of unauthenticated remote code execution flaws in PHP core, CVE-2026-109618 and CVE-2026-109619, both CVSS v4.0 9.2. A plain HTTP request triggers them, and they are exploitable before any application code runs. Cisco Talos says AI-related tooling played a key role in their discovery. As of 14:00 UTC on 21 October 2026, Talos had not seen exploitation in the wild.
How it works
- CVE-2026-109618: out-of-memory handling interrupts PHP while internal request data is only partly initialized. Request cleanup then treats invalid data as valid.
- CVE-2026-109619: a stale internal state is reused after its backing memory was freed, before normal initialization resets it.
The page gives no further exploit detail. It names fatal errors, execution timeouts, session upload progress, and (on PHP 8.5) fatal error backtraces as paths that reach the bug.
Preconditions / Affected
Every PHP build since 5.4 is affected. PHP 8.1 and older are end of life and get no patch. PHP 8.2 security support ends 31 December 2026, so Talos advises moving to 8.2 or later now. Talos estimates about 50% of PHP systems will not receive a patch. Frameworks and hosting stacks named as potentially exposed: WordPress, Drupal, Magento, Shopware, WooCommerce, Laravel, and PHP sites on cPanel or Plesk. The page does not list fixed version numbers.
What to do
Upgrading is the only complete fix. Talos says no temporary control gives comprehensive protection. Snort SIDs 67359 and 67360 cover both flaws, and they are in the free Community Ruleset. PHP advises these measures to reduce exposure on specific paths:
- Set
memory_limit=-1, ideally non-overridable (php_admin_valuein the FPM pool or Apache config). Check that no pool, directory or app setting restores a finite limit. - Set a low
post_max_size:8Mwithout file uploads,32Mwith them. Keepupload_max_filesizebelow it. Also limit decoded request size, field count, multipart part count, header count and nesting depth at the web server or proxy, including requests with no usable Content-Length. - Use a container or cgroup limit as an availability boundary, preferably one that kills only the affected worker.
- Set
session.upload_progress.enabled=0and restart every worker. Apply it in php.ini, an FPM pool or server config, not viaini_set()or.user.ini. - On PHP 8.5, set
fatal_error_backtraces=0and restart every worker. - Remove invalid or deprecated per-request settings that emit diagnostics before initialization.
- Fix attacker-reachable fatal errors and execution timeouts, including those in callbacks, upload or import handling, and cleanup.
Caveats
memory_limit=-1removes only the controllable PHP memory-limit failure. An underlying allocation failure can still reach the vulnerable path.- Do not use
RLIMIT_ASorRLIMIT_DATAas a substitute for the cgroup limit, because they can cause the vulnerable allocation failure. - Disabling session upload progress blocks the confirmed session paths but not other variants. The
fatal_error_backtraces=0setting blocks only the confirmed backtrace path. - Hiding diagnostics with
error_reporting,display_errorsor@does not help. - Talos expects the impact to cascade into downstream platforms and compares it to the waves of exploitation after Log4J. It says the full impact will take time to assess.
CVEs named here
Technologies named here
- PHP 8.1 and older
- Snort Community Ruleset
- PHP 8.2
- WordPress
- Drupal
- Magento
- Shopware
- WooCommerce
- Laravel
- PHP sites hosted through cPanel or Plesk
- PHP 8.5
- PHP
- CVSS
- Cisco Talos
Techniques named here
- Memory-safety flaws
- Attack paths named by PHP
Related in AppSec
Flowise MCP Security Bypass Enables RCE
Inside an Oracle Database SQL Injection Attack | Huntress
OASIS
