PHP2Shell OOM-corruption RCE added to CISA KEV after honeypot shells confirmed
An unauthenticated flaw in PHP's out-of-memory handling gives remote code execution as the web worker. Apache mod_php is the most exposed setup. CISA added it to KEV on 2026-10-26. Patch to 8.2.35, 8.3.36, 8.4.27 or 8.5.12 by 2026-10-29 and restart all workers.
What you need to know
- Exposure: any PHP install serving web requests on 8.2 to 8.5 below the fixed releases, plus unsupported 8.1 and older. Apache mod_php is the highest-risk setup. PAN-OS and RUGGEDCOM APE1808 are also affected.
- Impact: unauthenticated remote code execution as the web worker account, independent of CMS or framework. Wiz also showed worker memory, including secrets, can leak.
- Exploitation: attempts began 2026-10-17 and reached millions after the 2026-10-21 release. Honeypot shells were confirmed on 2026-10-24. CISA added the CVE to KEV on 2026-10-26.
- Fix: upgrade to 8.2.35, 8.3.36, 8.4.27 or 8.5.12 and restart every PHP worker. The CISA due date is 2026-10-29. PAN-OS hotfixes roll out through 2026-10-30.
- Detect: look for multipart requests followed by memory-limit fatals, malformed PHPSESSID cookies, PHP workers spawning shells and second-stage fetches into /tmp. Scope back to 2026-10-17.
What's happening
CVE-2026-109618 is a memory-corruption flaw in how PHP recovers from out-of-memory errors during request processing. It gives an unauthenticated remote attacker code execution as the web worker account 1. It was disclosed alongside CVE-2026-109619, and the pair is branded PHP2Shell. Both were fixed on 2026-10-21 in PHP 8.2.35, 8.3.36, 8.4.27 and 8.5.12 1,2.
PHP says every installation serving web requests is at risk 2. The attack does not depend on the CMS, framework or plugins in use. Wiz demonstrated pre-authentication RCE against WordPress, Drupal and Joomla container images, and it also showed that PHP worker memory, including passwords, tokens and API keys, can leak 6. The flaw also reaches products that bundle PHP. Palo Alto Networks rates PAN-OS on PA-Series, VM-Series and Panorama as affected with no special configuration needed 4. Siemens lists all RUGGEDCOM APE1808 devices running PAN-OS 10.2, 11.1, 11.2, 12.1 or 12.2 as affected 5.
Exploitation has moved from probes to working shells, so far only on honeypots. Amazon recorded a pre-disclosure attempt on 2026-10-17 and several PoC-based attempts from 2026-10-21. It describes the flaws as now broadly exploited but is unsure whether any attempt would have succeeded against real systems 11. Cloudflare reported that attempts reached millions by 2026-10-22, with payloads altered to evade its WAF 12. On 2026-10-24, Perplexity researcher Adel Karimi recorded 35 shells launched from two IPs across three honeypots. The traffic closely matched a public PoC. Karimi notes the honeypots ran a deliberately favorable single-worker mod_php setup, and no second-stage download was observed 9.
CISA added CVE-2026-109618 and CVE-2026-109619 to KEV on 2026-10-26 with a due date of 2026-10-29 3. Arctic Wolf linked likely weaponized attempts to the Potassium Mirai-variant botnet. It notes that request telemetry does not prove the targets were vulnerable or that code ran 8. Censys assessed more than 34.4M PHP services as still vulnerable on 2026-10-23 10. No confirmed compromise of a production system appears in the sources reviewed.
How it works
PHP uses longjmp() to bail out of a request when an allocation fails with out-of-memory. In some contexts request memory is reachable before it is fully initialized, so an early exit leaves that memory invalid. The request shutdown routine then reads or branches on that memory. The failed allocation does not need to be related to the invalid memory 1. The patch removes longjmp() for OOM. It is replaced by a delayed soft OOM at the next VM safe point and an immediate hard OOM via _exit() above a higher threshold 1.
Request startup parses request bodies, including multipart bodies, before any application code runs. The vendor lists several multipart-handling gaps that let a request hit OOM while it appears to stay within configured limits 1. No authentication or user interaction is needed, and the attack works remotely over HTTP 1. The weakness is tagged CWE-416, 755, 824, 1325 and 1419 1. Wiz describes the chain differently, as a stale session upload-progress pointer that survives an OOM and is consumed by a later request on the same worker. That resembles PHP's description of the companion CVE-2026-109619 2. This brief follows the vendor's root cause for CVE-2026-109618 1,6.
Apache mod_php is the highest-risk SAPI. It always runs request shutdown, even after startup fails, so the attack can succeed before any application code runs. The vendor demonstrated full RCE against mod_php with default limits in a normal prefork setup 1. PHP-FPM ends the child process when startup fails, which blocks that path. FPM is still considered susceptible through later-stage OOM, but no complete FPM exploit has been shown 1. Rapid7 found the public PoCs environment-specific 7. A VulnCheck exploit lead later said a public exploit now achieves RCE on ASLR-enabled x86-64 with PHP's recommended production configuration 10.
What to do
In order of priority- 1
Upgrade to a patched release: 8.5.12, 8.4.27, 8.3.36 or 8.2.35. The vendor says updating is the only complete mitigation. Check distro and LTS vendor packages, then restart every PHP worker 1,2.
- 2
Meet the CISA KEV requirement: apply vendor mitigations in line with BOD 26-04 and complete forensic triage by 2026-10-29 3.
- 3
Also apply the remediation for CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp): set
session.upload_progress.enabled=0at php.ini, FPM-pool or server level. PHP's 2026-10-23 informational advisory repeats this setting for a separate vector, CVE-2026-115560 2. - 4
If you cannot update yet, set
memory_limit=-1in a way applications cannot override (FPM pool or Apache config), then restart workers. This is partial, because an underlying allocation failure can still reach the vulnerable path 1. - 5
Keep
post_max_sizelow (8M without uploads, 32M with). Enforce decoded request size, field count, part count, header count and nesting depth at the web server or proxy, including for requests without a usable Content-Length. Block multipart requests at the frontend if unused 2. - 6
Do not use RLIMIT_AS or RLIMIT_DATA, because they can trigger the vulnerable allocation failure. A container or cgroup limit is only an availability boundary 1.
- 7
PAN-OS fixes are rolling out per train, with ETAs from 2026-10-27 to 2026-10-30. Until then, enable Threat Prevention coverage and restrict the management interface to a jump box. RUGGEDCOM APE1808 owners should follow Palo Alto's workarounds and contact Siemens 4,5.
- 8
Attempts predate the patch, so assume pre-patch exposure. Hunt back to 2026-10-17, check for web shells and new accounts, and rotate secrets that PHP workers could reach, since worker memory can leak 6,12.
Detection
- These bugs run below the application layer, so app logs may show little 6. Hunt for multipart requests that end in memory-limit errors or bursts of HTTP 500s, oversized or malformed PHPSESSID response cookies, and unexplained PHP worker restarts 6.
- Monitor for PHP workers that spawn shells, run identity-check commands, change to /tmp and fetch a second-stage file with wget. Arctic Wolf saw this pattern in likely weaponized attempts 8.
- Check session files and request logs for the published indicators. VulnCheck's canaries saw PHPSESSID values and session filenames planted through upload-progress, and Sophos saw payloads dropped to
/tmp/nfs13,14. - Vendor coverage: Sophos IPS signature VID444662 covers CVE-2026-109618 14. Palo Alto Threat Prevention customers should enable the Threat IDs listed in its advisory, which include 543004 and 97622-97624 4. CISA added a Sigma rule to its PHP alert on 2026-10-23 9.
- Scope investigations back to at least 2026-10-17, not to the disclosure date 12. The KEV entry requires forensic triage 3.
Indicators
As published by the cited sources| Type | Value | Context |
|---|---|---|
| user agent | php2shell-scan/109618 | Scanner user-agent in multipart requests to index.php (VulnCheck canaries, 2026-10-21); trivial to change13 |
| user agent | Mozilla/5.0 (php2shell-poc) | User-agent on an exploitation attempt (VulnCheck canaries)13 |
| file path | /tmp/nfs | Payload drop location in Sophos-observed traffic; likely Mirai variant downloaded14 |
| ip | 92.118.112.100 | Second-stage fetch host in likely weaponized attempts linked to the Potassium botnet (Arctic Wolf)8 |
| ip | 162.35.99.94 | Remote host contacted by honeypot shells on port 80 (Karimi, via The Hacker News); SecurityWeek reports no second-stage download was observed15 |
| ip | 206.188.197.105 | Attacker-controlled server hosting PHP2Shell tooling on port 9999 (SOCRadar, Hunt.io)10 |
| ip | 103.216.220.92 | Source of the 2026-10-17 pre-disclosure attempt on Amazon's MadPot honeypot16 |
| ip | 204.76.203.7 | Probed Defused Cyber GlobalProtect honeypots with PHP2Shell traffic (via The Hacker News)15 |
Timeline
Wiz Research reports the vulnerabilities to the PHP security team. 6
Earliest known exploit attempt: an Amazon MadPot honeypot hit, before patch and disclosure. 11
PHP pre-announces an emergency release; CVE IDs and a PoC leak, so PHP brings the release forward. 16
PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35 released with advisory GHSA-w8hw-w9fx-j79w. 2
PHP says the PoCs published before the patch were not functional. 11
Cloudflare reports millions of exploit attempts; Amazon discloses the 2026-10-17 pre-disclosure attempt. 12
Siemens publishes SSA-566512 for RUGGEDCOM APE1808 devices running PAN-OS. 5
Karimi's honeypots record the first reported successful in-the-wild exploitation (35 shells from two IPs). 9
CISA adds CVE-2026-109618 and CVE-2026-109619 to KEV with a 2026-10-29 due date. 3
Palo Alto updates its advisory with PAN-OS hotfix ETAs of 2026-10-27 to 2026-10-30. 4
Sources
- 1RCE via OOM corruption (GHSA-w8hw-w9fx-j79w)PHP project (php-src) · Vendor · Oct 21, 2026
- 2php.net news: security advisory, release announcements, informational advisoryPHP Group · Vendor · Oct 21, 2026
- 3CISA Adds Two Known Exploited Vulnerabilities to CatalogCISA · Government · Oct 26, 2026
- 4Impact of Critical Vulnerabilities in PHP on Palo Alto Networks ProductsPalo Alto Networks PSIRT · Vendor · Oct 26, 2026
- 5SSA-566512: PHP2Shell vulnerabilities in PAN-OS on RUGGEDCOM APE1808Siemens ProductCERT · Vendor · Oct 23, 2026
- 6PHP2Shell: AI uncovers critical RCE vulnerabilitiesWiz Research · Research · Oct 21, 2026
- 7
- 8PHP2Shell: Critical PHP Vulnerabilities Enable Unauthenticated RCEArctic Wolf Labs · Research · Oct 22, 2026
- 9PHP2Shell Exploitation Moves From Probes to Working ShellsSecurityWeek · News · Oct 26, 2026
- 10PHP2Shell Exploit Attempts Hit Millions as Attackers Try to Deploy Mirai MalwareThe Hacker News · News
- 11Amazon says PHP2Shell exploitation began 4 days before patchesBleepingComputer · News · Oct 22, 2026
- 12Hackers pile on PHP2Shell as AWS reveals attacks began before disclosureThe Register · News · Oct 22, 2026
- 13PHP2Shell Vulnerabilities: CVE-2026-109618 and CVE-2026-109619VulnCheck · Research
- 14Proof-of-concept exploit released for PHP vulnerabilitiesSophos · Research
- 15
- 16Someone Tried to Exploit PHP2Shell 4 Days Before the Vulnerabilities Were Publicly DisclosedThe Hacker News · News · Oct 22, 2026
Corroborated by independent sources. Researched and drafted by the VulnDigest briefs agent from 16 sources, then checked against them by a separate review step on Oct 27, 2026.
CISA had said on 2026-10-21 and 2026-10-23 that it had not observed successful exploitation, before adding the CVE to KEV on 2026-10-26.
Confirmed successful exploitation so far comes from honeypots on a favorable single-worker mod_php setup. No compromise of a production system is confirmed in the sources reviewed. Amazon is unsure its pre-patch attempts would have succeeded, so zero_day is set false.
Severity uses PHP's CVSS v4.0 score of 9.2 (AC:H, AT:P). NVD/CNA lists CVSS v3.1 9.8, and Palo Alto scores its own products 8.7 (availability only).
Bug-to-CVE mapping is approximate. PHP's advisory describes partially initialized request memory, while Wiz ties the bug to session upload-progress state. This brief follows the vendor.
IP and user-agent indicators come from research and news reports, are easy to change and may be short-lived. Validate them before blocking.
Attribution is unresolved. A suspected North Korea link (CYFIRMA) is moderate confidence, so no actor is recorded. Ransomware use is unknown.
Spotted an error? Open an issue on sochub.io.