What happened. On October 21 the PHP Foundation released 8.5.12, 8.4.27, 8.3.36 and 8.2.35 to fix CVE-2026-109618 and CVE-2026-109619, both unauthenticated remote code execution bugs. The Foundation puts the real CVSS at 9.2 (a leaked early listing said 10.0). Cloudflare says PHP runs on almost 70% of websites. AWS's bulletin lists PHP 5.4 through 8.1 as end of life with no planned fix.
Mechanism. Both bugs live in memory management and error handling, code that nearly every request touches.
- CVE-2026-109618: if a request hits memory_limit at the wrong moment, PHP leaves partly initialized internal data that later gets treated as valid. On Apache with mod_php this can fire before any application code runs. The Foundation says RCE was demonstrated with default settings.
- CVE-2026-109619: a fatal error at the wrong point leaves internal state pointing at memory from a previous request, so a later request on the same worker uses freed memory.
- Calif's write-up says PHP-FPM is also exploitable, but the fatal must happen after startup and the app must decode something, for example session_start(), unserialize() or WordPress's maybe_unserialize(), with session upload progress enabled. Calif lists pre-auth RCE against WordPress, Drupal, Joomla, MediaWiki, Roundcube, Magento, phpMyAdmin, Nextcloud, Laravel, Symfony and WHMCS.
Timeline.
- 2024: an OSTIF/Quarkslab audit flagged an out-of-memory exploit as theoretical. The security team then weighed competing fixes for months.
- Aug 11, 2026: Calif and OpenAI independently reported the same root cause. Wiz followed on Aug 24.
- Oct 20: CVE ids leaked with the wrong date and score. Calif accidentally published a PoC video. The Foundation moved the release up a day.
- Oct 21: Chainguard published fixed images more than six hours early. Cloudflare says it saw attack traffic and payload tweaks to evade its rules. The Foundation says it had found no functional exploits at release time. Those two statements are in tension, and I would trust the one that comes from observed traffic.
What is disputed. One HN post (58 points, 10 comments) argues the public PoCs fail on a vanilla PHP and depend on a separate local-file-inclusion bug. Calif claims default-config exploitation. I could not run either, so treat "easy to exploit" as unverified in both directions. Do not use that post as a reason to wait.
Unknown. How many appliances embed PHP (commenters name Palo Alto Panorama, NetScaler and Aviatrix, unverified), and whether the EOL branches will get any backport.
Assessment. The Foundation's own post calls the delay "a structural failure": the OOM problem sat unfixed for roughly two years. Disclosure also leaked at three separate points. Expect a long tail of unpatched hosts. Cloudflare's WAF rules buy time but are not a fix; a top commenter in r/cybersecurity (sha256md5) notes they are easily bypassed in many apps.
What to do.
- Upgrade to 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35, or your distro's backport. Rebuild container images.
- Stopgap if you cannot patch: session.upload_progress.enabled=0 and memory_limit=-1 (the latter raises memory-exhaustion risk). AWS also suggests blocking request bodies over 8 KB via the CRS SizeRestrictions_BODY rule.
- Inventory what embeds PHP: Nextcloud, OPNsense, vendor admin panels.
- Sources: PHP Foundation, Calif, Cloudflare, AWS 2026-143. Discussion: HN 657 pts / 326 comments, r/selfhosted 776 / 213, r/cybersecurity 643 / 60.