Millions of public-facing web servers are exposed to takeover after two critical flaws surfaced in the engine behind much of the web. On October 21, 2026, the PHP development team rushed out emergency security updates for CVE-2026-109618 and its companion flaw, CVE-2026-109619.
Researchers call the pair php2shell, and together these critical PHP core vulnerabilities carry a CVSS v4.0 score of 9.2. An unauthenticated, remote attacker can execute arbitrary shellcode directly in memory, with no user interaction and no valid login.
The scale is hard to overstate. According to attack surface telemetry released by Palo Alto Networks Unit 42, more than 22.6 million internet-connected systems run vulnerable PHP environments.
Cybersecurity firm watchTowr detected active scanning and exploitation attempts across its global honeypots within hours of the flaw’s premature leak on social media. CISA, the NSA, and CERT-EU have all issued emergency advisories urging infrastructure operators to patch production web tiers immediately.
Quick Answer
CVE-2026-109618 and CVE-2026-109619 (“php2shell”) are critical PHP remote code execution flaws (CVSS v4.0 9.2) affecting PHP versions 5.x through 8.x when processing crafted web requests. The vulnerabilities stem from unsafe longjmp() memory handling during out-of-memory errors and request shutdowns.
Organizations must immediately upgrade to official fixed releases: PHP 8.5.12, 8.4.27, 8.3.36, or 8.2.35. Unsupported installations running PHP 8.1, 7.x, or 5.x must apply OS backports or be isolated behind strict web application firewall filters.
What Happened & Incident Timeline
The disclosure did not go to plan. On October 20, 2026, details of two unpatched, high-severity RCE vulnerabilities in PHP core began circulating on social media, along with a reference to an embargoed release planned for late October.
Maintainers knew adversaries could reverse-engineer the leaked parameters. So the open-source PHP team worked with national cybersecurity agencies and moved the official patch release forward to October 21, 2026, at 13:30 UTC.
Scanning followed almost immediately. Researchers at watchTowr documented in-the-wild exploitation probes hitting their global honeypot nodes before many enterprise change boards had even convened. European government departments temporarily restricted access to public portals as a precaution, and cloud hosting platforms began deploying virtual patching rules to shield downstream customers.

| Date / UTC Time | Milestone / Event | Source / Attribution |
|---|---|---|
| October 20, 2026 (18:00 UTC) | Technical details of two critical PHP zero-day vulnerabilities leak publicly on social platforms. | watchTowr Intelligence |
| October 21, 2026 (02:00 UTC) | Active scanning and weaponized probes recorded targeting public-facing web servers. | watchTowr Attacker Eye |
| October 21, 2026 (13:30 UTC) | The PHP Group publishes emergency patched versions for active branches (8.2 through 8.5). | PHP Security Advisory |
| October 21, 2026 (16:00 UTC) | CISA issues urgent alert ordering administrators to prioritize internet-facing web tiers. | CISA Alert |
| October 21, 2026 (18:00 UTC) | Unit 42 reveals Cortex Xpanse identified over 22.6 million internet-exposed PHP instances. | Unit 42 Threat Brief |
| October 22, 2026 (01:00 UTC) | The NSA publishes a cybersecurity advisory recommending immediate deployment of PHP fixes. | NSA Cybersecurity Advisory |

