Critical PHP vulnerabilities
PHP has released fixes for two critical remote code execution vulnerabilities. This post sets out what PHP has confirmed and what to do now.
PHP has released fixes for two critical remote code execution vulnerabilities. This post sets out what PHP has confirmed and what to do now.
Two critical PHP flaws can let an attacker run code on your servers, or read data from server memory, without logging in. PHP has released fixes, so update now.
As of Wednesday 21 October 2026, 15:30 BST, PHP has released fixed versions: 8.5.12, 8.4.27, 8.3.36 and 8.2.35. PHP says both vulnerabilities can allow unauthenticated remote code execution, and that updating is the only complete fix. We have not verified exploitation in the wild in the sources we reviewed. That is not evidence that systems are safe.
PHP has released security updates for two critical vulnerabilities, CVE-2026-109618 and CVE-2026-109619. Both are scored CVSS v4.0 9.2. PHP says they can allow unauthenticated remote code execution, which means an attacker could run their own code on a server running PHP without logging in. PHP also lists memory disclosure as a confirmed impact.
PHP’s advisory says all PHP installations serving web requests are at risk, including PHP-FPM, Apache with mod_php, php-cgi, FrankenPHP and LiteSpeed. PHP considers the risk highest for mod_php, where it has a demonstrated exploit in which an unauthenticated request triggers the attack before any application code runs. Update to PHP 8.5.12, 8.4.27, 8.3.36 or 8.2.35.
PHP released 8.5.12, 8.4.27, 8.3.36 and 8.2.35 on 21 October 2026. Each fixes both vulnerabilities..
PHP says there is no complete mitigation. Updating is the only safe choice.
Details of the vulnerabilities reportedly leaked online on 20 October, before PHP’s coordinated disclosure.
Wiz Research, which reports finding the flaws, has published its own findings. Wiz reports demonstrating unauthenticated code execution against container images that were latest at the time of testing. It also reports a separate demonstration of reading sensitive data from PHP process memory, including passwords, tokens and API keys, without first achieving code execution.
These are examples of the underlying PHP issues. They are not separate vulnerabilities in WordPress, Drupal or Joomla, and they are not evidence of attacks against customers. Wiz says exploitation does not depend on flaws in application code, and that these platforms were chosen as representative targets.
PHP’s lifecycle page lists these dates as of 21 October 2026.
| Branch | Support status | Security support until | Fixed in |
|---|---|---|---|
| 8.5 | Active support until 31 Dec 2027 | 31 Dec 2029 | 8.5.12 |
| 8.4 | Active support until 31 Dec 2026 | 31 Dec 2028 | 8.4.27 |
| 8.3 | Security fixes only (active support ended 31 Dec 2025) | 31 Dec 2027 | 8.3.36 |
| 8.2 | Security fixes only (active support ended 31 Dec 2024) | 31 Dec 2026 | 8.2.35 |
| 8.1, 8.0, 7.x, 5.x | End of life, no upstream security updates | Ended | No upstream update |
PHP’s advisories list affected versions only for the four supported branches: everything below 8.2.35, 8.3.36, 8.4.27 and 8.5.12. Wiz reports that affected releases date back to PHP 5.4. That is Wiz’s finding, not a PHP statement. It does not mean every version and configuration is equally exploitable.
PHP 8.1 and older no longer receive updates from the PHP project. Some distributions and long-term support vendors provide backported fixes. PHP also published minimal source backports for PHP 7.4, 8.0 and 8.1 for people who build from source or have no access to a long-term support vendor. Contact your vendor, or move to a supported version.
PHP 8.6.0 RC3 (8 October 2026) is a release candidate. PHP says not to use release candidates in production.
PHP’s advisories describe validated remote code execution against mod_php for both vulnerabilities, and against FPM through a session-handling path for CVE-2026-109619. Wiz reports unauthenticated code execution against WordPress, Drupal and Joomla deployments. Third-party write-ups and purported proof-of-concept code are also public.
As of 15:30 BST on 21 October 2026, we have not verified exploitation in the wild in the sources reviewed. That is not evidence that systems are safe. No indicators of compromise specific to these vulnerabilities have been confirmed.
Our initial testing of pre-release third-party code did not reproduce a crash or remote code execution. Those results concern that material, not the vulnerabilities PHP and its reporting researchers have now validated.
The reported use-after-free memory corruption can crash PHP processes and disrupt a service, even if a malicious payload is removed from a test. We do not have a validated, non-disruptive proof of concept for assessment. Don’t run exploit code against production.
PHP says the producing and consuming requests for CVE-2026-109619 must reach the same worker. It says multiple workers and recycling reduce the success rate per request but do not remove the condition.
If an attacker exploits either vulnerability on a server you run, PHP says they can run arbitrary code with the web worker’s privileges, without logging in.
If a flaw is exploitable in your deployment, an attacker could:
Data exposure without code execution. PHP’s advisory for CVE-2026-109619 lists memory disclosure as a confirmed impact. Wiz reports recovering passwords, tokens and API keys from PHP process memory without first achieving code execution. That memory can include data from other requests handled by the same worker, and data belonging to the server itself.
This means data exposure needs investigating even where you find no web shell and no malicious file. If an unpatched, internet-facing PHP server could have been reached, treat secrets it handled as potentially exposed. Consider rotating credentials, tokens and API keys that the PHP process held or could read. We have no confirmed reports of this happening to a CovertSwarm client or to anyone else.
The extent to which they can proceed depends on the permissions of the PHP process and on what it has access to, for example databases, cloud credentials, and internal services. It’s not advisable to assume that root or administrator access is available.
PHP is embedded widely: in content management systems such as WordPress, Drupal, Joomla and Magento, in shared hosting, in control panels such as cPanel and Plesk, and in vendor software and appliances that bundle php.exe or php-cgi.exe. Your exposure may sit in software you didn’t install as PHP.
memory_limit=-1, in a way applications cannot override (for example php_admin_value in the FPM pool or Apache configuration), and check that no pool, directory or application setting restores a finite limit. Set a low post_max_size(PHP suggests 8M if you don’t need uploads, 32M if you do) and keep upload_max_filesize below it. Enforce limits for decoded request size, input fields, multipart parts, headers and nesting depth at the web server or proxy, including for requests without a usable Content-Length. A container or cgroup memory limit can act as an availability boundary, ideally one that kills only the affected worker. Don’t use RLIMIT_AS or RLIMIT_DATA: PHP says they can cause the vulnerable allocation failure.
CVE-2026-109619. Set session.upload_progress.enabled=0 in php.ini, an FPM pool or server configuration that applies before request parsing, not through ini_set() or .user.ini. PHP says this blocks the confirmed session paths but not other variants. On PHP 8.5, set fatal_error_backtraces=0, which blocks the confirmed fatal-backtrace path only. Remove invalid or deprecated per-request settings that emit diagnostics before initialisation, because hiding diagnostics with error_reporting, display_errors or @ does not help. Fix attacker-reachable fatal errors and execution timeouts.
Last updated: Wednesday 21 October 2026, 15:30 BST. We will update this post if PHP or other sources publish further confirmed information.