Marius PodarOn 21 October 2026 the PHP project released PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35 to fix two critical...
On 21 October 2026 the PHP project released PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35 to fix two critical vulnerabilities, CVE-2026-109618 and CVE-2026-109619. Both can lead to unauthenticated remote code execution. They carry a CVSS v4.0 score of 9.2 (Critical) from the PHP Group, with attack complexity listed as High, and CISA added both to its Known Exploited Vulnerabilities catalog on 26 October 2026. The advisories do not state whether exploit code is publicly available.
CVE-2026-109618 (RCE via OOM corruption). PHP uses longjmp() to abort a request when it runs out of memory. If that happens while internal request data is only partly initialized, the cleanup at the end of the request can treat invalid data as valid. The advisory lists several ways to exhaust memory with a multipart request that still looks within PHP's limits.
CVE-2026-109619 (RCE via stale global state). Some internal state points to memory owned by a single request. If a fatal error, such as a timeout, interrupts the request before that state is reset, a later request handled by the same worker can read freed memory (a use-after-free). The attack needs two requests: one leaves the stale state and the next uses it.
Every release before 8.5.12, 8.4.27, 8.3.36 and 8.2.35 in their branches. According to the PHP announcement, any installation serving web requests is in scope: PHP-FPM, Apache with mod_php, php-cgi, FrankenPHP and LiteSpeed. The project considers the risk highest for mod_php, where an unauthenticated attack has been demonstrated that runs before any application code. For CVE-2026-109618 a complete FPM exploit has not been demonstrated, while for CVE-2026-109619 the advisory reports a validated attack against both mod_php and FPM.
PHP 8.1 and older no longer receive project updates. The security team prepared minimal source backports for 7.4, 8.0 and 8.1, and some distributions and LTS vendors provide their own fixes.
php -v
php-fpm -v # the binary name varies: php-fpm8.3, php83-fpm...
The command-line binary can differ from the one serving your site. To see the web version, use a temporary page that prints it, and delete it afterwards:
<?php echo PHP_VERSION;
If PHP comes from a distribution or LTS vendor, check their advisory for the fixed package: a backported fix does not always change the version number.
Update to 8.5.12, 8.4.27, 8.3.36 or 8.2.35, or a later release of the same branch. Source and Windows binaries are on php.net; on Linux, use your distribution's updates. Then restart every PHP worker (the FPM service, or Apache with mod_php). Both advisories say that updating is the only complete mitigation.
These measures only reduce exposure to specific attack paths; they do not make an installation safe. The same checklist is in my original article in Spanish.
For CVE-2026-109618:
memory_limit=-1 administratively, so the application cannot change it. It removes the controllable limit used by the confirmed attack, but it is not complete.post_max_size to 8M if the application needs no uploads, or 32M if it does, and keep upload_max_filesize below it.Content-Length.RLIMIT_AS or RLIMIT_DATA: they can trigger the vulnerable failure.For CVE-2026-109619:
session.upload_progress.enabled=0 in php.ini, the FPM pool or the server configuration, and restart every worker. Do not rely on ini_set() or FPM's .user.ini. It does not cover other variants.fatal_error_backtraces=0 and restart.error_reporting, display_errors or @ does not help.On 23 October the project also recommended session.upload_progress.enabled=0 until the next bugfix release, for a separate and unlikely vector (CVE-2026-115560).
PHP announcement, GHSA-w8hw-w9fx-j79w, GHSA-6wmf-4rv5-p3rp, NVD CVE-2026-109618, NVD CVE-2026-109619 and the CISA KEV catalog.
I wrote a more detailed version in Spanish here: PHP: vulnerabilidades crÃticas RCE (CVE-2026-109618 y 109619)