RESPONSE REFERENCE · 21 OCTOBER 2026

Update PHP.
Verify the running workers.

Two request lifecycle vulnerabilities can allow unauthenticated remote code execution. All PHP installations serving web requests need attention.

Only an update is a complete solution. The mitigations below reduce specific attack paths. They do not make an affected installation safe.

Start with the patch

PHP’s advisory identifies PHP-FPM, Apache with mod_php, php-cgi, FrankenPHP, and LiteSpeed as in scope. It describes the highest risk for mod_php, including a demonstrated attack before application code runs.

FIXED UPSTREAM8.2.35
FIXED UPSTREAM8.3.36
FIXED UPSTREAM8.4.27
FIXED UPSTREAM8.5.12

Distribution packages may carry backported fixes without matching an upstream version. Verify the exact package, release, and vendor advisory. PHP 8.1 and older are no longer supported by the PHP project; use a confirmed vendor fix or upgrade. A newer-looking version string alone is not proof.

Update every installation and restart every affected worker. A fixed file on disk does not establish that an existing worker loaded it. Inventory may miss containers, custom bundles, and unexamined paths.

Understand the two failure paths

CVE-2026-109618 · Out-of-memory corruption
Interrupted initialization can leave request data in an invalid state that cleanup later treats as valid. Read the PHP technical advisory ↗
CVE-2026-109619 · Stale global state
Request-owned state can outlive its backing memory and be reused by a later request in the same worker. Read the PHP technical advisory ↗

If you cannot patch immediately

Reduce exposure at the service boundary

Apply a low post_max_size: the advisory suggests 8M without uploads or 32M where uploads are required. Keep upload_max_filesize below it. Enforce decoded request size, field count, multipart part count, header count, and nesting limits at the web server or proxy, including requests without a usable Content-Length.

The advisory also describes memory_limit=-1, enforced where applications cannot override it. This removes the controllable PHP limit failure, but an underlying allocation failure can still trigger the vulnerability. It also changes availability risk. This tool does not enable it automatically.

Container or cgroup limits provide an availability boundary, preferably killing only the affected worker. Do not substitute RLIMIT_AS or RLIMIT_DATA, which can cause the vulnerable allocation failure. Isolation and request limits remain defense in depth.

Automation has a qualification boundary. Supported adapters can perform selected updates, startup mitigations and restarts. Unknown ownership or configuration mappings return manual action. Local fixtures do not replace disposable-OS and RMM pilots. Inspect the generated script, pilot it on representative hosts, and verify the resulting service configuration.

Source: PHP security advisory, 21 October 2026. This independent tool is not affiliated with the PHP project.

Configure a discovery script →