PHP - RCE (CVE-2026-109619)
Description
PHP contains various global state, such as error, session, object and extension state, that is retained by a worker but points to memory owned by one request. A fatal error, including one caused by memory exhaustion, or a nonfatal diagnostic during shutdown can leave that state in place after the request memory is released. Input, configuration, session and error handling operations that run before normal initialization of the next request, such as session upload progress handling or INI diagnostics, then access the stale state, causing a use after free. A strategically crafted heap layout can produce full remote code execution. Disclosed publicly as "php2shell" together with CVE-2026-109618.
psychologyCrowdSec Analysis
CVE-2026-109619 is a critical use-after-free vulnerability in PHP core, rated 9.2 on CVSS v4.0 by the PHP security team. Request-owned state that survives a fatal error in a persistent worker is consumed by the next request before normal initialization, notably by the session upload progress handler, which is enabled by default and needs no session_start() call. An unauthenticated attacker can chain a producing and a consuming request on the same worker to execute arbitrary code as the web server user, on both Apache mod_php and PHP-FPM. It is disclosed together with CVE-2026-109618 under the name "php2shell".
CrowdSec has been tracking this vulnerability and its exploits since 21st of October 2026.
CrowdSec network data shows that most actors exploiting CVE-2026-109619 rely on broad, untargeted scans with minimal filtering. The activity is largely automated and opportunistic in nature. In addition, according to the CrowdSec network, attack volume against CVE-2026-109619 has dipped slightly compared to the previous week. Although still commonly targeted, the decline suggests a cooling-off period. Long-term relevance remains, but attention is waning.
Attackers send multipart/form-data POST requests to any PHP endpoint (commonly /index.php) containing a PHP_SESSION_UPLOAD_PROGRESS form field alongside an attacker-chosen PHPSESSID supplied in the POST body or the Cookie header, with or without a file part. Detection should focus on the PHP_SESSION_UPLOAD_PROGRESS field name in a multipart request body.
Full Intelligence Available
Connect your API key to access CrowdSec scores, exploit timelines, and attacker IPs.
| Event | Date |
|---|---|
| CVE Published | 2026-10-21 |
| Rule Released | 2026-10-21 |
| CrowdSec First Seen | 2026-10-21 |
Remediation & Protection
External References
- https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp
- https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w
- https://calif.io/php2shell/
- https://sansec.io/research/php2shell
- https://github.com/ikow/php2shell-poc/blob/main/poc/verify_session_injection.py
- https://github.com/xuehuolll/CVE-2026-109618-109619-audit