CRITICAL ADVISORY: PHP2Shell (CVE-2026-109618 / CVE-2026-109619) Pre-Auth RCE — CVSS 4.0 9.2
Source review: 22 Oct 2026Open hardening generator →
DEFENSIVE RESPONSE • ASSESS, CONTAIN, PATCH, VERIFY

PHP2Shell Vulnerability Checker & Mitigation & Hardening Generator

Check my PHP versionGenerate hardening configFree · Runs locally · No server credentials

PHP2Shell (tracked as CVE-2026-109618 and CVE-2026-109619) covers critical Remote Code Execution (RCE) flaws in PHP request lifecycle handling. Out-of-memory cleanup and stale state across requests can expose web workers; multipart/form-data and session.upload_progress can be involved in some PHP2Shell attack paths. An upload form is not required for every affected deployment, and exploitability depends on the SAPI, application and configuration. Use our interactive hardening suite below to audit your PHP version and prepare layered PHP2Shell containment across php.ini, Nginx, Apache, Docker, and Cloudflare WAF.

TL;DR EXECUTIVE SUMMARY — PHP2SHELL RESPONSE FACTS (22 OCT 2026)
CVSS v4.0 Base Score: 9.2 / 10.0 (CRITICAL)

• Vulnerability Name: PHP2Shell (CVE-2026-109618 & CVE-2026-109619)

• Root Cause: Out-of-memory cleanup corruption and stale global state across requests. PHP's session.upload_progress feature is one relevant path; matching PHP_SESSION_UPLOAD_PROGRESS fields alone cannot cover both CVEs.

• Affected Scope: Unpatched upstream PHP branches through PHP 8.5 (prior to patched builds 8.2.35, 8.3.36,8.4.27, and 8.5.12). Disabling session.upload_progress.enabled alone is not a complete PHP2Shell fix.

• Immediate PHP2Shell Containment: Set session.upload_progress.enabled = Off in php.ini or inject fastcgi_param PHP_ADMIN_VALUE "session.upload_progress.enabled=0"; only as a partial control. Install both patches and replace every PHP worker.

• PHP2Shell Hardening Compatibility: Test your actual application. Modern frameworks (WordPress, Laravel, Drupal, Symfony, Magento) handle uploads via $_FILES and XHR streams, not legacy session upload progress. Custom progress polling may still depend on it.

Step 1: Interactive PHP2Shell Version & CMS Exposure Evaluator

Select your server's active PHP branch and application stack to evaluate your immediate PHP2Shell risk posture and required patch level.

Fixed: 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12

Local PHP2Shell advisory comparison only. No network scan is performed. Use the version from the web SAPI; PHP CLI may use another binary or INI file.

PHP2Shell Application Stack:
9.2 CRITICALStack: WordPress / WooCommerce on PHP 8.3.x

ACTION REQUIRED: Upgrade PHP 8.3.x to PHP 8.3.36+ and Verify All Workers

Production workloads using upstream PHP 8.3.0 through 8.3.35 need the PHP2Shell security updates. The two CVEs concern out-of-memory cleanup and stale request state; exploitation conditions vary across runtime configurations. Because WordPress / WooCommerce may use standard PHP SAPI handlers (PHP-FPM, FastCGI, or Apache mod_php), review the serving runtime. PHP may process multipart/form-data payloads before WordPress / WooCommerce routing or CSRF middleware executes; middleware cannot replace the PHP patch.

Recommended PHP2Shell Remediation: Update to PHP 8.3.36 or later, replacing every web worker. Use the generator for additional containment and validate its limits against your application and infrastructure.
Upstream Builds:8.3.0 – 8.3.35
Fixed / Vendor Path:PHP 8.3.36+
Relevant Input:RFC 1867 Multipart POST
Containment:Partial (php.ini / WAF)
Generate PHP 8.3.x Hardening Config ↓

Step 2: PHP2Shell Mitigation Configuration Generator

Can't recompile binaries or reboot production nodes right now? Select your infrastructure layer below for reviewable PHP2Shell hardening examples for CVE-2026-109618 and CVE-2026-109619 while arranging a patched runtime. Edge configuration can often be reloaded, but full remediation requires replacing workers and validating availability.

6 of 6 environments

php.ini startup hardening

Partial risk reduction

Target Location: /etc/php/8.3/fpm/php.ini

Reduce the session upload progress attack surface while arranging the complete PHP2Shell patch. Standard $_FILES processing is independent, but application-specific progress polling may stop working. Configure the web SAPI, replace all workers, and confirm effective settings through a restricted diagnostic endpoint.

Restart or replace every PHP worker after a startup configuration change. A graceful reload can overlap old workers. Disabling upload progress addresses a session path, not both CVEs completely. Test features that poll session upload progress.

