php2shell: what was disclosed
Calif.io, Wiz, OpenAI and Quarkslab have disclosed two PHP vulnerabilities tracked as CVE-2026-109618 and CVE-2026-109619 and collectively named php2shell. Every web server running PHP 5.4 or later is in scope. The flaws sit in the PHP runtime itself, so when an application handles specially crafted HTTP traffic an attacker may be able to cause denial of service, achieve remote code execution, or expose data. Since PHP underpins platforms such as WordPress and Magento and is used by almost 70% of websites, the reach is broad.
The unsafe conditions arise from how PHP manages memory during request processing. Memory is allocated for a request and normally freed when that work completes; if processing halts unexpectedly — for instance on memory exhaustion — the cleanup does not happen safely. The vulnerabilities occur when PHP handles such an error and then reads data that was never fully initialized or memory that has already been released. Crafted requests trigger these paths; large requests are one way to pressure memory, but the impact goes beyond resource consumption, since manipulating the contents of that invalid memory can crash a PHP process, leak sensitive information, or run attacker-supplied code.
The two CVEs differ in when the unsafe memory access takes place:
Vulnerability | What goes wrong |
CVE-2026-109618 | PHP runs out of memory and interrupts its work before some internal data has been properly initialized. During cleanup of that request, PHP may use this unfinished data as though it were valid. |
CVE-2026-109619 | A fatal error interrupts a request, leaving PHP holding references to memory that is released when the request ends. When the same PHP process handles a later request, it may follow those outdated references and access memory that is no longer valid and expose sensitive data. |
Cloudflare's response and default coverage
Cloudflare took part in the coordinated effort alongside the PHP Foundation, OpenAI and Wiz, building and shipping WAF protections from early October 2026; these went live roughly 9 hours before public disclosure. From October 21 at 3:02 am UTC, every customer on the free or paid WAF has been protected by default.
During the period when the vulnerability leaked ahead of the official release date, Cloudflare observed attack traffic aimed at its customers and delivered several mitigations for all of them. Attackers adjusted their payloads in attempts to evade the rules; the company tracked match volumes against the rule logic to follow those mutations.
Standard request-based rules were insufficient here. Request data alone often cannot separate an exploit from legitimate traffic, whereas the origin's response supplies context showing whether an exploit worked while lowering false positives. Cloudflare therefore built full transaction detection, a WAF capability that correlates request and response signals from the same HTTP transaction and can block a matching origin response before it reaches the requester. The php2shell rules are the first managed detections shipped on top of it.
Ruleset rollout
Free customers received new rules in the Cloudflare Managed Free Ruleset (Ruleset ID 77454fe2d30c4220b5701f6fdfb893ba) with no action needed to activate them; behavior can be overridden per the documentation.
Rule Description | Rule ID |
Generic Rules - Anomalous Execution - 1 | 4e315666e8e344cdb64119a3b5ccf32f |
Generic Rules - Anomalous Execution - 2 | 00c10e6cc4da4bd08722adeebcd95984 |
Generic Rules - Anomalous Execution - 3 | 48ddf592361e4fdb97a8a85982dab691 |
Generic Rules - Anomalous Execution - 4 | 3556683d512a47f2937899c524b1a4c6 |
Generic Rules - Anomalous Execution - 5 | da07c85852e34625bb478496302ede46 |
Generic Rules - Anomalous Execution - 6 | 19373a83abb840e18ab3ce5a7975ce1b |
Generic Rules - Anomalous Execution - 7 | 07f0b6ddaabf40b1b2042dade8d613fa |
Paid plans are covered by the Cloudflare Managed Ruleset (Ruleset ID efb7b8c949ac4650a09736fc376e9aee). Professional, Business and Enterprise customers should check that their deployment is in block mode.
Rule Description | Rule ID |
Generic Rules - Anomalous Execution - 1 | c1d409ad838f47f59446f21cc438d5dd |
Generic Rules - Anomalous Execution - 2 | f9a45927414245e3a64bb12d0a0c2f64 |
Generic Rules - Anomalous Execution - 3 | 771c654ae1154d4daa72f4e1545d163c |
Generic Rules - Anomalous Execution - 4 | 217005865f0145f392300bac212afcc9 |
Generic Rules - Anomalous Execution - 5 | 38efdb17ea594501bb55a1d71867b12e |
Generic Rules - Anomalous Execution - 6 | 4148ae686fdb4d01be673fab9d9c073d |
Generic Rules - Anomalous Execution - 7 | 1389aa259617437392ce149c48143645 |
The response-side rules below were deployed to the new Cloudflare Managed Response Firewall Default for all plans, Free included (rule descriptions are due to be updated):
Rule Description | Rule ID |
Default block for High confidence Signatures | afffe22785674c80a31875c848d2242a |
Investigating hits and tuning scope
Blocked traffic can be examined under Security > Security Analytics > Events by filtering on the rule IDs above and reviewing the matched request, its action and its path; events show whether a managed or a custom rule fired. Where protection needs narrowing, the scope of the Managed Ruleset can be adjusted to the areas of an application that require it.
WAF coverage is only an additional layer. Because the defects live in the runtime, patching plugins or site code does nothing — administrators must update the PHP software itself, following the advisory for affected versions and remediation steps; where a hosting provider manages PHP, ask it to apply the update. Cloudflare advises patching promptly while leaving WAF protection on, and restricting and size-limiting unnecessary uploads to reduce exposure, though these measures do not substitute for the PHP fix. Analysts will keep monitoring attack activity and revise the rules as new techniques appear, with changes listed in the changelog.



