My PrestaShop store was hacked and no password ever leaked
No shared access, no weak password, no infected workstation, and yet foreign code on the server: the heaviest flaws of recent years needed neither an account nor authentication, only a public page of the shop.
The question of who got your password often doesn’t apply
When a store is compromised, the first instinct is to look for a stolen credential: a former contractor still holding access, an infected workstation, a password reused elsewhere. That is a legitimate lead, and sometimes the right one. But several of the flaws published in the PrestaShop ecosystem in recent years require none of that. They are triggered from outside, on a public page of the shop, with no account, no session and no action on your part.
This is called unauthenticated exploitation. The server receives a request that looks like an ordinary visit, except that one of the submitted values is crafted to trigger behaviour the module’s author never anticipated. The module treats it as normal working data; depending on the flaw, it ends in a diverted database query, or in code running on the server. No password is ever involved. Changing every credential afterwards therefore closes nothing: the door was never held shut by a credential.
A second common misreading: my back office is locked down, access is restricted. Locking down the back office remains good practice, but these flaws never touch it. They go through the shop itself, the part you deliberately keep open to every visitor. Nor is this new: on 22 January 2025 PrestaShop already issued an official alert about a wave of attacks exploiting SQL injection flaws in third-party modules rather than in the core.
What a merchant actually sees
- PHP files you don’t recognise inside a module folder, with a recent modification date.
- No suspicious administrator logins in the records: nobody outside ever authenticated.
- Unremarkable POST requests to the site root in the logs, in volume and at regular intervals.
- Odd behaviour on category pages that carry filters, or on a promotional pop-up.
- A host reporting unusual activity although every password is unique and recent.
- The problem returning days after a clean-up and a full password change.
Two public surfaces: a filter page and a promotional pop-up
On 3 June 2026 PrestaShop published security advisory GHSA-m5f5-28qr-9g9r, referenced as CVE-2026-54159, covering the official faceted navigation module ps_facetedsearch: the one that renders price, brand and feature filters on your category pages. The CVSS score is 10.0, the top of the scale. Versions 3.0.0 to 4.0.3 are affected; the fixed release is 4.0.4.
The cause is unsafe deserialisation of cached filter data: the price and weight slider values, which travel through the URL, were serialised and then read back with unserialize(). The result is PHP object injection, and from there remote code execution. The advisory states that exploitation is possible remotely, with no account and no authentication, in a single request, and can lead to full server compromise. The flaw was found by Frédéric Moreau (Antadis) and Gilles Caudal (Datalinx).
The next day, on 4 June 2026, PrestaShop released versions 9.1.4 and 8.2.7. They change nothing in the core and alter no behaviour: they simply ship ps_facetedsearch 4.0.4 so that a fresh install starts with the fixed module (9.1.4 also updates dependencies, Symfony 6.4.41 and Twig 3.27.1). On a store that is already installed, what matters is the module version, not the core version. Plenty of merchants check the latter and draw the wrong conclusion.
The second example is a third-party promotional pop-up module, advancedpopupcreator, published by Idnovate. The advisory of 16 February 2026, CVE-2025-69633, CVSS 9.8, describes an SQL injection exploitable without authentication in every version before 1.2.7; the fix is 1.2.7, and the advisory recommends removing the module if it is no longer used. The detail that matters to you lies elsewhere: attempts appear in the site logs as plain POST / requests. Without a dedicated tool, nothing sets them apart from ordinary traffic. That is precisely why many merchants find no trace of an intrusion and fall back on the stolen password theory.
What I check, in this order
-
Read the exact faceted navigation module version
In the back office module list, find ps_facetedsearch and note the version shown. If the back office is slow, incomplete or unreachable, read the module configuration file in /modules/ps_facetedsearch/ over FTP instead: that is the reliable source. Versions 3.0.0 to 4.0.3 are affected.
-
Do the same for promotional pop-up modules
For advancedpopupcreator, every version before 1.2.7 is affected. If you no longer use the module, the advisory recommends removing it rather than deactivating it.
-
Inspect the module folder
The official advisory recommends inspecting /modules/ps_facetedsearch/ for unexpected PHP files. Compare the folder against a clean archive of the same version: any extra or recently modified file needs an explanation.
-
Clear the filter cache
This is the second post-incident check the advisory recommends. Cached filter data is exactly the material the flaw relies on; there is no reason to keep it once the module is fixed.
-
Back up before updating
PrestaShop recommends a full backup of database and files before any update, then going through the Update Assistant. On a store already compromised, that backup is also evidence: don’t overwrite it.
-
Look for what was dropped, not only for what was exploited
Successful code execution almost always leaves something behind. Fixing the module closes the entrance but removes nothing that was already installed, so file inspection stays mandatory.
Related reading
-
SQL injections explained
The mechanism behind one of the two flaws described here, in plain terms.
-
Unknown file on the server
What to do when a PHP file you never wrote turns up in a module folder.
-
Check whether your site is compromised
How to verify when nothing shows up from the back office.
-
Track the flaws that affect your store
How to hear about an advisory like the June 2026 one before it concerns you.
Describe your need in one minute
A few targeted questions so I can reply with an estimate rather than another questionnaire.