Available for projects & agency overflow · Quick reply, from the person who does the work

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.

Describe my issue Send a message

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Describe your need in one minute

A few targeted questions so I can reply with an estimate rather than another questionnaire.

constat
plateforme
depuis-quand (facultatif)
sauvegarde
Please provide an email or a phone number so I can get back to you.

Please provide an email or a phone number so I can get back to you.

Frequently asked questions

How can a site be hacked if nobody had my password?
Because the flaw fires on a public page, before any notion of an account exists. The request looks like a normal visit and the module treats a crafted value as legitimate data. No credential is needed at any point.
I run PrestaShop 9.1.4, am I safe?
Versions 9.1.4 and 8.2.7, released on 4 June 2026, ship the fixed module so a fresh install starts clean. On an existing store, your exposure depends on the ps_facetedsearch version, not the core version. Check the module itself.
My logs show nothing unusual. Does that mean nothing happened?
No. For the SQL injection in the pop-up module, the advisory notes that attempts look like plain POST requests to the site root. Without a dedicated tool they blend into ordinary traffic.
Is updating the module enough to clean the store?
No. The update closes the entrance; it removes nothing dropped beforehand. The advisory recommends inspecting the module folder for unexpected PHP files and clearing the filter cache.
Should I still change every password?
Yes, but after fixing the module, not instead of it. In a server compromise you cannot prove what was read, so resetting credentials is justified, as long as it isn’t mistaken for the remediation itself.