Book a call Get my demo
Wagtail & CMS

PHP2Shell: the PHP vulnerability that shows why a website needs maintenance

By Khalid Yagoubi · 23 Oct 2026 · 9 min read


A website window displaying normally, a cracked PHP block and a warning sign

PHP2Shell is the name given to two critical flaws found in PHP, the language that runs about 70% of websites, every WordPress site included. They let a stranger take over a website's server without a password and without anyone clicking anything. The fixes were released in a hurry on 21 October 2026, after a leak. A website that displays perfectly well can still be affected. The facts below were checked on 23 October 2026.

PHP2Shell in two minutes

  • What. Two flaws (CVE-2026-109618 and CVE-2026-109619) in PHP itself, rated 9.2 out of 10 by the PHP team and 10 out of 10 by the security firm watchTowr. They allow remote code execution, meaning the attacker can make the server do whatever they want. They can also expose the server's memory, where passwords and access keys pass through.
  • When. Details leaked on 20 October 2026, two days before the planned disclosure. PHP released its fixes on 21 October.
  • Who. Any server that uses PHP to serve web pages, from version 5.4 (2012) to 8.5. WordPress, Joomla, Drupal, PrestaShop, Magento and Laravel or Symfony sites all run on PHP.
  • What to do. Move to PHP 8.5.12, 8.4.27, 8.3.36 or 8.2.35, then restart PHP. The PHP team is clear: there is no complete workaround, updating is the only safe choice.

How we got here

The older of the two flaws comes from code that has been in PHP since version 5.4, released in 2012. According to the timeline published since, a PHP developer had spotted one of the bugs back in 2024, during an audit. It was not fixed: the team could not agree on the right fix, and nobody knew how to exploit it. It slipped down the list.

In August 2026, two research teams found it again independently, at Calif and at Wiz, with the help of artificial intelligence models able to sift through large amounts of old code. That is the deeper shift of recent months: AI speeds up the discovery of flaws. It helps defenders, and it helps attackers just as much.

Disclosure was meant to be coordinated for 22 October, with fixes ready. On the 20th, details spread on Hacker News and X, and a demonstration video was published by mistake. PHP brought its security release forward to the next day. Amazon has since traced an exploitation attempt back to 17 October, and watchTowr saw real attacks on the very day the fixes came out.

Add a fact few people know: PHP, used by most of the world's websites, is maintained by a small team. The PHP Foundation has thirteen employees and runs on donations. Very old code, a huge footprint, a small team and tools that find flaws faster: every ingredient was there.

The response matched the risk. The US NSA advised taking offline any website that could not be updated right away. Several European administrations took sites offline as a precaution, including the Dutch government portal and the websites of the French Interior Ministry.

"My website works": why that proves nothing

It is the sentence we hear most, and it is true: the site loads, the forms send, customers call. It still says nothing about its security, for four reasons.

  • The flaw is under the bonnet. PHP2Shell hits the engine that builds the pages, not the pages themselves. A car with worn brakes drives perfectly well, until the day it has to stop.
  • The attack needs nothing. No account, no password, no employee clicking a link. Bots sweep the internet non-stop and try the flaw on every server that answers. They do not pick their targets: the size of your business does not protect you.
  • A successful attack does not show. Someone who takes over a server wants to stay unnoticed. They install a backdoor to come back later, send spam from your server, redirect your mobile visitors to scams or copy the data from your forms. It is often discovered when Google shows a warning next to the site, or when the host suspends the account.
  • Data is at stake. The server's memory holds the database credentials and the keys that connect the site to your tools (payments, emailing, CRM). Under the GDPR, a personal data breach must be reported to the data protection authority within 72 hours.

One last point: an update shuts the door, but it does not throw out someone who is already inside. A site that stayed exposed for several days deserves a check on top of the fix.

Who is affected

Any website whose pages are built by PHP: WordPress, Joomla, Drupal, PrestaShop, Magento, custom Laravel or Symfony sites, as well as hosting control panels such as cPanel or Plesk. The level of risk depends on how PHP is installed (Apache servers with built-in PHP are the most exposed), but no installation that serves web pages is spared. The situation depends above all on the version:

PHP versionStatus on 23/10/2026What to do
8.2, 8.3, 8.4, 8.5Official fix released on 21 OctoberUpdate (8.2.35, 8.3.36, 8.4.27 or 8.5.12) and restart PHP. 8.2 is no longer maintained after 31 December 2026: plan the next step.
7.4, 8.0, 8.1No longer maintained: no official release, only a fix supplied as source code to rebuildCheck with your host that the fix has been applied. Otherwise, move to a maintained version.
7.3 and older, PHP 5 includedNo fixMigrate, or take the site offline in the meantime.

The last two rows weigh heavily. According to W3Techs (August 2026), more than one PHP site in three still runs PHP 7 or PHP 5, and a good share of PHP 8 sites stayed on 8.0 or 8.1. That is millions of websites without an official update.

Websites built on hosted platforms such as Wix, Squarespace, Webflow or Shopify have nothing to do: the platform runs its own servers. Static sites and sites built with other languages, such as Python, are not affected by this particular flaw.

