Mitigation is in progress, so this quick post was generated with help of Claude Code CLI.
If you run anything on PHP (WordPress, Nextcloud, Matomo, phpMyAdmin, a cPanel box, that old homelab dashboard you forgot about), today is patch day.
Two critical flaws in PHP core, CVE-2026-109618 and CVE-2026-109619 (CVSS v4.0 9.2), leaked ahead of coordinated disclosure. They can allow remote code execution, possibly without authentication. PHP moved its emergency release up to Wednesday 21 Oct, 14:00 UTC (10:00 AM ET) and has said it may ship earlier if exploitation starts.
- watchTowr says it reproduced CVE-2026-109618.
- A public “PoC” is circulating, and it is disputed. Please don’t run random exploit code from GitHub or X on your own boxes.
- No confirmed in-the-wild exploitation yet, but Sansec expects mass scanning within ~15 minutes of the release.
Only supported branches get a fix! = PHP 8.2, 8.3, 8.4, 8.5.
8.1, 8.0, 7.x and 5.x are end-of-life and get nothing. If you’re on one of those, upgrading is the fix. Your distro or panel vendor (Remi, CloudLinux/TuxCare, Ubuntu ESM, etc.) may backport on its own schedule, but don’t count on it.
The php.ini stopgap (and why it’s not enough)
The widely shared mitigation is:
session.upload_progress.enabled = 0
session.use_strict_mode = 1
It’s harmless for most sites, so it’s worth applying. But GMO Flatt expects bypasses, and a PHP core developer put it bluntly: “the only mitigation is patching/upgrading PHP.” Also check that it applies to the SAPI actually serving traffic (FPM/mod_php), not just the CLI:
php-fpm -i | grep -E 'upload_progress.enabled|use_strict_mode'
What I did late last night
I manage a few dozen clients servers that this would affect, so last night looked like this:
- Applied the stopgap on every PHP server (one Termius snippet: drop the ini file, reload FPM/Apache, print versions)
- Inventoried PHP versions everywhere and found the EOL stragglers (7.2, 7.4, 8.1)
- Moved what I could to 8.3 overnight; scheduled the rest
- Set a script to poll php.net’s release JSON plus the package repos every 15 min overnight and notify me if there was an early release.
Today at release: dnf/yum/apt update the PHP packages, reload FPM, confirm php -v everywhere, then watch for PHP workers spawning shells.
Quick checklist
-
php -von every box, and note any EOL versions - Apply the stopgap now
- Patch as soon as packages land
- Plan upgrades for anything older than 8.2
- Watch logs for php-fpm / httpd spawning
sh,curl,wget, etc.
Reading
- The Hacker News: PHP2Shell: What Actually Protects You Before the 14:00 UTC PHP RCE Patch, and What Doesn't
- SecurityWeek: PHP2Shell: Mass Exploitation Looms for Leaked Critical PHP Flaws - SecurityWeek
- Huntress: https://www.huntress.com/blog/php2shell-leaked-critical-php-vulnerabilities
What PHP versions are you still finding in the wild?
