Ma boutique PrestaShop a été piratée sans qu’aucun mot de passe ne fuite
Aucun accès partagé, aucun mot de passe faible, aucun poste infecté, et pourtant du code étranger sur le serveur : les failles les plus lourdes des dernières années ne demandaient ni compte ni authentification, seulement une page publique de la boutique.
La question « qui a eu mon mot de passe » ne se pose pas toujours
Quand une boutique est compromise, le premier réflexe est de chercher un identifiant volé : un ancien prestataire encore dans les accès, un poste de travail infecté, un mot de passe réutilisé ailleurs. C’est une piste légitime et elle est parfois la bonne. Mais une partie des failles publiées ces dernières années sur l’écosystème PrestaShop ne demandent rien de tout cela. Elles s’exploitent depuis l’extérieur, sur une page publique de la boutique, sans compte, sans session, sans la moindre action de votre part.
C’est ce qu’on appelle une exploitation non authentifiée. Le serveur reçoit une requête qui ressemble à une visite ordinaire, sauf qu’une des valeurs transmises est fabriquée pour déclencher un comportement que l’auteur du module n’avait pas prévu. Le module traite cette valeur comme une donnée de travail normale ; selon la faille, cela finit en requête de base de données détournée, ou en code exécuté sur le serveur. À aucun moment un mot de passe n’intervient. Changer tous les identifiants après coup ne referme donc pas la porte : elle n’a jamais été tenue fermée par un identifiant.
Second malentendu courant : « mon back-office est protégé, j’ai restreint les accès ». Protéger le back-office reste une bonne pratique, mais ces failles ne passent pas par le back-office. Elles passent par la boutique elle-même, celle que vous voulez précisément laisser ouverte à tous vos visiteurs. Ce n’est pas non plus un phénomène récent : le 22 janvier 2025, PrestaShop alertait déjà officiellement sur une vague d’attaques exploitant des injections SQL présentes dans des modules tiers, et non dans le cœur.
Ce que voit un marchand dans ce cas de figure
- Des fichiers PHP que vous ne reconnaissez pas dans le dossier d’un module, avec une date de modification récente.
- Aucune connexion administrateur suspecte dans les journaux : personne d’étranger ne s’est jamais authentifié.
- Des requêtes POST banales vers la racine du site dans les journaux, en nombre et à intervalle régulier.
- Un comportement anormal sur les pages de catégorie qui portent des filtres, ou sur une fenêtre promotionnelle.
- Un hébergeur qui signale une activité anormale alors que tous vos mots de passe sont uniques et récents.
- Le problème qui revient quelques jours après un nettoyage et un changement complet des mots de passe.
Deux surfaces publiques : une page de filtres, une fenêtre promotionnelle
Le 3 juin 2026, PrestaShop a publié l’avis de sécurité GHSA-m5f5-28qr-9g9r, référencé CVE-2026-54159, sur le module officiel de navigation à facettes ps_facetedsearch : celui qui affiche les filtres de prix, de marque ou de caractéristiques sur vos pages de catégorie. Le score CVSS est de 10,0, le maximum de l’échelle. Les versions 3.0.0 à 4.0.3 sont concernées, la version corrigée est la 4.0.4.
La cause est une désérialisation non sûre des données de filtre mises en cache : les valeurs des curseurs de prix et de poids, qui transitent par l’URL, étaient sérialisées puis relues avec unserialize(). Le résultat est une injection d’objet PHP, et de là une exécution de code à distance. L’avis indique que l’exploitation est possible à distance, sans compte et sans authentification, en une seule requête, et qu’elle peut mener à une compromission complète du serveur. La faille a été trouvée par Frédéric Moreau (Antadis) et Gilles Caudal (Datalinx).
Le lendemain, le 4 juin 2026, PrestaShop a publié les versions 9.1.4 et 8.2.7. Elles ne modifient pas le cœur et ne changent aucun comportement : elles embarquent uniquement ps_facetedsearch 4.0.4, pour qu’une installation neuve parte avec le module corrigé (la 9.1.4 met aussi à jour des dépendances, Symfony 6.4.41 et Twig 3.27.1). Autrement dit, sur une boutique déjà installée, c’est la version du module qui compte, pas celle du cœur. Beaucoup de marchands vérifient la seconde et concluent trop vite.
Le second exemple vient d’un module tiers de fenêtres promotionnelles, advancedpopupcreator, édité par Idnovate. L’avis du 16 février 2026, CVE-2025-69633, score CVSS 9,8, décrit une injection SQL exploitable sans authentification sur toutes les versions antérieures à la 1.2.7 ; le correctif est la 1.2.7, et l’avis recommande de supprimer le module s’il n’est pas utilisé. Le détail qui compte pour vous est ailleurs : les tentatives apparaissent dans les journaux du site comme de simples requêtes POST /. Rien ne les distingue d’un trafic ordinaire sans outil dédié. C’est exactement pour cette raison que beaucoup de marchands ne trouvent aucune trace d’intrusion et se rabattent sur l’hypothèse du mot de passe volé.
Ce que je vérifie, dans cet ordre
-
Relever la version exacte du module de navigation à facettes
Dans le back-office, page des modules, cherchez ps_facetedsearch et notez la version affichée. Si le back-office est lent, incomplet ou inaccessible, lisez directement le fichier de configuration du module dans /modules/ps_facetedsearch/ en FTP : c’est la source la plus fiable. Les versions 3.0.0 à 4.0.3 sont concernées.
-
Faire le même relevé pour les modules de fenêtres promotionnelles
Pour advancedpopupcreator, toutes les versions antérieures à la 1.2.7 sont concernées. Si vous n’utilisez plus ce module, l’avis recommande de le supprimer plutôt que de le désactiver.
-
Inspecter le dossier du module
L’avis officiel recommande d’inspecter /modules/ps_facetedsearch/ à la recherche de fichiers PHP inattendus. Comparez le contenu du dossier avec une archive saine de la même version : tout fichier en trop, ou modifié récemment, doit être expliqué.
-
Vider le cache des filtres
C’est la seconde vérification post-incident recommandée par l’avis. Les données de filtre mises en cache sont précisément le matériau de la faille : les laisser en place n’a aucun intérêt une fois le module corrigé.
-
Sauvegarder avant de mettre à jour
PrestaShop recommande une sauvegarde complète de la base et des fichiers avant toute mise à jour, puis un passage par l’Update Assistant. Sur une boutique déjà compromise, cette sauvegarde sert aussi de pièce d’analyse : ne l’écrasez pas.
-
Chercher ce qui a été déposé, pas seulement ce qui a été exploité
Une exécution de code réussie laisse presque toujours quelque chose derrière elle. Corriger le module ferme l’entrée, mais ne retire pas ce qui a déjà été installé : l’inspection des fichiers reste indispensable.
Pour aller plus loin
-
Injections SQL expliquées
Le mécanisme derrière l’une des deux failles citées ici, en langage clair.
-
Fichier inconnu sur le serveur
Quoi faire quand un fichier PHP que vous n’avez pas écrit apparaît dans un dossier de module.
-
Vérifier si mon site est compromis
La méthode de vérification quand rien ne se voit depuis le back-office.
-
Surveiller les failles qui concernent ma boutique
Comment être prévenu d’un avis comme celui de juin 2026 avant qu’il ne vous concerne.
Décrivez votre besoin en 1 minute
Quelques questions ciblées pour que je vous réponde avec une estimation, pas avec un questionnaire de plus.