; php.ini syntax only. PHP2Shell session-path hardening is not a full fix.
session.upload_progress.enabled = Off
session.upload_progress.cleanup = On
; Restart every web worker after this change.
; PHP 8.5 only: also evaluate fatal_error_backtraces = Off per the advisory.
Apply & Verify Command: sudo php8.3-fpm -t && sudo systemctl restart php8.3-fpm

Step 3: PHP2Shell CLI Vulnerability Audit & Log Forensics Suite

Run these read-only diagnostic commands in your terminal to review configuration and indicators related to PHP2Shell and audit your Nginx/Apache access logs for historical PHP_SESSION_UPLOAD_PROGRESS indicators. CLI configuration can differ from FPM, and ordinary access logs usually omit request bodies and cookies.

1. Local Runtime Check (Bash Scanner / CLI)

Instant PHP2Shell Runtime Configuration Check

Inspects your active PHP CLI and INI configuration to verify whether session.upload_progress.enabled is active.

php -r 'echo "PHP Version: ".PHP_VERSION."
Upload Progress: ".(ini_get("session.upload_progress.enabled") ? "ENABLED (review web SAPI)" : "DISABLED (not a safety verdict)")."
";'
2. Compromise Forensics (Nginx / Apache Logs)

Scan Server Logs for PHP2Shell Exploitation Probes

Searches uncompressed HTTP access and error logs for anomalous PHP_SESSION_UPLOAD_PROGRESS query strings or FPM worker segmentation faults (SIGSEGV).

sudo grep -rnE "PHP_SESSION_UPLOAD_PROGRESS|SIGSEGV.*php-fpm" /var/log/nginx/ /var/log/apache2/ /var/log/php* 2>/dev/null

PHP2Shell WordPress audit & IDS rule suite

Use these PHP2Shell response checks and local heuristics alongside vendor advisories. They do not scan a remote host or certify that exploitation has been blocked.

PHP2Shell WordPress integrity check (WP-CLI)

Run as the site owner from the WordPress root. Checks published core/plugin checksums where available; custom and premium code needs a separate integrity review. This does not establish PHP patch status.

wp core version
wp core verify-checksums
wp plugin verify-checksums --all --strict
wp eval 'echo PHP_VERSION, PHP_EOL, PHP_SAPI, PHP_EOL;'
PHP2Shell Suricata HTTP indicator rule

A local heuristic, not a confirmed exploit signature. Requires plaintext HTTP visibility or TLS termination and sufficient request-body inspection limits. Review alerts before taking action.

alert http $EXTERNAL_NET any -> $HOME_NET any (msg:"LOCAL upload progress marker observed - investigate"; flow:established,to_server; http.request_body; content:"PHP_SESSION_UPLOAD_PROGRESS"; nocase; classtype:misc-activity; sid:9900618; rev:1;)

# Validate with your installed Suricata version before loading:
# suricata -T -c /etc/suricata/suricata.yaml -S local.rules
PHP2Shell response YARA file triage rule

A broad local triage heuristic for suspicious PHP files. Matches are not proof of compromise; legitimate code may match. It does not identify this memory corruption exploit or scan encrypted traffic.

