Events Join us at the AWS Summit in Dubai on 30th September
Read

PHP2Shell Leak Forces Early Patch, Putting Most of the Web at Risk

A leak forced PHP to ship two critical fixes a day early. The PHP2Shell flaw lets attackers run code on unpatched servers with no login.

The Decade-Old PHP Bug That AI Finally Made Easy to Exploit

The patch was due Thursday, October 22. A leak on Tuesday changed that. On October 20, the two CVE IDs began circulating online with the wrong release time and an inflated CVSS score of 10.0, so the PHP project moved the release up by a day. Fixed builds landed on October 21.

Researchers independently traced multiple memory-safety bugs in the PHP engine to a shared root cause in how PHP handles out-of-memory errors. They are tracked as CVE-2026-109618 and CVE-2026-109619, rated up to CVSS 9.2. Because the bugs live below the application layer, even a “Hello World” app on an affected version can be vulnerable.

The worst case is Apache with mod_php, where an unauthenticated request can reach code execution with default settings before any application code runs.

What Happened?

Researchers found two memory-safety bugs inside the PHP engine itself. They are now tracked as CVE-2026-109618 and CVE-2026-109619, and both carry a CVSS score of 9.2. Because the bugs live below the application layer, a site with perfectly clean code can still be taken over.

Nearly every PHP release since version 5.4 is affected. Details slipped out publicly on October 20, a day before the embargo was set to lift, so the PHP team pulled its release forward. Fixed builds landed on October 21. Attack attempts showed up within hours.

What’s the Impact?

PHP powers roughly 69% of the websites whose server-side language is known. A working attack hands an intruder code execution as the web worker account, plus the ability to read passwords, session tokens, and API keys straight from server memory. One honeypot network recorded an exploit attempt on October 17, four days before anyone outside the disclosure group was supposed to know.

That detail is the real story here. The vulnerable code sat untouched for more than a decade because chaining it into a working exploit was brutally hard. The research team says frontier AI models collapsed that effort from months to days. The same compression now works for whoever is reading the patch notes.

How to Avoid This

  • Patch today to PHP 8.5.12, 8.4.27, 8.3.36 or 8.2.35
  • Check unsupported builds, since minimal source backports exist for 7.4, 8.0, and 8.1
  • Hunt for PHP worker processes spawning shells or download tools
  • Rotate credentials, tokens, and keys that lived in server memory
  • Do not lean on the session upload progress toggle as your only cover

Indicators of Compromise

Published indicators are thin so far, and most of what is circulating is behavioral rather than a clean hash list. Threat researchers have shared a small set of source addresses tied to early exploit attempts, along with request-level and host-level signals worth hunting. One caution before you reach for a block rule: those addresses belong to shared anonymization infrastructure, so treat a hit as a reason to investigate, not proof of compromise.

Indicators of Compromise · PHP2Shell

What to hunt for while you finish patching.

Published indicators are still thin. Most of what is useful right now is behavioral. Start with the request signal, then pivot to the host.

Source addresses

Observed in honeypot telemetry

AddressFirst seen
103.216.220.9217 Oct 2026
31.223.184.16621 Oct 2026
37.19.200.521 Oct 2026
134.209.159.6421 Oct 2026
103.114.163.18821 Oct 2026
95.217.98.3721 Oct 2026

Request signals

Web and proxy logs

  • Multipart POST bodies carrying PHP_SESSION_UPLOAD_PROGRESS
  • Unauthenticated POSTs to any PHP path, including ones that never touch session code
  • Oversized form submissions followed by memory limit errors or repeated 500 responses
  • Unusually long or malformed PHPSESSID values in responses

Host and process signals

EDR, audit logs, file integrity monitoring

  • A PHP worker such as php-fpm, php-cgi, httpd or apache2 spawning sh, bash, powershell.exe, python, perl, curl, wget, nc or certutil.exe
  • Command lines containing /dev/tcp/, fsockopen or mkfifo
  • Quick recon from a web account: whoami, id, uname -a, ipconfig
  • New files appearing in the web root, plus new cron jobs, scheduled tasks or local accounts
  • Unexplained worker churn with no matching traffic spike
Before you write a block rule: the addresses above sit on shared anonymization infrastructure. Treat a hit as a reason to open an investigation, not as proof of compromise. Exploitation can also succeed without crashing the worker, so crash logs alone will miss it.
Only complete fix · patch to 8.5.12 8.4.27 8.3.36 8.2.35

Your Patch List Is Long. Your Attacker’s List Is Short.

Every exposed server is now in a footrace between a patch window and an exploit that already works. PHP2Shell matters. The harder question is which of your assets an attacker can actually reach today.

  • Red AI Teammate attacks your own exposed surface and confirms what is genuinely exploitable, not just what scanners flag
  • Cloud Security AI Teammate maps exposed PHP workloads so the patch list follows reachability, not CVSS alone
  • AppSec AI Teammate routes the fix to the owner who can ship it and validates the build afterward
  • SOC AI Teammate hunts the behavioral signals in your logs and assembles the case before anyone pages you
  • Every consequential action waits for your approval, and every step leaves an evidence trail you can show an auditor

Attack. Harden. Prove. Repeat.