PHP2Shell and PrestaShop: the critical PHP flaw and what to do

PHP2Shell is the name given to two critical vulnerabilities in PHP, CVE-2026-109618 and CVE-2026-109619, disclosed on 21 October 2026. A single crafted request can be enough to take over a store’s server, with no login and no password. They affect every PrestaShop store, whatever its version or modules, because the bug is in PHP, the engine PrestaShop runs on, not in PrestaShop itself. The only complete fix is updating PHP to 8.2.35, 8.3.36, 8.4.27 or 8.5.12. Older stores have the hardest time: PrestaShop 1.6, 1.7 and 8 run on PHP versions that no longer get official fixes from the PHP project. This guide explains the flaw in plain English, how to check your store and what to do, step by step.

What is PHP2Shell?

PHP is the language and engine that runs PrestaShop on the server: it builds the pages, saves orders and sends emails. If your store were a shop in a mall, PHP would be the lock on the main entrance of the whole building. In October 2026 it turned out that this lock could be opened without a key.

The PHP team described two bugs, both rated 9.2 out of 10 on the CVSS scale, which is critical:

  • CVE-2026-109618: when PHP runs out of memory while reading a submitted form, it can leave half-built data behind, and an attacker can exploit that mess.
  • CVE-2026-109619: leftovers from one request stay in the server’s memory, and the next request handled by the same process can use them. The easiest route goes through the file upload progress feature (session upload progress), which PHP enables by default.

Both lead to remote code execution (RCE): an attacker runs any program they like on your server before PrestaShop even starts. A leak made things worse, as the details and a tool called “PHP2Shell” were circulating online a day before the fixes came out.

DateWhat happened
20 Oct 2026PHP announces an urgent security release; details of the flaw leak online
21 Oct 2026PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35 ship the fix, plus minimal patches for PHP 7.4, 8.0 and 8.1
23 Oct 2026PHP announces a further, related vulnerability, CVE-2026-115560
26 Oct 2026the US agency CISA adds both flaws to its catalogue of vulnerabilities exploited in real attacks

Why does a PHP flaw affect every PrestaShop store?

Most of the vulnerabilities covered in our PrestaShop security guide sit in specific modules or store versions, and updating the module fixes them. PHP2Shell is different. The attack happens while the server is reading the incoming request, before any PrestaShop code runs. That is why updating PrestaShop or its modules will not help, as PrestaShop’s own guidance for merchants also confirms. The patch has to go on the server.

Nor can a store simply “switch off forms”. PrestaShop uses file uploads in many places: the contact form with attachments, product customisation, CSV imports, product images and module installation in the back office. Blocking those requests would break the store.

What can an attacker do once they control the server? Anything an administrator can: copy the customer database with addresses and phone numbers, swap the payment page for a fake one, inject malicious code for visitors, send spam from the store’s domain, or encrypt your files and demand a ransom. If personal data leaks, you also have legal duties towards your customers and your data protection authority.

Older PrestaShop versions: where the real problem is

Each PrestaShop version only works with certain PHP versions, and the PHP project only supports its latest few branches. PHP 8.1 and older no longer get official releases. As an exception, the PHP team published a minimal source patch for PHP 7.4, 8.0 and 8.1, but whether it reaches your server depends on whoever builds PHP packages for it, such as your Linux distribution or your hosting company.

PrestaShop versionNewest supported PHPPHP2Shell fix
1.6.17.1no official fix; only if your package provider backported it
1.7.0 – 1.7.67.1 – 7.2no official fix; only if your package provider backported it
1.7.77.3no official fix; only if your package provider backported it
1.7.87.4minimal patch for unsupported versions
8.0 – 8.28.1minimal patch for unsupported versions
9.0 and 9.18.4 and 8.5full fix (PHP 8.2 or newer)

The minimal patch closes the known attack routes in a blunt way: when PHP runs out of memory, the process is killed at once, and upload progress is switched off for good. It works, but the PHP team itself calls it the minimum for unsupported versions, and the next similar flaw may not get one at all. On top of that, PHP 8.2 reaches end of life on 31 December 2026, so in two months more servers will join this group.

The takeaway is simple: a store on PrestaShop 1.7 or 8 can still be patched today, but it gets harder every month. The safe path is an upgrade to PrestaShop 9, which runs on supported PHP.

How do you check your store’s PHP version?

In the PrestaShop 1.7, 8 and 9 back office, go to Advanced Parameters → Information. The server information section shows the PHP version. Note that the number alone doesn’t tell the whole story. Packages with a backported patch often keep the same version number as before (for example 7.4.33 or 8.1.34) and only differ in an internal package revision. So with older PHP, always ask whoever looks after the server whether the patch is installed.

Shared hosting or your own server: who installs the patch?

It depends on where your store runs. We compare the options in detail in VPS or shared hosting for PrestaShop.

  • Shared hosting: your hosting company updates PHP, and you have no say in it. Older PHP versions offered in the hosting panel don’t always get patches. Ask your host in writing: “Has the fix for CVE-2026-109618 and CVE-2026-109619 been applied to the PHP version running my store?” PrestaShop recommends the same.
  • Your own VPS or dedicated server: the administrator installs the patch, which means you or the company managing the server. Nobody does it automatically, because popular third-party PHP package sources for Ubuntu are not covered by automatic system updates by default.
  • Managed server: security updates, PHP included, are the administrator’s job as part of the service.