rule Local_Suspicious_PHP_Execution_Review
{
  meta:
    description = "PHP file triage only; manual review required"
  strings:
    $php = "<?php" nocase
    $decode = /base64_decode\s*\(/ nocase
    $exec = /(eval|shell_exec|system|passthru)\s*\(/ nocase
  condition:
    filesize < 2MB and $php and $decode and $exec
}

// Save as triage.yar; run: yara -r triage.yar /var/www/html
Layered Containment & Runtime Patching

Managing PHP2Shell Across Multiple Servers or Legacy WordPress Clients?

Manual php.ini hardening across dozens of droplets or shared cPanel accounts leaves dangerous blind spots. Deploy managed WAF controls to reduce PHP2Shell exposure at the network edge while tracking verified runtime upgrades for every origin server.

EDGE WAF & DDOS SHIELD

Cloudflare Managed WAF

Review managed rules for malformed multipart POST streams and PHP2Shell coverage with your provider. No generic edge rule replaces both runtime patches; keep the origin access policy aligned with the proxy.

View PHP2Shell Cloudflare WAF Rule
WORDPRESS & CMS HARDENING

Sucuri Website Security & WAF

For EOL PHP 7.4 and shared hosting environments where you cannot edit system-level php.ini files, ask the provider about verified backports, incident response and the limits of managed filtering.

See Apache Deployment Guidance
CONTAINER & CI/CD SCANNING

PHP2Shell Container Image CVE Auditing

Inventory php:8.2-fpm and php:8.3-apache base images in GitHub Actions and Kubernetes, then verify the actual package patch level before deployment.

Get Docker Override Snippet
In-Depth Technical Advisory • CVE-2026-109618 & CVE-2026-109619

Anatomy of the PHP2Shell Vulnerability: How Pre-Authentication RCE Occurs in RFC 1867 Multipart Upload Tracking

The PHP2Shell response concerns two critical PHP runtime vulnerabilities published on 21 October 2026: CVE-2026-109618 and CVE-2026-109619. The first concerns invalid memory during out-of-memory cleanup; the second concerns request-owned state that can outlive the request. The PHP project rates each at CVSS 4.0 9.2. These are runtime security issues, so a WordPress plugin update, Laravel middleware change, or Drupal routing rule cannot substitute for the applicable PHP security release. Use the official advisories linked below to review your serving SAPI, package provenance and application conditions. This independent PHP2Shellguide supports response planning; it does not certify a host as safe or establish whether an incident has already occurred.

1. Why Even Pages Without File Upload Forms Are Vulnerable to PHP2Shell

A common misconception among system administrators is that a website only needs a PHP2Shell assessment if it publicly hosts an HTML file upload form. In reality, PHP automatically invokes its RFC 1867 multipart parser when a reachable .php endpoint (such as index.php or wp-login.php) receives an HTTP POST request bearing the Content-Type: multipart/form-data header.

When session.upload_progress.enabled is enabled, PHP can track a multipart upload using a form field whose default name is PHP_SESSION_UPLOAD_PROGRESS. That name is configurable, so a rule matching only the default string is a narrow indicator. In the session lifecycle case, upload progress can touch state before normal session initialization. This explains why the feature deserves attention during PHP2Shell response, but it does not mean that every affected host has an identical attack path. The OOM and stale-state advisories describe broader conditions across server APIs, applications and extensions. Disable unused progress tracking as additional hardening, then verify the setting in the actual web runtime. Ordinary $_FILES uploads are separate from this feature, while custom progress polling needs regression testing. Resolve both CVEs with a complete patched build and replacement of all old web workers.

2. Comparing PHP2Shell Remediation Methods: Upgrade vs. php.ini vs. Edge WAF

Depending on your infrastructure architecture, change-management windows, and whether you run End-of-Life (EOL) PHP branches, you can address PHP2Shell at three operational layers. Only the complete runtime patches resolve both vulnerabilities. The matrix below compares each defense strategy:

Select a method to open its configuration.
Remediation options and their deployment requirements
PHP2Shell Defense MethodProtection LevelDowntime RequiredWorks on EOL PHP (5.6–8.1)?Best Use Case
Complete Upstream PatchesReplace Every Worker / ContainerNo (Unless Distro Backported)Complete remediation on supported PHP 8.2–8.5 branches; verify package provenance.
Partial Session-Path ReductionWorker Replacement RequiredYes (All PHP 5.4+ Versions)Temporary session-path hardening; does not cover all runtime paths.
Partial Session-Path ControlNginx Reload; Verify PHP WorkersYesAdditional FastCGI control; prefer startup configuration and patch PHP.
Heuristic / Vendor-SpecificNo Origin Restart for Edge RuleYesAdditional fleet-wide containment; inspection limits and bypasses apply.

Complete upstream fixes require a supported patched build and replacement of all workers. Verify your vendor backport if the displayed upstream version is older.

Review official patch advisory

3. Defense-in-Depth: Combining Edge Filtering with Runtime Hardening

Security teams responding to PHP2Shell should combine exposure reduction, complete patching and incident review. Inventory every origin and worker, including background services, containers and hosting control panels. Apply appropriate edge limits or provider rules while obtaining the verified runtime update, then replace all workers and test normal traffic. Disabling session.upload_progress.enabled can reduce one path; it cannot support a complete PHP2Shell safety verdict. Keep a rollback plan for operational changes without rolling the runtime back to a vulnerable build. Preserve logs and investigate unexpected files, child processes and outbound connections. A patched version prevents the addressed flaws from being reused, but does not remove a pre-existing webshell or resolve stolen credentials. The absence of a marker or crash is not evidence that compromise did not occur.

PHP2Shell primary sources & verification

Reviewed 22 October 2026. This is an independent PHP2Shell response utility. Recheck upstream advisories and your vendor package before production changes.

Frequently Asked Questions (PHP2Shell / CVE-2026-109618 Guide)

Direct answers to the most critical engineering and DevOps questions surrounding the PHP2Shell vulnerability.

PHP2Shell refers to CVE-2026-109618 and CVE-2026-109619, critical PHP runtime flaws rated CVSS 4.0 9.2. The official reports describe out-of-memory cleanup corruption and stale global state across requests. Remote code execution is possible under affected conditions; session upload progress is one relevant path, not the entire cause. Assess the serving SAPI, application and extensions using both PHP project advisories.