Skip to main content
Close
Security

PHP2Shell: the emergency hitting 7 in 10 sites

Gabriel Ferraresi· CEO | Tech86October 23, 20263 min
phpcvercesecurityhosting

Today PHP published the emergency fix for two critical flaws that leaked ahead of schedule. The name the community gave the case already delivers the severity: PHP2Shell.

What is known, with sources: the two vulnerabilities, CVE-2026-109618 and CVE-2026-109619, score 9.2 Critical and allow unauthenticated remote code execution. And PHP runs on roughly seven in ten websites.

How the two flaws work

On the first path, memory-overflow handling interrupts PHP with internally half-initialized data, and request cleanup treats the invalid as valid. On the second, a request’s internal state outlives the memory sustaining it, and the next request on the same worker uses that state before reset.

The confirmed path goes through session.upload_progress: a legacy feature enabled by default that most developers forgot exists. Attack surface is, almost always, what has been enabled since installation.

The timeline is the lesson

Details leaked before the agreed date, the proof of concept went public within hours, and the emergency fix landed the day after the leak, with PHP exercising exactly the clause it had written into its notice: ship early if details go public or exploitation is active.

And the worst case is stated without hedging in the official notice: every installation serving web, with mod_php as the grave case, where a demonstrated exploit runs before any line of your code.

The market’s response, the same day

Cloudflare enabled edge protections, hosting vendors published their own rules, and European cybersecurity guidance recommended taking exposed sites that cannot be fixed offline. Hundreds of sites are already preemptively down.

It is the response the severity demands: unauthenticated RCE in a runtime serving seven in ten sites is not a monthly patch cycle, it is an emergency with preemptive downtime as a legitimate measure.

What to do today, in this order

  1. Update to 8.5.12, 8.4.27, 8.3.36, or 8.2.35 (the official notice says mitigation does not replace the fix).
  2. Confirm your vendor’s package: distributions received the patches in advance.
  3. If it does not fit today: disable the compromised session feature with a restart of all workers, and tighten memory and POST limits at the edge.
  4. Migrate branches if you are on PHP 8.1 or older: those no longer receive fixes from the project.

At Tech86, this was the day’s work for clients: inventorying what runs PHP on each host, applying the fix or mitigation, and documenting, in the same operation design that applied WordPress’s core patch last week.

Conclusion

PHP2Shell closes the week where runtimes became mass targets, and the takeaway is the inventory: the vulnerable feature was one most people forgot existed, enabled by default since forever.

Patch today, branch migration this week, and the default-enabled feature inventory on the permanent backlog. The bulletin informs; the inventory protects.

Interested in this solution?

Explore our managed services and infrastructure.

Shielding and vulnerability management

Frequently Asked Questions

The community’s name for two critical PHP vulnerabilities (CVE-2026-109618 and CVE-2026-109619), severity 9.2, with unauthenticated remote code execution, fixed in an emergency after details leaked ahead of schedule and the proof of concept went public within hours. PHP runs on roughly seven in ten websites.

On the first path, memory-overflow handling interrupts PHP with internally half-initialized data, and request cleanup treats the invalid as valid. On the second, a request’s internal state outlives the memory sustaining it, and the next request on the same worker uses that state before reset. The confirmed path goes through session.upload_progress, a legacy feature enabled by default.

Every installation serving web, with the worst case on mod_php, where a demonstrated exploit runs before any line of your code. The market responded the same day: Cloudflare enabled edge protections, hosting vendors published their own rules, and European guidance recommended taking exposed sites that cannot be fixed offline. Hundreds of sites are already preemptively down.

Update to 8.5.12, 8.4.27, 8.3.36, or 8.2.35 (mitigation does not replace the fix); confirm your vendor’s package; if it does not fit today, disable the compromised session feature with a restart of all workers and tighten memory and POST limits at the edge. PHP 8.1 or older must migrate branches: those no longer receive fixes from the project.

The day’s work: inventory what runs PHP on each host, apply the fix or mitigation, and document what was done. [It is the operation that shortens the window between disclosure and fix](https://www.tech86.com.br/en/blog/wordpress-path-traversal-nao-autenticado-patch): the flaw was disclosed and fixed in the same cycle, and anyone with operation behind it applied it the same day.

Blog, Get in Touch

Have a question about our articles or services? Our team is ready to help.

Schedule a Meeting

Book a time slot.

Schedule Now

Email

Send us a message.

[email protected]

WhatsApp

Quick conversation.

Address

Avenida Paulista, 1636 - São Paulo - SP - 01310-200

Tech86 Specialist

Online now

Hello! How can we help scale your business today?

Tech86 Engineering

We Value Your Privacy

We use cookies and similar technologies to optimize your experience, analyze site traffic, and personalize content. By clicking "Accept All", you agree to the use of all cookies. Read our Privacy Policy.