PHP2Shell RCE (CVE-2026-109618): Triage, Log IOCs & Perimeter Lockdown
Complete practitioner remediation guide for PHP2Shell (CVE-2026-109618 & CVE-2026-109619) unauthenticated remote code execution on Nginx, Apache, Windows IIS and PHP-FPM.
1. Vulnerability Summary & Affected PHP Versions
Disclosed in October 2026, PHP2Shell (tracked as CVE-2026-109618 and CVE-2026-109619) is a critical unauthenticated Remote Code Execution (RCE) flaw in how unpatched PHP CGI/FastCGI handlers parse crafted query-string stream descriptors and environment overrides (`allow_url_include` / `auto_prepend_file` injection vectors).
- PHP 8.5 Branch: Vulnerable below
8.5.12(Patched in 8.5.12+) - PHP 8.4 Branch: Vulnerable below
8.4.27(Patched in 8.4.27+) - PHP 8.3 Branch: Vulnerable below
8.3.36(Patched in 8.3.36+) - PHP 8.2 Branch: Vulnerable below
8.2.35(Patched in 8.2.35+) - PHP 8.1, 8.0, 7.4 & Older: End-of-Life (EOL) — requires immediate perimeter WAF/FastCGI rule blocking or runtime upgrade.
2. Hunting PHP2Shell Indicators of Compromise (IOCs) in Access Logs
Before and after patching, audit your Nginx, Apache, and IIS access logs for encoded `-d`, `auto_prepend_file`, `allow_url_include`, and `php://input` stream probes:
Our £24 (~$30 USD) Remediation Pack includes tools/php2shell_local_triage.sh, an automated read-only Linux/macOS forensic scanner that checks all installed `php-fpm` and CLI binaries, audits active `php.ini` files for dangerous directives, and scans compressed log archives automatically.
3. Defense-in-Depth: Nginx, Apache, IIS & php.ini Hardening
Even on patched runtimes, security baselines (NIST SP 800-53, ISO 27001, SOC 2, and UK Cyber Essentials v3.2) require stripping version leakage (`expose_php = Off`), disabling OS shell execution primitives in production, and blocking malformed FastCGI path splits:
Frequently Asked Questions
Which PHP versions are vulnerable to CVE-2026-109618 (PHP2Shell)?
All PHP branches prior to the October 2026 security release: PHP 8.5 below 8.5.12, PHP 8.4 below 8.4.27, PHP 8.3 below 8.3.36, PHP 8.2 below 8.2.35, and all End-of-Life branches (8.1, 8.0, 7.x).
Can I mitigate PHP2Shell at the Nginx, Apache, IIS or Cloudflare WAF layer while waiting for a maintenance window?
Yes. Blocking query strings containing auto_prepend_file, allow_url_include, php://input and encoded -d arguments at your reverse proxy or WAF stops remote exploitation before requests reach PHP-FPM or FastCGI. Drop-in rules for Nginx, Apache, IIS and Cloudflare are included in the FaultyPacket £24 Remediation Pack.
Deploy the Automated Fix in Minutes — Or Grab Our 100% Free Chrome Extensions
Need drop-in Nginx/Apache/IIS/Cloudflare configs, offline Python & PowerShell collectors, and board-ready HTML reports? Choose a standalone pack (£19 NIS2, £24 DMARC/PHP2Shell, £29 Cyber Essentials v3.3) or get all 3 in the £39 Complete Bundle (Save 46%).
Both of our Chrome MV3 extensions are 100% Free Forever (zero paywall, zero telemetry). Download them below or fuel the Lab Fund:
Did a Free Extension or Diagnostic Just Save You a Ticket Escalation, a £320 Retest, or an Hour in PowerShell?
Why is this tip jar here? Because we made both of our Chrome MV3 extensions (Table & Grid Exporter and Security, DNS & PHP2Shell Inspector) plus all 5 live browser diagnostics 100% Free Forever instead of charging $12/mo SaaS fees or harvesting your email into a CRM. If our free tools saved you time today, fuel independent zero-telemetry engineering: