Newly disclosed critical PHP vulnerabilities - collectively known as PHP2Shell (CVE-2026-109618 and CVE-2026-109619) - represent a grave threat to global internet infrastructure. Both security flaws carry a CVSS v4.0 rating of 9.2 (Critical) and allow unauthenticated Remote Code Execution (RCE).
To understand the blast radius, consider that PHP powers approximately 70% of all websites. This includes dominant Content Management Systems (CMS) like Magento, WordPress, Drupal, and Joomla, web hosting control panels like cPanel and Plesk, and countless enterprise applications that silently bundle PHP binaries.
PHP2Shell is uniquely dangerous because an unauthenticated attacker can trigger these vulnerabilities during initial HTTP(S) request startup, before any application code, input validation, or login mechanisms execute. As a result, every web-facing PHP runtime must be evaluated as immediately exposed.
The discovery and release cycle of PHP2Shell highlights a seismic shift in the threat landscape:
The two vulnerabilities stem from flaws in how the PHP engine manages memory exhaustion and global state across request lifecycles.
Exploitation Path: Features like session.upload_progress.enabled (which is enabled by default in PHP) parse upload progress during request startup before application code runs or session_start() is called. A subsequent request hitting the same web worker process can interact with stale state prior to normal variable initialisation, allowing an attacker to achieve unauthenticated remote code execution across request boundaries. (On PHP 8.5, fatal error backtrace handling presents an additional vector via fatal_error_backtraces).
All active PHP branches are affected and require immediate updates to official fixed releases.
| PHP Branch | Support Status | Safe Patched Version | Recommended Action |
|
8.5 |
Active Support | 8.5.12 | Update immediately |
| 8.4 | Active Support | 8.4.27 | Update immediately |
| 8.3 | Security Fixes Only | 8.3.36 | Update immediately |
| 8.2 | Security Fixes Only | 8.2.35 | Update immediately |
| 8.1 or older | End-Of-Life (EOL) | None (Upstream) | Migrate or apply vendor backports |
Security operations and IT infrastructure teams should execute this remediation plan immediately.
Identify all environments running PHP runtime engines - including PHP-FPM, Apache mod_php, php-cgi, FrankenPHP, and LiteSpeed. Do not limit discovery to standard web servers; search container registries, CI/CD deployment pipelines, hosting control panels, and third-party software that embeds standalone PHP binaries (php.exe, php-cgi.exe).
Use the following platform-specific audit commands to verify installed PHP packages and check if vendor changelogs reflect patches for both CVEs:
dpkg -l | grep php
apt changelog php[VERSION_NUMBER]-cli | grep -E
"CVE-2026-109618|CVE-2026-109619"
rpm -qa | grep php
rpm -q php-cli --changelog | grep -E "CVE-2026-109618|CVE-2026-109619"
apk info | grep php
Update all active PHP runtimes to their designated safe release targets (8.2.35, 8.3.36, 8.4.27, or 8.5.12) or install verified Linux distribution packages that backport fixes for both CVEs. Patching the underlying engine is the only complete remediation - Do not delay.
Rebuild Container Images: Rebuild container images directly from patched upstream base images. Patching a live container instance without updating the base image leaves deployment pipelines exposed to redeploying vulnerable runtimes.
Miss these steps and you could still be exposed.
Because exploitation occurs prior to script execution, standard application-level logging will not catch attack attempts. Security engineering teams should hunt for indicators across three distinct layers:
PHP Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 3500032 bytes) in Unknown on line 0
Correlate these errors with segmentation faults in web server error logs (e.g., Apache AH00052: child pid ... exit signal Segmentation fault (11)).
Process Lineage Anomalies: Monitor endpoint detection and response (EDR) telemetry for web worker accounts (www-data, apache, nobody) spawning child shell processes or network utilities
apache2 (www-data) -> sh -c ... -> bash -> wget/curl
- Form submissions (application/x-www-form-urlencoded) containing unusually long parameter names (e.g., parameter keys ~3.5 MB in length).
- Form submissions containing raw binary payload strings or non-printable null bytes in parameter values associated with empty field names.
While temporary configuration adjustments exist to restrict specific attack vectors while patches are deployed, no configuration workaround fully cures these vulnerabilities. If temporary mitigations are deployed, teams must understand the following technical operational caveat:
If you suspect active exploitation, observe anomalous outbound traffic, or need immediate incident response support, contact our security team right away. We can assist with forensic triage, rapid runtime containment, and patch verification.