Comment se prémunir du piratage sur PrestaShop et thirty bees

Astuces pour éviter de se faire pirater sa boutique PrestaShop / thirty bees

La dernière faille officiellement annoncée par PrestaShop est là pour nous rappeler que nous, commerçants, sommes responsables des données de nos clients sur nos sites.

J'ai déjà abordé le sujet du pillage des données effectué en toute légalité par tous les outils Google que vous installez sans vous renseigner, comme le reCaptcha dont tout porte à croire qu'il récupère l'intégralité des données des visites de vos clients, sans parler de Google analytics épinglé par l'Europe sur ses pratiques alors que des alternatives existent et pas plus complexe à mettre en oeuvre.

Mais là n'est pas le sujet.

Le script proposé par Eolia pour aider au nettoyage des boutiques PrestaShop, fonctionnel aussi sur thirty bees, que je vous aie présenté, a évolué suite aux remarques de la communauté et certaines des miennes furent retenues et je l'en remercie.

Ce script, outre le fait de nettoyer automatiquement les fichiers infectés, permet d'identifier les potentielles failles intégrées dans les modules installés sur votre boutique.

Car, oui, il faut savoir que 95% des piratages de boutique PrestaShop ou thirty bees, proviennent d'éléments extérieurs au coeur du CMS.

Il existe une liste des modules connus comme ayant des failles permettant à un hacker de diffuser le code qu'il souhaite sur votre site et de s'en servir pour tout et surtout n'importe quoi.

Cette liste communautaire s'enrichit régulièrement de nouvelles découvertes, mais surtout permet d'identifier que la porte ouverte au pirate l'est toujours de la même manière, à savoir, un défaut de contrôle lors de l'enregistrement d'un fichier fourni par l'utilisateur du module ou récupéré de la mauvaise manière à un autre emplacement.

Le script proposé par Eolia, permet de lister tous les modules installés sur votre boutique, utilisant les deux méthodes possibles pour traiter ce chargement de fichiers :

  1. file_put_contents - Écrit des données dans un fichier
  2. move_uploaded_file - Déplace un fichier téléchargé

Si vous êtes un développeur pas trop "nounouille", vous devriez être capable de lire le code de ces modules pour comprendre si le traitement de ces fichiers est assez sécurisé, car il existe des milliers de tutoriels disponibles sur Internet pour se former simplement sur ces pratiques et surtout, PrestaShop intègre déjà des méthodes de validation puisqu'il a une classe dédiée au sujet classes/Validate.php.

Pour les néophytes du coding, cela est beaucoup plus complexe, je ne vais pas vous faire une analyse de toutes les bonnes pratiques ou les mauvaises, car la liste serait trop longue, mais vous devez regarder si les données inscrites dans le fichier par la méthode file_put_contents, sont issues du module lui-même, genre, le code identifie un message d'erreur puis décide de le stocker dans un fichier de type log.txt dans le module, là, il ne devrait pas y avoir trop de risques, puisque la donnée n'est pas externe.

Dans le cas d'usage de la méthode  move_uploaded_file, souvent utilisée pour charger un fichier image issue du formulaire de configuration du module, il faut s'assurer que le script valide bien que ce soit une image, comme en utilisant et contrôlant une méthode PHP native comme getimagesize(), résultat que l'on peut encore contrôler avec un Validate::isImageSize($size).

Pour les images, on peut aussi effectuer un contrôle sur son type, à savoir le format utilisé extrait du résultat de la fonction getimagesize() ainsi Validate::isImageTypeName($type), $type pouvant être aussi récupéré à l'aide de la fonction exif_imagetype().

Bien entendu, mes explications ne sont pas exhaustives, mais une première marche pour analyser votre boutique et ses modules pour éviter tout piratage.

Comme toujours, si vous n'êtes pas un spécialiste et si vous préférez passer votre temps à faire votre métier de commerçant, il est préférable de passer par un professionnel pour gérer la partie technique de votre boutique.

Bonus indispensable

On ne le répétera jamais assez, mais pensez à sauvegarder l'intégralité de vos boutiques (fichiers, base de données) régulièrement et faites-le automatiquement pour vous libérer l'esprit.

À titre personnel, je sauvegarde quotidiennement mes fichiers et toutes les 12h ma base de données.

De plus, si vous faites ces sauvegardes manuellement en rapatriant tout cela sur le disque de votre ordinateur, pensez à sauvegarder aussi votre ordinateur comme à l'aide de solution de type Dropbox.

[Mise à jour 29/07/2022]

La version 1.0.20 du script cleaner.php proposé par Eolia intègre le correctif pour le fichier smarty.config.inc.php et permet aussi de récupérer les archives des fichiers des modules à contrôler, cela évite de devoir ouvrir chaque répertoire sur son FTP.

Si vous avez déjà déposé le fichier sur votre hébergement il vous suffit de le relancer pour qu'il se mette à jour automatiquement sur la dernière version.

Vous pouvez retrouver toutes les discutions concernant l'évolution de ce script sur le forum officiel de PrestaShop.