CRITICAL CVSS 9.2 Official Patches Released 21 Oct 2026 Active Exploitation Reported

Is your PHP site exposed to php2shell? (CVE-2026-109618 & 109619)

Free online vulnerability checker, minimum secure PHP version matrix (8.5.12, 8.4.27, 8.3.36, 8.2.35), and platform patch guides.

Passive check: sends a single non-destructive GET request to inspect HTTP response headers. No exploit, no POST body, no fuzzing.

Official Affected and Fixed PHP Versions

Source: Upstream php.net security releases and GitHub advisories (GHSA-w8hw-w9fx-j79w and GHSA-6wmf-4rv5-p3rp), published 21 October 2026.

PHP Branch Vulnerable Scope First Fixed Release Official Status & Action Required
PHP 8.5 < 8.5.12 8.5.12 Active Support — Upgrade to 8.5.12+
PHP 8.4 < 8.4.27 8.4.27 Active Support — Upgrade to 8.4.27+
PHP 8.3 < 8.3.36 8.3.36 Active Support — Upgrade to 8.3.36+
PHP 8.2 < 8.2.35 8.2.35 Security Only (EOL Dec 2026) — Upgrade to 8.2.35+
PHP 8.6 < 8.6.0RC4 8.6.0RC4 Development RC — Testing only, not for production
PHP 8.1, 8.0, 7.4 All versions No official release End of Life (EOL) — Vulnerable unless vendor backported patch
PHP 5.4 – 7.3 All versions No fix available Legacy Vulnerable — Disable session.upload_progress
Important note on Linux Distribution Packages:

Ubuntu, Debian and RHEL backport security fixes without updating upstream version numbers (e.g. Ubuntu 22.04 ships 8.1.2-1ubuntu2.28). Check your package changelog using our Ubuntu fix guide before panicking.

Do This Now: 4-Step Remediation Protocol

Follow these steps in strict sequence. Nothing else provides complete protection against PHP2Shell.

01

Find Every PHP Runtime

Audit web servers, Docker containers, base images, and staging sites. Note that your CLI version (php -v) may differ from what PHP-FPM or Apache actually executes.

View inventory commands →
02

Install a Fixed Release

Upgrade to official releases: 8.5.12, 8.4.27, 8.3.36, or 8.2.35. Updating CMS plugins (WordPress, Drupal, Laravel) does NOT fix PHP core runtime vulnerabilities.

Select your platform guide →
03

Restart All PHP Daemons

CRITICAL STEP: Upgraded binaries are NOT loaded until worker pools are restarted. Restart PHP-FPM, Apache, FrankenPHP, Swoole, and queue workers immediately.

sudo systemctl restart php*-fpm apache2
04

Verify and Look Back

Confirm the active web server reports the patched version. Audit access logs since early October 2026 for abnormal multipart upload crashes, and rotate critical database and API keys.

Re-run diagnostic check →

Server Self-Check Terminal Commands

Run these commands via SSH on your servers to determine the real active PHP package version:

Ubuntu / Debian: Check installed packages and CVE changelog
dpkg -l 'php*' 'libapache2-mod-php*' | grep ^ii
zgrep -E "CVE-2026-10961[89]" /usr/share/doc/php*-common/changelog*
RHEL / AlmaLinux / Rocky Linux: Inspect RPM changelog
rpm -qa | grep -Ei "^(php|ea-php|alt-php)" | sort
rpm -q --changelog php-common | grep -E "CVE-2026-10961[89]"
Docker: Check PHP version inside a running container
docker exec -it <container_name> php -v
docker exec -it <container_name> php -m | grep session

Frequently Asked Questions (FAQ)

The checker says the version is hidden. Am I safe? ▼

Not necessarily. Hiding X-Powered-By only conceals the version banner; it does not fix the underlying vulnerability. Run the self-check CLI commands directly on your server.

Does this checker attack or scan my site? ▼

No. It sends one normal GET request to inspect HTTP response headers. It transmits no exploit payloads, no POST bodies, and performs no path scanning.

Is there a temporary workaround if I cannot update today? ▼

Yes. Disabling session.upload_progress.enabled = Off in your global php.ini and reloading PHP-FPM neutralizes the primary UAF attack path. However, php.net advises that updating the PHP engine is the only comprehensive resolution.

Why must I restart PHP-FPM or Apache after upgrading? ▼

Package updates only update files on disk. Running PHP-FPM and Apache worker processes retain the vulnerable code in RAM until services are restarted.

Does a Web Application Firewall (WAF) completely block PHP2Shell? ▼

No. While WAF rules can block known exploit signatures, adversaries can pad multipart boundaries or alter chunk sizes to bypass inspection bodies without triggering WAF thresholds.

Are older PHP 7.4 or 8.0 sites safe? ▼

No. All PHP versions from 5.4 through 8.5 are structurally vulnerable to the RFC1867 upload progress UAF. Because 7.4 and 8.0 are EOL, you must apply vendor backports or disable upload progress.

Does this vulnerability affect command-line CLI scripts? ▼

Pure CLI execution without multipart POST handling is generally not exposed. However, web-accessible SAPIs (PHP-FPM, Apache mod_php, FrankenPHP, Swoole) are fully vulnerable.

Can WordPress plugins fix this vulnerability? ▼

No. Security plugins execute inside PHP userland AFTER the engine parses multipart requests. The vulnerability triggers in native C code before any PHP plugin executes.

Technical Research: 20 peer-reviewed advisories, C-source teardowns, exploit mechanics & defensive playbooks.