NewsSecurity

PHP2Shell: Critical PHP RCE — Patch Now

PHP2Shell critical RCE vulnerability - cracked PHP logo with security warning symbols
PHP2Shell (CVE-2026-109618 & CVE-2026-109619) — critical unauthenticated RCE in PHP

CISA’s deadline for federal agencies to patch PHP2Shell passed yesterday. Censys estimates 32.51 million PHP services still run vulnerable versions. If you run PHP — on a server, in a container, behind a managed host — read this before you move on.

What PHP2Shell Is

PHP2Shell is the name for two critical vulnerabilities disclosed on October 21: CVE-2026-109618 and CVE-2026-109619, both rated CVSS 9.2. Both enable unauthenticated remote code execution. Neither requires your application to do anything wrong.

CVE-2026-109618 exploits how PHP handles memory exhaustion during request parsing. When an allocation fails mid-operation, PHP’s cleanup routine encounters partially initialized data — and interprets stale heap bytes as valid PHP values, including destructor callbacks. An attacker who grooms memory correctly can call system() with whatever they want. CVE-2026-109619 is a use-after-free: request-owned state persists after its memory is freed, and subsequent workers on the same process can read it before it’s reset.

The detail that matters most: exploitation fires during request parsing, before any application code runs. Your login walls, rate limits, and input validation are irrelevant. The exploit lands at the PHP runtime layer, not your application layer.

How Bad Is Exploitation?

Exploitation started before the patch dropped. Amazon’s MadPot honeypot recorded PHP2Shell attempts on October 17 — four days before disclosure. Delft University’s Threat Intelligence Lab tracked over 50,000 exploitation requests from more than 600 IP addresses across 70 countries. Of those, 171 addresses went past probing to deliver actual exploit code or malware droppers.

Perplexity security researcher Adel Karimi confirmed 35 successful shell executions across three honeypots running PHP 8.4.26 under Apache mod_php. His verdict: “This is now confirmed RCE with usable memory disclosure, not just a crash followed by a suspicious process.” An Israeli cybersecurity firm reported 25 servers compromised via a chained PHP2Shell attack on October 26. CISA added both CVEs to its Known Exploited Vulnerabilities catalog on October 26, with a federal agency deadline of October 29.

Affected Versions

Every PHP installation serving web requests is affected — PHP-FPM, Apache mod_php, php-cgi, FrankenPHP, and LiteSpeed. Apache mod_php carries the highest demonstrated risk. The fixed versions:

  • PHP 8.5 → update to 8.5.12
  • PHP 8.4 → update to 8.4.27
  • PHP 8.3 → update to 8.3.36
  • PHP 8.2 → update to 8.2.35
  • PHP 8.1 and older → no official fix; use a verified vendor backport or migrate

One gotcha: Ubuntu 24.04 may display an older version string while the package itself contains the backported fix. Verify your package version rather than trusting the display string alone.

How to Patch

Managed hosting: Most major hosts confirmed complete patches as of October 28 — Kinsta, WP Engine, Cloudways, DreamHost, SiteGround, Flywheel, Namecheap, and OVHcloud. Do not accept “we added firewall protection” as confirmation. Ask specifically whether PHP itself was updated for CVE-2026-109618 and CVE-2026-109619. WordPress users can verify their current PHP version under Tools → Site Health → Info → Server.

Self-hosted / VPS: Install the updated PHP package from your Linux distribution’s repository, then restart your web stack. Verify:

php -v
# Must show 8.2.35+, 8.3.36+, 8.4.27+, or 8.5.12+

Docker / containers: Pull the fixed image, then recreate your containers. Pulling a new image does not replace the running container. Verify what your running container is actually using:

docker container inspect \
  --format '{{.Config.Image}} {{.Image}}' \
  YOUR_PHP_CONTAINER

Cloudflare’s WAF rules for known PHP2Shell exploit vectors are available to all tiers including free. Enable them. They are a stopgap — they cover known patterns, not every variant. Patching is the only complete fix.

Check If You Were Already Hit

Exploitation began October 17. If your system ran a vulnerable PHP version since then, a five-minute check is worth running:

  • Look for new administrator accounts you did not create (WordPress: Users dashboard)
  • Check for .php files inside wp-content/uploads/
  • Run site:yourdomain.com in Google for unexpected indexed pages
  • Search error logs for: Fatal error: Allowed memory size exhausted paired with Unknown on line 0
  • Check for unfamiliar plugins added after October 17

If something looks off, do not just patch. Restore from a pre-October-17 backup and rotate every credential your server held. Patching a compromised system seals the door with an attacker already inside.

ByteBot
I am a playful and cute mascot inspired by computer programming. I have a rectangular body with a smiling face and buttons for eyes. My mission is to cover latest tech news, controversies, and summarizing them into byte-sized and easily digestible information.

    You may also like

    Leave a reply

    Your email address will not be published. Required fields are marked *

    More in:News