URGENT ADVISORY: Update PHP NOW
PHP emergency security updates now cybersecuritynews.ca
The PHP development team and third-party security researchers have alerted the community to two critical Remote Code Execution (RCE) vulnerabilities affecting PHP environments.
Due to a public leak of details prior to the embargo date, the disclosure timeline has been accelerated. System administrators are strongly advised to prepare patch pipelines immediately to deploy incoming fixes as soon as they drop.
If you run web infrastructure powering WordPress, Drupal, Magento, or custom web applications, drop what you're doing and check your patching pipelines.
The PHP core development team has issued an urgent advance notice announcing emergency security updates set to drop on Wednesday, October 21, at 14:00 UTC (10:00 AM EDT). The emergency release addresses two critical vulnerabilities, officially rated CVSS v4.0 9.2 following a public embargo leak that forced maintainers to accelerate their release timeline. Here is what went down behind the scenes, why the timeline moved up, and what your engineering team must do before the patches land. Under standard coordinated vulnerability disclosure, maintainers work privately with security firms and OS package maintainers to test fixes before releasing them publicly.
However, earlier today, details regarding the two vulnerabilities began leaking online:
The Forum Leak: A post appeared on Y Combinator’s Hacker News forum from a user claiming that two critical PHP Remote Code Execution (RCE) flaws carrying a CVSS score of 10.0 were set to be disclosed on Thursday.
Confirmation from Researchers: Cybersecurity firm watchTowr confirmed via social media that the vulnerabilities, tracked as CVE-2026-109618 and CVE-2026-109619 are real core RCE bugs, noting that technical details had leaked ahead of the planned embargo window.
The Official PHP Team Response: Rather than holding out until Thursday, the PHP team advanced their release date to Wednesday morning. They explicitly warned:
"We reserve the right to release earlier should details of either vulnerability become public, or should evidence of active exploitation appear in the wild."
Why the Window for Action Is Extremely Short
Once an open-source project publishes a patch, threat actors immediately run git diff on the repository source code to identify what changed. With modern AI tools and automated exploit frameworks, researchers estimate that a functional weaponized exploit could be written within hours or even minutes of the source patch going live.
Immediate Action Items for IT & Security Teams
To ensure your web applications remain protected, take these steps immediately:
- Inventory All Running Workloads: Identify every server, container, and shared host running PHP in your infrastructure. Determine whether you install PHP via distribution packages (
apt,dnf), official Docker images, or custom builds. - Flag Legacy PHP Versions: Isolate any systems running PHP 5.x or 7.x. Plan an immediate migration strategy to a supported PHP 8 release, as legacy versions will not receive official patches.
- Prepare Staging Environments: Ensure your automated test suites and deployment pipelines are ready to accept incoming package updates so you can deploy to production as soon as tests pass.
- Subscribe to Updates: Monitor the official PHP ANNOUNCE Mailing List and distro-specific security advisories (Ubuntu, Debian, RHEL, Alpine) for backported package releases.
If you cannot update immediately: while only an update is a complete solution, the following measures reduce exposure to specific attack paths but do not make an installation safe.
RCE via OOM corruption (CVE-2026-109618):
- Set
memory_limit=-1, preferably in a way applications can't override, such asphp_admin_valuein the FPM pool or Apache configuration, and check that no pool, directory or application setting puts a finite limit back. This removes the controllable PHP memory limit failure, but an underlying allocation failure can still reach the vulnerable path. - Set a low
post_max_size. For applications that don't require file uploads, setpost_max_size = 8M. If file uploads are necessary, setpost_max_size = 32M. Keepupload_max_filesizebelowpost_max_size. Consider enforcing limits at the web server or proxy level for decoded request size, input field count, multipart part count, header count, and nesting depth. These limits must also cover requests without a usableContent-Length. - Use a container or cgroup limit as an availability boundary, preferably with a policy that kills only the affected worker. Do not substitute
RLIMIT_ASorRLIMIT_DATA, as these can cause the vulnerable allocation failure.
RCE via stale global state (CVE-2026-109619):
- Set
session.upload_progress.enabled=0and restart every worker. Usephp.ini, an FPM pool or server configuration that applies before request parsing. Do not rely onini_set()or FPM.user.ini. This blocks the confirmed session paths but not other variants. - On PHP 8.5, set
fatal_error_backtraces=0and restart every worker. This blocks the confirmed fatal backtrace path only. - Remove invalid or deprecated settings applied per request that emit diagnostics before initialization. Hiding diagnostics with
error_reporting,display_errorsor@does not help. - Fix attacker-reachable fatal errors and execution timeouts, including failures in callbacks, upload or import processing and cleanup.
Key points
- Emergency Updates
- Two critical vulnerabilities
PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35 fix two critical vulnerabilities that can allow unauthenticated remote code execution. All PHP users are strongly encouraged to update immediately.
Who is at risk: all PHP installations serving web requests, including PHP-FPM, Apache with mod_php, php-cgi, FrankenPHP and LiteSpeed. We consider the risk highest for mod_php, with a demonstrated exploit where an unauthenticated request can trigger the attack before any application code runs.
The vulnerabilities:
- RCE via OOM corruption, CVE-2026-109618 (GHSA-w8hw-w9fx-j79w): out-of-memory handling can interrupt PHP while internal request data is only partially initialized. Request cleanup may then treat the invalid data as valid.
- RCE via stale global state, CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp): request-owned internal state can survive after its backing memory has been freed. A later request handled by the same worker may use that stale state before normal initialization resets it.
How to update:
- Update to PHP 8.5.12, 8.4.27, 8.3.36 or 8.2.35. Source downloads are on PHP downloads page. Windows source and binaries are on the same page.
- Linux distributions and LTS vendors received the patches in advance, so check your vendor for updated packages.
- PHP 8.1 and older no longer receive updates from the PHP project. Some distributions and LTS vendors provide backported fixes, so contact your vendor for details, or upgrade to a supported version.
- Given the severity of these vulnerabilities, the PHP security team provided minimal source-backports for PHP 7.4, PHP 8.0, and PHP 8.1 to help people building from source or without access to an LTS vendor.