Vulnerability Facts at a Glance
The technical attributes of both vulnerabilities, drawn from verified vendor documentation and national advisory disclosures, are below:
| Field | Verified Information |
|---|---|
| CVE IDs | CVE-2026-109618 and CVE-2026-109619 |
| Product & Vendor | PHP Core Engine (The PHP Group) |
| CVSS v4.0 Score & Vector | 9.2 Critical (CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N) |
| CVSS v3.1 Score | 9.8 Critical (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| CWE Classification | CWE-703: Improper Check or Handling of Exceptional Conditions / CWE-416: Use After Free |
| Vulnerability Type | Remote Code Execution (Memory Corruption / Unsafe Control Flow) |
| Exploit Status | Public Proof-of-Concept Available / Actively Exploited in the Wild |
| CISA KEV / National Alerts | High-Priority CISA Alert / NSA Advisory / CERT-EU 2026-018 / NCSC-NZ Alert |
| Threat Actor Attribution | Multiple opportunistic scanning syndicates and botnet operators (Unattributed) |
| Patch Status | Official patches available for supported 8.x releases; vendor backports for legacy systems |
Affected and Fixed Versions
The exposure spans every major PHP release branch used across web applications, hosting panels, and containerized microservices. In practical terms, the supported 8.2 through 8.5 branches have a patch, and everything older needs a vendor backport or compensating controls.
| Software / Component | Affected Versions | Fixed / Patched Version | Official Workaround / Mitigation |
|---|---|---|---|
| PHP 8.5 Branch | Versions prior to 8.5.12 | PHP 8.5.12 | Apply vendor update; restrict untrusted body payload sizes. |
| PHP 8.4 Branch | Versions prior to 8.4.27 | PHP 8.4.27 | Upgrade packages via OS repository or container rebuild. |
| PHP 8.3 Branch | Versions prior to 8.3.36 | PHP 8.3.36 | Deploy updated runtime binaries immediately. |
| PHP 8.2 Branch | Versions prior to 8.2.35 | PHP 8.2.35 | Upgrade to official maintenance point release. |
| PHP 8.1 & Older (8.0, 7.x, 5.x) | All versions (End-of-Life) | No upstream patch; use OS vendor Extended Security Maintenance (ESM) | Enforce WAF virtual patching; isolate server behind private ingress proxy. |

Technical Attack Chain
To see how the php2shell exploit works, defenders need to look at the Zend Engine’s internal request lifecycle:
[Remote Attacker]
│ (Transmits HTTP POST with maliciously structured, oversized multipart data)
▼
[Web Server (Nginx / Apache)] ──► Passes payload to FastCGI Process Manager (php-fpm)
│
▼
[Zend Engine Memory Manager] ──► Allocator encounters deliberate Out-Of-Memory (OOM) threshold
│
├─► CVE-2026-109618 (Unsafe longjmp Control Flow)
│ longjmp() aborts execution, bypassing clean shutdown routines
│ Request data structures left partially initialized in memory
▼
[Subsequent Worker Request Cycle]
│
├─► CVE-2026-109619 (Global State Use-After-Free)
│ Global pointers reference freed heap blocks from prior failed request
│ Attacker's second payload overwrites function pointers in reclaimed heap memory
▼
[Arbitrary Code Execution] ──► Spawns interactive reverse shell under web user permissions (www-data)
1. Initial Heap Manipulation & Out-of-Memory Induction
The attacker starts by sending crafted HTTP multipart form submissions built to exhaust the PHP engine’s per-request allocation limits. Normally, exceeding memory_limit triggers a graceful bailout. CVE-2026-109618 exposes a critical flaw in how PHP handles low-level C longjmp() jumps during out-of-memory conditions. The abrupt jump halts execution while internal request-tracking structures are left in an uninitialized state.
2. State Confusion & Use-After-Free (CVE-2026-109619)
The accompanying vulnerability, CVE-2026-109619, completes the weaponization sequence. The request handler failed to release its resources cleanly during the longjmp() bailout, so global engine pointers still reference memory that has been deallocated. When the persistent PHP-FPM worker process handles the next incoming HTTP request, the engine tries to read or execute functions referenced by those dangling pointers.
3. What the Attacker Did Next
An attacker who sends a companion request right after the induced crash can place controlled bytecode into newly allocated heap memory. The dangling pointer then branches straight into that shellcode. In telemetry observed by threat researchers, attackers used this execution window to spawn background processes (/bin/sh, /bin/bash), deploy stealthy memory-only webshells, and harvest database connection parameters directly from wp-config.php, .env, and configuration caches.
Why Patching Alone May Not Be Enough
Updating PHP closes the memory allocation flaw. It does not evict an attacker who got in during the pre-patch window.
- Persistent Webshells in Writable Directories: Once arbitrary code execution occurs, attackers routinely drop secondary backdoors into media directories (such as wp-content/uploads/ or /tmp/), disguised as benign image or font files.
- Compromised Backend Credentials: Web applications running on PHP store cleartext database credentials, API access keys, and cloud storage tokens in environment variables or configuration files. If an attacker achieved RCE, assume those secrets were exfiltrated.
- Living-off-the-Land Persistence: Threat actors have been observed establishing persistent cron jobs (crontab -e) and adding SSH public keys to the authorized keys of the web server service account (www-data or apache).
Indicators of Compromise (IOCs) & Hunting Telemetry
SOC analysts and network defenders should hunt for the following network artifacts and behavioral patterns:
| Indicator Type | Value / Pattern | Description & Context |
|---|---|---|
| Process Execution | Parent: php-fpm, httpd, apache2 → Child: sh, bash, python, curl, wget | Highly anomalous process spawn indicating post-exploitation shell escape. |
| Web Server Log Pattern | Rapid pairs of HTTP 500 errors followed immediately by 200 OK from same source IP | Artifact of initial OOM memory-state crash followed by heap reallocation request. |
| System Log Signatures | php-fpm: segfault at … error 4 in libc | Memory segmentation fault logs in syslog or dmesg caused by failed exploit attempts. |
| Network Telemetry | Outbound TCP connections from web server IP to non-standard high ports (>1024) | Reverse shell callback activity established by automated exploit scripts. |
| File Modification | New PHP files created within static upload directories within the past 48 hours | Common location for secondary dropped webshells. |

SOC & IT Emergency Response Checklist
Work through this prioritized, six-step plan to protect your web application tier.
- Inventory All Running PHP Environments. Find every active PHP instance across bare-metal servers, virtual machines, cloud instances (AWS EC2, Azure VMs, GCP Compute), and containerized deployments (Docker, Kubernetes). Stale container images and forgotten staging servers are easy to miss, so check them too.
- Apply Upstream Security Patches Immediately. Upgrade PHP to one of the secured releases (8.5.12, 8.4.27, 8.3.36, or 8.2.35). In Linux environments, refresh your package managers:
# Debian / Ubuntu
sudo apt update && sudo apt --only-upgrade install php*-fpm php*-cli
# RHEL / Rocky / AlmaLinux
sudo dnf upgrade php php-fpm
- Restart Web and FastCGI Services. Make sure active worker processes are terminated and replaced with patched binaries:
sudo systemctl restart php*-fpm nginx apache2
- Deploy Temporary WAF Inspection Rules. If you cannot patch right away, configure your Web Application Firewall (Cloudflare, AWS WAF, ModSecurity) to reject incoming HTTP requests that contain excessively large or nested multipart form boundaries.
- Inspect Process Trees for Web-Spawned Shells. Query your Endpoint Detection and Response (EDR) tooling or run system checks to find active interactive shells spawned by web daemons:
pgrep -a -P $(pgrep -d, -f "php-fpm|apache2|httpd")
- Audit and Rotate Application Secrets. If unexpected worker crashes or unfamiliar child processes were logged between October 20 and October 22, rotate all database passwords, encryption salts, and cloud service credentials configured in application files.

Global Regulatory & Compliance Implications
Enterprise security leaders need to coordinate incident assessment across several reporting regimes at once:
| Jurisdiction / Regulatory Body | Mandatory Notification Window | Key Regulatory Obligation |
|---|---|---|
| United States (CISA / SEC / CIRCIA) | 4 Business Days (SEC Form 8-K) / 72 Hours (CIRCIA) | Public companies must disclose material breaches via Form 8-K. Critical infrastructure operators must notify CISA within 72 hours under CIRCIA once active exploitation leads to operational impact. |
| United Kingdom (NCSC / ICO) | 72 Hours | Under UK GDPR, organizations experiencing personal data exposure following web server compromise must notify the Information Commissioner’s Office (ICO) within 72 hours. |
| Australia (ASD ACSC / SOCI Act) | 12 Hours (Critical) / 72 Hours (Other) | The Security of Critical Infrastructure (SOCI) Act requires critical infrastructure entities to report significant cyber incidents to the Australian Signals Directorate (ASD) within 12 hours. |
| European Union (NIS2 / GDPR) | 24-Hour Early Warning / 72-Hour Full Notification | The NIS2 Directive mandates a 24-hour early warning for significant incidents affecting essential and important entities, alongside standard 72-hour GDPR breach reporting. |
| India (CERT-In) | Within 6 Hours | Under Section 70B(6) of the Information Technology Act, 2000 (April 2022 Directions), all Indian corporate entities, intermediaries, and data centers must report cybersecurity incidents to CERT-In within 6 hours of discovery. |
Disclaimer: This regulatory summary provides operational security context and does not constitute formal legal counsel.
CyberInfos Analyst Insight
From an investigative and defensive engineering perspective, three takeaways stand out from the php2shell incident.
Process Isolation Must Replace Ambient Trust.
Too many enterprise architectures run PHP-FPM processes with direct read access to local disks, network shares, and outbound internet connections. Hardening the web tier means running PHP workers in restricted seccomp sandboxes and blocking outbound network access at the firewall. That way, reverse shell callbacks fail even when a memory corruption bug exists.
The End-of-Life Technical Debt Trap.
Millions of web servers worldwide continue to run PHP 7.4, 8.0, or 8.1. Upstream maintainers do not release public patches for unsupported branches, so organizations on outdated runtimes face severe exposure unless they pay for commercial vendor support or complete a modernization upgrade.
Rapid Exploitation Requires Preemptive Runtime Defenses.
The gap between the initial leak and automated scanning was under twelve hours. Manual patch cycles alone can’t keep pace with that. Modern SOCs need pre-configured WAF virtual patch rulesets that can block exploit payloads within minutes of validating a threat signal.
Frequently Asked Questions (FAQ)
What is CVE-2026-109618?
It is a critical remote code execution vulnerability in PHP core, caused by unsafe memory handling during out-of-memory errors. Unauthenticated attackers can use it to execute arbitrary code on web servers.
What is the difference between CVE-2026-109618 and CVE-2026-109619?
CVE-2026-109618 involves improper control flow management during memory allocation failures, while CVE-2026-109619 exploits the resulting dangling pointer in subsequent requests through a use-after-free condition.
Which PHP versions have official security patches?
The PHP Group released official security updates for active supported branches: PHP 8.5.12, PHP 8.4.27, PHP 8.3.36, and PHP 8.2.35.
Are older PHP releases like 7.4 or 8.1 vulnerable?
Yes. The underlying architectural code exists in PHP 5, 7, and 8. Older versions are end-of-life and receive no official community patches, so they require OS vendor backports or strict WAF mitigation.
Can an attacker exploit this vulnerability without authentication?
Yes. The vulnerability can be triggered remotely by sending specially crafted HTTP POST requests to any publicly reachable PHP script that accepts input.
Final Thoughts
The disclosure of CVE-2026-109618 is a reminder of how fragile foundational web technology can be when low-level memory corruption bugs reach the open internet. Treat this advisory as an emergency. Inventory every public-facing system, apply the official PHP updates immediately, and review process execution logs to confirm your environment is clean.
Stay informed with actionable intelligence: Follow CyberInfos.in on LinkedIn, X (Twitter), and our dedicated WhatsApp Channel for daily breaking vulnerability analyses, reverse-engineering teardowns, and defensive implementation playbooks.
