Two Decade-Old Memory Bugs, Not a New Design Flaw
PHP2Shell is not one bug but two: CVE-2026-109618, a use-after-free in the upload-progress unserializer, and CVE-2026-109619, a use-after-free tied to OPcache type confusion during fatal-error backtrace generation. Both trace to code written in PHP 5.4.0, meaning the memory-safety flaw sat in one of the internet's most-used language runtimes for roughly a decade before anyone - human or machine - found it [1]. Both carry a CVSS v4.0 score of 9.2, reflecting that a single unauthenticated HTTP request can trigger them before any application code runs, hitting PHP-FPM, Apache mod_php, php-cgi, FrankenPHP, and LiteSpeed deployments alike [4].
What makes the bug class especially dangerous is what happens after PHP's engine is left in a corrupted state by an abnormal request termination - say, an out-of-memory fatal error. Stale pointers and cache entries that should have been cleared can instead be reused, and researchers have compared the resulting memory-disclosure potential, which can leak session cookies out of freed worker memory, to Heartbleed [3]. That comparison matters less for its name-recognition shock value than for what it implies operationally: like Heartbleed, this isn't a bug you can fully neutralize with a web application firewall, because the vulnerable code path executes inside PHP itself, ahead of any filtering logic.



