Two critical remote-code-execution bugs, CVE-2026-109618 and CVE-2026-109619, affect every PHP release from 5.4 up to 8.5.11. Enter a website URL or a server IP, or paste the version from php -v, and see whether it is at or above the fixed release.
Fixed releases: 8.5.12 · 8.4.27 · 8.3.36 · 8.2.35. Older branches get no release. After updating, restart PHP-FPM / Apache — running workers keep the vulnerable code until they do. Need hands? LB Clouds patches and hardens servers in Lebanon and the region.
On 20 October 2026 the details of two unreleased PHP core vulnerabilities leaked ahead of a coordinated disclosure. The PHP project shipped the fixes the next day, 21 October, as a security release across all four supported branches. Both bugs are rated CVSS 4.0 9.2 (Critical) and both allow unauthenticated remote code execution on a server that merely serves web requests — no application bug, no login, no plugin required.
| CVE | Root cause | Advisory |
|---|---|---|
| CVE-2026-109618 | Out-of-memory during request setup is handled with longjmp(), leaving half-initialised request memory that shutdown code later treats as valid. Triggerable with a crafted multipart POST inside normal size limits. | GHSA-w8hw-w9fx-j79w |
| CVE-2026-109619 | Request-owned global state survives after its memory is freed, so a later request on the same worker reads stale data. Session upload progress is one confirmed path. | GHSA-6wmf-4rv5-p3rp |
Every way of serving PHP over HTTP is in scope: PHP-FPM, Apache with mod_php, php-cgi, FrankenPHP and LiteSpeed. The PHP team demonstrated a full exploit against mod_php with default settings, firing before any application code runs. Cloudflare has already reported attack traffic aimed at these bugs, and CISA has issued an alert.
| Branch | Vulnerable | Fixed in | Status |
|---|---|---|---|
| 8.5 | 8.5.0 – 8.5.11 | 8.5.12 | Active support |
| 8.4 | 8.4.0 – 8.4.26 | 8.4.27 | Active support |
| 8.3 | 8.3.0 – 8.3.35 | 8.3.36 | Security fixes until 31 Dec 2027 |
| 8.2 | 8.2.0 – 8.2.34 | 8.2.35 | Security fixes until 31 Dec 2026 |
| 7.4 · 8.0 · 8.1 | all | source backports only | End of life. Minimal patches for building from source; some LTS vendors ship packages. |
| 5.4 – 7.3 | all | none | End of life. CISA: take these systems offline until upgraded. |
PHP 8.6 release candidates were not patched at release time. If you test an 8.6 RC on anything reachable from the internet, treat it as vulnerable.
The checker fetches the URL once, like a browser would, and reads the X-Powered-By and Server headers. If they carry a PHP version it is compared with the table above. If the version is hidden, the page body is fingerprinted for WordPress, Joomla, Drupal, Laravel and similar so you at least know PHP is there. That is the whole method: no exploit payload, no malformed multipart request, nothing that could crash a worker.
Given a bare IP address (IPv4 or IPv6, optional port), the checker goes to the origin directly: plain http first, then https with certificate validation skipped, since an IP never has a matching certificate. That bypasses whatever CDN or WAF sits in front of the domain and shows what the server itself advertises. Private and loopback ranges are refused.
Three limits are worth knowing:
The authoritative answer comes from the machine. Any of these takes a second:
A server frequently runs more than one PHP: the CLI, one or more FPM pools, a Plesk or cPanel multi-PHP tree, Docker images. Each one has to be at or above the fixed release.
| Platform | Command / action |
|---|---|
| Debian / Ubuntu | sudo apt update && sudo apt install --only-upgrade 'php8.*' && sudo systemctl restart php8.3-fpm apache2 |
| Ubuntu with ondrej PPA | sudo apt update && sudo apt upgrade && sudo systemctl restart 'php*-fpm' |
| RHEL / Alma / Rocky | sudo dnf update php\* && sudo systemctl restart php-fpm httpd |
| cPanel / WHM | WHM › EasyApache 4 › update, or /scripts/upcp --force; then restart Apache and PHP-FPM. |
| Plesk | Tools & Settings › Updates › install PHP updates (fixed packages were published for 8.2–8.5). |
| Docker | Rebuild from php:8.3.36-fpm (or 8.2.35 / 8.4.27 / 8.5.12) and redeploy. Pinned older tags stay vulnerable. |
| Shared hosting | Change the PHP version in the hosting panel to one at or above the fixed release, then ask the host to confirm the build date. SiteGround, GoDaddy and others patched fleet-wide on 21 October. |
Restart everything that runs PHP after the update: PHP-FPM pools, Apache (mod_php), LiteSpeed, FrankenPHP, queue workers, Supervisor-managed daemons. A worker started before the update is still the old binary.
The PHP project is explicit that these reduce exposure but do not make an installation safe. Set them where applications cannot override them (php_admin_value in the FPM pool or Apache config, never ini_set() or .user.ini), then restart every worker:
Sources: php.net security announcement, GitHub advisories GHSA-w8hw-w9fx-j79w and GHSA-6wmf-4rv5-p3rp, CISA alert of 21 Oct 2026. Fixed-version table last verified 21 October 2026.