What happened. On October 21 the PHP project released 8.5.12, 8.4.27, 8.3.36 and 8.2.35 to fix CVE-2026-109618 and CVE-2026-109619 (PHP Foundation, post). Both are rated CVSS 9.2. The 10.0 figure circulating before release was wrong, according to the Foundation. Wiz, which found one of the bugs and named the set "PHP2Shell", says nearly every PHP version back to 5.4 is affected (Wiz). A commenter on r/cybersecurity says branches 5 through 8.1 will not get patches; I did not find that in the sources I read, so treat it as unverified.
Mechanism. Both bugs are memory-safety flaws that trigger when a request dies with a fatal error, typically out-of-memory, and leaves internal state half-initialized or pointing at freed memory. A later request on the same worker then uses that state. Wiz lists four concrete bugs: a use-after-free in the upload-progress unserializer, a stale session-ID pointer that leaks process memory into a PHPSESSID cookie, a use-after-free through a stale fatal-error backtrace, and an OPcache type confusion after an allocation failure. The PHP Foundation says unauthenticated RCE worked against Apache with mod_php on default settings, and also against PHP-FPM through application code paths. Wiz says a Hello World app is enough, and that it demonstrated RCE on current WordPress, Drupal and Joomla container images.
Timeline (UTC). Wiz found its first bug Aug 19 and reported on Aug 24. Calif reported unconditional RCE on Aug 11 and OpenAI reported the same root cause the same day. On Oct 20 around 15:00 the CVE IDs leaked with a wrong severity and release time. The pre-announcement went out at 19:30 and moved the release up a day. Around 20:00 Calif mistakenly published a PoC video. Chainguard published fixed images at 07:41 on Oct 21, before the embargo lifted. Cloudflare had WAF rules live from 03:02 UTC, about nine hours before disclosure (Cloudflare).
What is still unknown. The PHP security team said it had found no functional exploits in circulating PoCs at release time. Wiz reports no confirmed in-the-wild exploitation. Cloudflare says attackers were already mutating payloads against its rules. Whether embedded devices (router UIs, appliances) are exposed is unanswered; one commenter asked specifically about Palo Alto management interfaces, and nobody with authority replied in the thread I read.
Assessment. The technical details matter less than the process signal. The Foundation credits AI-assisted audits (Claude Mythos scanning PHP early in 2026, OpenAI's tooling, Calif's work under a "Patch the Planet" program) and says report volume has risen. Wiz says the exploit chaining was done with frontier models. Expect more bugs of this age and depth to surface, and expect embargoes to leak more often as more parties hold the same findings. Patch windows are getting shorter than deployment cycles. A WAF buys hours, and Wiz itself says updating PHP is the only complete fix.
Discussion: HN PHP 8.2.35 (511 points, 216 comments); pre-announcement thread (1,436 points, 607 comments); Wiz on HN (299 points, 83 comments); r/selfhosted (620 points, 171 comments).