Why updating PHP can break a website

If updating is the only fix, why have so many sites stayed on old versions? Because changing PHP version can break the site, so the moment keeps being postponed.

  • Every major version cleans house. PHP 7 removed the old database functions, PHP 8 removed others and became stricter: what used to trigger a mere warning now triggers an error, and the error shows a blank page.
  • The site is not alone. The theme, the extensions and the libraries all have to keep up. An extension abandoned by its author in 2019 will never be made compatible: it has to be replaced, and sometimes what it did has to be rebuilt.
  • The staircase effect. Moving up one version a year is a small job. Jumping from PHP 7.4 to 8.4 in one go means climbing five steps at once, each with its own changes: the job becomes a project, sometimes a redesign.

Many sites left on PHP 7 were not left there out of carelessness. The update meant a budget nobody had planned, so it was put off. That is technical debt: a postponed cost that grows over time. PHP2Shell turns that postponed cost into an emergency.

The maintenance iceberg

What you see of your website is only the tip. Below the surface, five layers each have their own calendar of updates and flaws.

The maintenance iceberg: above the water the website, below it your code, extensions and libraries, the framework or CMS, the language (where PHP2Shell sits) and the server
  • The server and its system: Linux, the web server, the database.
  • The language: PHP, Python, JavaScript. This is where PHP2Shell sits.
  • The framework or CMS: WordPress, Drupal, Laravel, Django, Wagtail.
  • Extensions and libraries: plugins, themes, modules, packages. For WordPress, this is where the vast majority of flaws come from.
  • Your code: what was written for your site, which has to adapt when the layers below change.

A flaw in any of these layers exposes the whole site. And the layers depend on one another: changing the language version forces the CMS, the extensions and your code to follow. That is why a PHP update can touch the site's code. Maintaining a website means moving all five layers forward together, in small steps, rather than letting the gap widen.

What about Python, Django and Wagtail?

PHP2Shell only concerns PHP. A website built in Python, with Django or Wagtail, is not affected by this flaw. That does not make it immune: Django and Wagtail also publish security advisories several times a year (see is Wagtail secure?).

What differs is how readable the calendar is. Each Python version receives fixes for about five years. Django releases a long-term support version every two years: 5.2 is patched until April 2028, while 5.0 and 5.1 already are not. Wagtail follows the same principle: 7.4 LTS is maintained until 2 November 2027, the versions in between for about six months (see which Wagtail version to choose).

These dates are public and known years in advance, which makes it possible to plan upgrades instead of suffering them. But the rule is the same as for PHP: a Django 5.0 site in 2026 no longer receives any fix, exactly like a PHP 7.4 site. The language does not protect a website; its updates do.

Without updates, nobody is safe

No language, no CMS and no provider is free of flaws. The only question that matters is the delay between a fix being published and it being applied to your site. With regular maintenance, that delay is counted in hours or days. Without maintenance, it never ends.

Five questions to ask your provider or your host this week:

  1. Which version of PHP (or Python, or Django) runs my website, and until when is it maintained?
  2. Has the PHP2Shell fix been applied, and has PHP been restarted?
  3. Who watches the security advisories, and how quickly are fixes applied?
  4. When were the CMS, the theme and the extensions last updated?
  5. Is there a recent backup, stored somewhere other than the server, and has it ever been restored as a test?

If nobody can answer, your website has no maintenance. A modest yearly budget costs less than an emergency call-out, and far less than a hacked site. If you want to take stock of yours, book fifteen minutes with us.

Sources

Further reading

The questions we get asked

Partly. On shared hosting, the host updates the PHP versions it offers, but it is often the customer or their provider who chooses the version the site uses. A site left on PHP 7 because it did not work on PHP 8 has not received an official fixed release. On a dedicated server or a VPS, it is up to the server administrator to act.

Not necessarily. PHP2Shell is in PHP, the engine WordPress runs on, not in WordPress itself. An up-to-date WordPress on an unpatched PHP is still exposed. You need both: WordPress, theme and extensions up to date, and PHP on 8.2.35, 8.3.36, 8.4.27 or 8.5.12.

In WordPress: Tools, then Site Health, Info tab, Server section. For other sites: your host's control panel (cPanel, Plesk) or a question to your provider. Several versions can coexist on the same server; the one that serves the site's pages is the one that counts.

Rarely. If the site runs PHP 8.2 or newer, an update is enough. If it runs PHP 7, upgrading means adapting the code and replacing incompatible extensions. A redesign is only needed if the site relies on components that were abandoned long ago.

You have nothing to do. These platforms run their own servers and updates; it is one of the advantages of these services, where technical maintenance is included in the subscription.

Written by

Khalid Yagoubi

Fondateur de KERN-IT · KernWeb

Founder of KERN-IT (Brussels, 2012), Khalid builds websites and business platforms in Python and Django and has worked with Wagtail since 2016: ten years of multilingual websites for Belgian companies, foundations and institutions.

Expertise : Python, Django, Wagtail, SEO, Architecture web, Stratégie produit

LinkedIn

Is your website bringing you clients?

A 15-minute exploratory call, no strings attached. We will have visited your site before we talk.

Let's talk about your project