Faille de sécurité du module PrestaShop ps_facetedsearch
🚨 Alerte sécurité PrestaShop
🛡️ Faille critique du module ps_facetedsearch : votre boutique PrestaShop est-elle en danger ?
Tout comprendre sur la vulnérabilité de la « Recherche à facettes », savoir si vous avez déjà été piraté, et fermer la porte en 5 minutes. ⏱️
Si vous gérez une boutique PrestaShop, cet article peut littéralement sauver votre site. 💾 Une faille de sécurité critique touche le module officiel ps_facetedsearch (la fameuse « Recherche à facettes » qui affiche les filtres prix / marque / couleur sur vos pages catégories). Elle permet à un attaquant d'agir sans aucun mot de passe, sans aucun compte. 😱
Bonne nouvelle : la corriger est simple et rapide. Encore faut-il savoir quoi vérifier. On vous explique tout, étape par étape, même si vous n'êtes pas développeur. 👇
⚡ En résumé (pour les pressés)
- Module concerné : ps_facetedsearch (Recherche à facettes)
- Versions vulnérables : de la 3.0.0 à la 4.0.3
- Version corrigée : 4.0.4 ✅
- Gravité : 🔴 Critique (exécution de code à distance, sans authentification)
- Action : Mettre à jour en 4.0.4 ou renommer/supprimer le module si vous ne l'utilisez pas.
🔍 1. C'est quoi, concrètement, cette faille ?
Le module « Recherche à facettes » lit les filtres directement depuis l'adresse de la page (ce qui se trouve après le ?q= dans l'URL). Exemple d'une URL parfaitement normale :
/3-chaussures?q=Couleur-Noir/Marque-Nike&order=product.price.asc
Le problème : dans les versions vulnérables, ces filtres ne sont pas suffisamment nettoyés avant d'être utilisés. Un attaquant peut donc glisser des instructions malveillantes à la place d'un simple « Noir » ou « Nike ». C'est ce qu'on appelle une injection SQL 💉 — et dans le pire des cas, elle permet de déposer un fichier pirate sur le serveur pour en prendre le contrôle.
🎭 2. Comment un pirate s'y prend (exemples volontairement incomplets)
ℹ️ Note importante : les exemples ci-dessous sont tronqués et neutralisés exprès. Le but est que vous reconnaissiez une attaque dans vos journaux, pas de fournir un mode d'emploi. 🙅♂️
Étape 1 — l'attaquant teste l'injection. Au lieu d'un filtre normal, il envoie quelque chose comme :
/3-categorie?q=Poids-0)%20UNION%20SELECT%20…(coupé)…--%20-
Étape 2 — il cherche à déposer un fichier piégé (un « webshell ») dans un dossier du site, à l'aide d'instructions du type INTO OUTFILE '…/up.php'. C'est précisément pourquoi l'éditeur recommande de chercher des fichiers PHP anormaux dans le dossier du module.
Étape 3 — il utilise ce fichier pour exécuter des commandes :
/modules/ps_facetedsearch/up.php?c=…(commande)…
👉 En clair : le pirate passe de « visiteur anonyme » à « propriétaire de votre serveur » en quelques requêtes. Il peut alors voler vos données clients, injecter du spam SEO, ou rediriger vos paiements. 💳❌
🕵️ 3. Suis-je DÉJÀ piraté ? Les vérifications à faire
Voici les signes qui ne trompent pas. Vous pouvez demander ces vérifications à votre hébergeur ou à votre développeur si vous n'êtes pas à l'aise avec la ligne de commande.
😮 Heureusement, ne paniquez pas : on veille pour vous !
Et si vous étiez prévenu à la seconde où un pirate touche un fichier ? Notre module WebPoint Monitoring surveille votre boutique en temps réel : 🔍 toute modification, 🆕 création ou 🗑️ suppression de fichier déclenche une alerte immédiate. Vous repérez une intrusion avant qu'elle ne fasse des dégâts. 🚀
Dormez tranquille : si un fichier bouge, vous le saurez. 😴✨
✅ A. Des fichiers PHP qui n'ont rien à faire là
Cherchez tout fichier .php récent ou inattendu dans le dossier du module :
find modules/ps_facetedsearch/ -name "*.php" -mtime -30
⚠️ Un fichier au nom bizarre (ex. up.php, x.php, shell.php) ou une double extension (ex. logo.png.php) = très mauvais signe. 🚩
✅ B. Des traces d'attaque dans les journaux du serveur
Cherchez les requêtes contenant des signatures d'injection SQL :
grep -iE "union.+select|into.+outfile|information_schema" access.log
Si vous trouvez ces mots dans des URL visiteurs, quelqu'un a tenté quelque chose. Vérifiez ensuite le code de réponse : un 200 avec une grosse réponse est plus inquiétant qu'un 404 / 302.
✅ C. Des fichiers PHP cachés ailleurs (racine, /img, /upload)
Aucun fichier exécutable ne devrait normalement vivre dans /img ou /upload (à part les index.php vides de PrestaShop) :
find img/ upload/ -name "*.php"
✅ D. Les autres pièges classiques
- 👤 Un compte administrateur que vous ne reconnaissez pas (Paramètres avancés → Équipe).
- 📝 Des descriptions / méta-descriptions de pages modifiées avec du texte ou des liens étrangers (spam SEO).
- ⏰ Une tâche planifiée (CRON) inconnue.
- 🔀 Des redirections inattendues vers d'autres sites.
🛠️ 4. Comment fermer la porte (en 5 minutes)
🟢 Option 1 — Vous utilisez la recherche à facettes
👉 Mettez le module à jour en version 4.0.4 (ou plus récente).
Dans votre back-office : Modules → Mises à jour, cherchez « Recherche à facettes » puis cliquez sur Mettre à jour. C'est tout. ✅
🔵 Option 2 — Vous ne l'utilisez pas
👉 Désactivez-le, ou supprimez/renommez son dossier.
Le plus simple : back-office → Modules → désinstaller la « Recherche à facettes ». Côté serveur, renommer le dossier ps_facetedsearch suffit à neutraliser la faille. 🔒
🚑 Si vous trouvez des signes de piratage (fichier suspect, compte admin inconnu…) : ne paniquez pas, mais agissez vite. Faites une sauvegarde, supprimez les fichiers malveillants, changez TOUS vos mots de passe (admin, base de données, FTP), et faites-vous aider par un expert PrestaShop si besoin. 🔑🔄
🧱 5. Bonus : 6 réflexes pour ne plus jamais se faire avoir
- 🔄 Mettez à jour PrestaShop et tous vos modules régulièrement.
- 🧹 Supprimez les modules inutilisés : chaque module = une porte potentielle.
- 👁️ Installez un module de surveillance de fichiers (alerte dès qu'un fichier est créé/modifié).
- 🛡️ Activez un pare-feu applicatif (WAF) chez votre hébergeur.
- 🚫 Demandez à désactiver les fonctions PHP dangereuses (exec, system, shell_exec, passthru…).
- 💾 Faites des sauvegardes automatiques et testez-les.
🎯 Conclusion
Cette faille est sérieuse, mais la parade est à la portée de tous : mettez à jour en 4.0.4, ou débarrassez-vous du module si vous ne vous en servez pas. Prenez 5 minutes aujourd'hui 🕐 — c'est infiniment moins coûteux que de récupérer une boutique piratée. 💪
Article informatif rédigé à but de prévention. Les exemples techniques sont volontairement incomplets pour des raisons de sécurité. 🙏
