cscli appsec-rules install crowdsecurity/vpatch-CVE-2026-109619This rule provides tentative virtual patching for CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp), a pre-authentication Remote Code Execution in PHP core: request-owned state survives in worker globals after a fatal error and is consumed by a later request before normal initialization (use after free).
Detection: Blocks multipart requests carrying a PHP_SESSION_UPLOAD_PROGRESS field, with or without a file part: the published exploit chain uses both shapes. Session upload progress is a confirmed producer and consumer of the stale state on both mod_php and FPM, it is enabled by default and does not require the application to call session_start().
The request is inspected in its raw form rather than through the WAF's multipart parser, because a part PHP tolerates but the WAF parser rejects would otherwise hide the progress field.
The rule only covers the default session.upload_progress.name. The INI diagnostic consumer described in the advisory (.htaccess, PHP_VALUE) is not reachable from an HTTP request and cannot be virtually patched. Out-of-memory conditions used as producers are covered by crowdsecurity/vpatch-CVE-2026-109618.
Virtual patching mitigates exploitation attempts, but it does not fix the underlying vulnerability: upgrading PHP to a patched version is always recommended. If you cannot update, set session.upload_progress.enabled=0 and, on PHP 8.5, fatal_error_backtraces=0, then restart every worker.
1name: crowdsecurity/vpatch-CVE-2026-1096192description: 'Tentative vpatch for CVE-2026-109619 : block multipart requests engaging PHP session.upload_progress.'3rules:4 - and:5 - zones:6 - HEADERS7 variables:8 - Content-Type9 transform:10 - lowercase11 match:12 type: contains13 value: 'multipart/'14 # No file part is required: the published consumer request carries the progress15 # field without one. Matched on the raw body rather than BODY_ARGS, since a part16 # PHP tolerates but Coraza rejects would stop Coraza's multipart parsing before17 # the progress field is seen.18 - zones:19 - RAW_BODY20 match:21 type: regex22 value: '(?i)[;:\s]name\s*=\s*[\x22'']?php_session_upload_progress(?:[\x22''\s;]|$)'2324labels:25 type: exploit26 service: http27 confidence: 328 spoofable: 029 behavior: 'http:exploit'30 label: 'PHP - RCE'31 classification:32 - cve.CVE-2026-10961933 - attack.T119034 - cwe.CWE-41635