What to do now: 6 steps

  1. Check your PHP version in Advanced Parameters → Information.
  2. Ask your host or administrator whether the patch is installed, and ask for the answer in writing.
  3. On your own server, update PHP and restart every PHP process (PHP-FPM, Apache). Installing the packages is not enough, because running processes keep using the old code.
  4. If you can’t update right away, turn off upload progress in php.ini or the PHP-FPM pool configuration (not in .user.ini or with ini_set(), where it has no effect). PrestaShop doesn’t use this feature, so nothing breaks. This workaround only closes some of the attack routes.
  5. Check for signs of a break-in: new .php files in the store folders, unknown accounts in Advanced Parameters → Team, modified payment modules, new cron jobs. Our security guide covers the symptoms and what to do after an attack.
  6. Plan a PrestaShop upgrade if your store runs on PHP 8.1 or older.

For administrators of Ubuntu or Debian servers: update PHP and check that the package includes the fix (a result above zero means it does):

sudo apt update
sudo apt install --only-upgrade 'php*'
sudo systemctl restart php8.1-fpm
zcat /usr/share/doc/php8.1-common/changelog.Debian.gz | grep -c CVE-2026-109618

A temporary workaround in php.ini or the PHP-FPM pool:

session.upload_progress.enabled = 0
post_max_size = 32M

Tip: the PHP team also suggests setting memory_limit=-1. That trades the risk of a break-in for the risk that a single request eats all of the server’s memory and takes the store down. Without a separate memory cap for PHP processes, it’s better left alone, and it is a job for an administrator, not for a store owner.

The story didn’t end on 21 October. Here is what came next:

  • CVE-2026-115560 (23 Oct): another flaw in the same upload progress feature. It only works when an application changes how PHP stores sessions (session.serialize_handler) while running. We found no such change in PrestaShop 9’s code, so the risk for a typical store is low. The fix will come in PHP’s next regular release, and until then the same session.upload_progress.enabled = 0 setting protects you.
  • Real-world attacks: on 26 October, CISA added CVE-2026-109618 and CVE-2026-109619 to its catalogue of vulnerabilities exploited in real attacks. Dozens of public exploit samples are available, including variants designed to slip past WAF filters.
  • CVE-2026-111497 (26 Oct): a bug in the Brotli library in the Windows builds of PHP. It doesn’t affect stores on typical Linux servers.

Cloudflare or another WAF can filter out some automated attacks, but it can’t replace the patch, especially if your server can be reached directly, bypassing Cloudflare. We explain how to set that up properly in How to secure a PrestaShop server.

A server you don’t have to worry about

PHP2Shell shows that store security is about more than modules and passwords. Someone has to hear about a new flaw on the day it appears, check whether it affects the server, install the patch, restart the services and make sure the store still works. If you’d rather not do that yourself, you can hand it over.

With our PrestaShop server and administration service you get your own VPS set up for PrestaShop and an administrator who takes care of regular updates, security updates included. The server comes with a firewall, key-only SSH login, fail2ban, Cloudflare with DDoS protection and WAF, monitoring and 7 days of backups. We respond to incidents within 4 hours on business days, and the migration of your store is included. The service costs 119 € net per month.

If you suspect your store may have been attacked before the patch reached the server, order a store security audit. We check the core, modules, configuration and signs of intrusion, and the report lists every issue with a risk rating.

Sources

Frequently asked questions

Does updating PrestaShop or its modules fix PHP2Shell?

No. The flaw is in PHP and the attack happens before any PrestaShop code runs. Only a PHP update on the server helps, or, for older PHP, a package with the backported patch. Upgrading to PrestaShop 9 matters for another reason: it lets you move to supported PHP and receive full fixes in the future.

I run PrestaShop 1.7. Is my store at risk?

Yes, if the PHP on your server isn’t patched. PrestaShop 1.7 runs on PHP 7.4 at most, which only has a minimal patch, and earlier 1.7 releases need even older PHP. Ask your host whether the patch is installed, and plan a move to PrestaShop 9.

How do I know if my store has been attacked?

Typical signs are new .php files in the store folders, unknown employee accounts, changes to payment modules, new cron jobs and unusual processes on the server. No symptoms is no guarantee, because a good attack is quiet. If your server ran without the patch after 21 October, a review is worth it.

Is Cloudflare or another WAF enough?

No. A WAF can stop some automated scans, but there are attack variants that get through the filters. On top of that, the server is often reachable directly, bypassing Cloudflare. A WAF is an extra layer, not a replacement for updating PHP.

Is a store on shared hosting safe?

It is as safe as your host is quick to patch the PHP version your store runs on. Large hosting companies usually patch current PHP versions quickly, but older versions offered in the panel are sometimes left behind. Ask in writing, and don’t assume it has been taken care of.

Have a question about PHP on your store’s server? Get in touch or have a look at our PrestaShop server and administration service.

Products in this article

Back to Blog

Loading...
Back to top