Serious Linux kernel vulnerability: is your PrestaShop store at risk?
Nobody gets in from the internet with this flaw alone, but anyone already inside can take over the server. What to do…
On 20 October, a warning went out that put half the internet on edge: two serious vulnerabilities in PHP, the language your PrestaShop store runs on, that let a stranger take over the server without a username or password. They go by the name PHP2Shell. PHP released the fix on 21 October, and what you need to do depends on just one thing: the PHP version your store runs on.
Here it is without the jargon: what happened, how to tell if it affects you, what to do today and how to find out whether your host has already applied the fix.
No time to read it all? For 45 € (US$59) we check your store today: whether it's exposed to PHP2Shell and what needs doing. It's one hour of support at a fixed price; if it takes longer, we tell you before going on. We answer in under 12 hours, weekends included.
PHP is the engine underneath PrestaShop, WordPress, Magento and most online stores and websites in the world. The two vulnerabilities, registered as CVE-2026-109618 and CVE-2026-109619, have a severity score of 9.2 out of 10. In practice, anyone who knows how to exploit them can run whatever they like on your server: leave a back door, steal your customers' data or plant a fake captcha in your store like the one in ClickFix.
What sets this apart from other warnings is that the attack doesn't go through PrestaShop or any module. It happens in PHP, before your store even gets to read the visit. However well looked after your store is, if the server's PHP is vulnerable, so is the store.
And the details leaked early. The security firm Sansec reports that a screenshot of a ready-made attack tool appeared alongside the warning, and it expected mass attacks as soon as the fix was published. According to the same source, Cloudflare had already seen the first attempts and put rules in place to stop them.
Most likely, yes. In its security advisory, PHP considers any installation that serves web pages to be at risk, however the server runs it, with the highest risk on Apache servers using mod_php, where a working attack that needs no username or password has already been demonstrated. Sansec talks about any server running PHP 5.4 or later, which in practice means every PrestaShop store online today.
The question that really matters is a different one: do you get the fix? PHP has fixed it in versions 8.2.35, 8.3.36, 8.4.27 and 8.5.12. For the old versions, which no longer have official support, PHP published the patch without a new release, and within a day or two the control panels and systems hosting companies use turned it into a normal update: cPanel and CloudLinux, from PHP 5.2 up to 8.1; DirectAdmin, Ubuntu, Red Hat, AlmaLinux and the Remi repository, for the 7.4 to 8.1 versions they still maintain. And each PrestaShop version only works with certain PHP versions:
In other words: almost any store can be running a PHP without this flaw today. But if yours isn't PrestaShop 9, it depends on your host having installed the patch, and since the version number doesn't change, you can't tell at a glance: you have to ask them. It's also an emergency patch: PHP 8.1 and earlier have no official support, so with the next flaw you'll again depend on someone fixing it on their own.
Log in to your store's back office and open Advanced Parameters → Information. There you'll see the PrestaShop version and, a little further down, the PHP version. With those two numbers you know which case you're in.
Putting the store into maintenance mode from the back office won't protect you this time: PHP reads the visit before PrestaShop decides to show the maintenance page.
Rather have someone take care of it? With PrestaShop maintenance we handle it: we update PHP, PrestaShop and modules after testing them, take the backups and keep an eye on your store, so the next warning isn't yours to deal with.
PHP suggests some server settings that close off some of the attack's paths, and warns that they don't make the store secure: only the update does that. Sansec adds another emergency measure: blocking on the server the type of request that carries files uploaded to a website. It comes at a cost: while it's in place, nobody can upload files to your store. Not you with photos for a new product, and not your customers with an attachment on the contact form. The store keeps selling as normal.
It buys you a few days; it isn't a way to stay. Either your host installs the patch or you move to one that has it. And the next time a PHP flaw comes out —and they will— your store will depend on that again, because PHP 8.1 and earlier no longer have official support.
Which PHP each PrestaShop version supports, and how long it gets patches, is in one table in which PHP version PrestaShop needs.
It's the question that always gets postponed because the store works. PHP2Shell is what happens when it's postponed too long: you don't choose the day the problem arrives, and whether the fix reaches you depends on others.
Moving to PrestaShop 9 puts you on a PHP that gets patches for years. It's done without closing your store, you keep your products, customers, orders and Google rankings, and a small store costs from €690. We explain it all in upgrading PrestaShop 1.7 or 1.6 to 9, and on our PrestaShop 1.6 and 1.7 to 9 migration page.
And if you would rather not keep an eye on warnings like this, that is what PrestaShop maintenance is for: we watch your shop, keep its modules up to date and, if it runs on a BK Modules server, PHP too, so a warning like this does not catch you off guard.
If you don't know which case you're in, if your hosting provider isn't answering, or if your store is on 1.6, 1.7 or 8 and you want to move on, tell us your PrestaShop and PHP versions. We'll tell you what to do today and, if needed, give you a fixed price for moving to PrestaShop 9.
Fixed versions: 8.2.35, 8.3.36, 8.4.27 and 8.5.12. For 7.4, 8.0 and 8.1, PHP publishes the minimal fix as source code, linked from its advisory, with no new release. Patched packages keep the version number, so php -v can't tell them apart: check the package revision (rpm -q, dpkg -l). Fixed revisions: cPanel EasyApache 4 ea-php74 7.4.33-19, ea-php80 8.0.30-12, ea-php81 8.1.34-5; CloudLinux ea-php / alt-php 5.2–8.5 (21–22/10); Remi 7.4.33-31, 8.0.30-21, 8.1.34-6; Ubuntu 22.04 8.1.2-1ubuntu2.28. The partial measures PHP gives go in php.ini, in the PHP-FPM pool (php_admin_value) or in the server configuration, never with ini_set() or .user.ini, and restarting every process:
; CVE-2026-109618
memory_limit = -1
post_max_size = 32M ; 8M if no files are uploaded
; CVE-2026-109619
session.upload_progress.enabled = 0
; PHP 8.5 only
fatal_error_backtraces = 0
PHP asks you not to replace memory_limit with system limits (RLIMIT_AS, RLIMIT_DATA). Sansec's measure, blocking multipart/form-data (it breaks all file uploads, back office included), in Apache:
RewriteEngine On
RewriteCond %{HTTP:Content-Type} multipart/form-data [NC]
RewriteRule ^ - [F]
In Nginx:
if ($http_content_type ~* "multipart/form-data") {
return 403;
}
With Cloudflare, restrict the origin's port 443 to its IP ranges; otherwise the attack goes straight to the server's IP.
Would you rather we set it up for you? We leave it running in your store, with monitoring and support.
A module, an app, a server that is giving you trouble or something urgent. We answer within 24 hours, with a fixed quote with a price and a date.