Les attaquants utilisent une vulnérabilité dans une dépendance populaire utilisée par les modules pour prendre le contrôle des sites PrestaShop. Pour plus de détails, veuillez lire l’intégralité de l’article.
Que ce passe-t-il
Il a été porté à notre attention que des attaquants exploitent une vulnérabilité dans PHPUnit pour exécuter du code arbitraire sur des serveurs exécutant des sites Web PrestaShop. Le problème est résolu dans PHPUnit 7.5.19 et 8.5.1. A notre connaissance, toutes les versions précédentes sont vulnérables, du moins pour certaines configurations de serveur.
Comment savoir si vous êtes impacté
Connectez-vous à votre boutique via un accès FTP ou shell, et regardez le répertoire « vendor » dans le dossier principal de prestashop et à l’intérieur de chacun de vos modules :
- <prestashop_directory>/vendor
- <répertoire_prestashop>/modules/<nom_module>/vendor
S’il existe un répertoire appelé « phpunit » dans les répertoires susmentionnés, votre boutique peut être vulnérable.
Attention : ne touchez à rien d’autre ou vous pourriez casser votre boutique. Les autres fichiers et dossiers (par exemple /vendor/symfony/symfony/src/Symfony/Bridge/PhpUnit/ ou les fichiers .xml) sont sûrs, ne les supprimez pas.
Que faire si vous êtes impacté
PHPUnit est une bibliothèque de développement et n’est pas nécessaire pour le fonctionnement normal de votre site, vous pouvez donc simplement supprimer tous les répertoires « phpunit » trouvés ci-dessus. Cela devrait aider à fermer le vecteur d’attaque.
Sur un serveur Linux, cela peut être effectué rapidement à l’aide de la ligne de commande bash suivante à partir du dossier modules/ de la boutique :
find . -type d -name "phpunit" -exec rm -rf {} \;
Cette commande requiert les droits d’utilisateur appropriés.
Vous pouvez également supprimer manuellement les dossiers « phpunit » via FTP.
Sachez que même si vous effectuez ce nettoyage, votre boutique peut déjà avoir été compromise.
Selon notre analyse, la plupart des attaquants placent de nouveaux fichiers dans le système de fichiers ou modifient des fichiers existants, comme AdminLoginController.php.
Voici une liste non exhaustive de fichiers malveillants connus pouvant indiquer une boutique compromise :
- XsamXadoo_Bot.php
- XsamXadoo_deface.php
- 0x666.php
- f.php
- Xsam_Xadoo.html
Vous pouvez vérifier si les fichiers Core PrestaShop ont été modifiés en consultant la section « Liste des fichiers modifiés » en bas de la page « Paramètres avancés > Informations » dans votre Back Office. Cependant, cette vérification peut ne pas suffire car votre site pourrait avoir été compromis autrement.
Si votre boutique a été compromise ou si vous pensez qu’elle a été compromise :
- Vérifiez soigneusement que l’attaquant n’a laissé aucun fichier sur votre serveur, par exemple caché au milieu des fichiers de votre boutique et/ou contactez un expert pour le faire à votre place.
- Pensez à demander à tous les utilisateurs de votre/vos boutique(s) de changer leur mot de passe, ce qui inclut les utilisateurs du back-office mais aussi les comptes clients. Assurez-vous qu’aucun fichier compromis n’est toujours présent dans votre boutique auparavant.
Si vous pensez que votre site a été piraté, contactez un expert en sécurité.
Modules PrestaShop impactés par cette vulnérabilité
Certains modules sont impactés :
- Mise à niveau en 1 clic (mise à niveau automatique) : versions 4.0 bêta et supérieures
- Abandon du panier Pro (pscartabandonmentpro): versions 2.0.1 ~ 2.0.2
- Recherche à facettes (ps_facetedsearch) : versions 2.2.1 à 3.0.0
- Expertise marchand (gamification) : versions 2.1.0 et supérieures
- PrestaShop Checkout (ps_checkout) : versions 1.0.8~1.0.9
Nous avons publié des versions mises à jour pour ces modules qui suppriment complètement la bibliothèque associée de leurs propres dépendances :
- Mise à niveau en 1 clic : v4.10.1
- Abandon du panier Pro : v2.0.10
- Recherche à facettes : v3.4.1
- Expertise marchand : v2.3.2
- Paiement PrestaShop : v1.2.9
Sachez que si vous avez installé par le passé une version impactée de ces modules, les fichiers PHPUnit peuvent toujours être présents sur votre serveur. Seules ces versions récemment publiées garantissent que PHPUnit n’est plus présent dans leur propre répertoire de fournisseurs.
Les modules et thèmes d’autres fournisseurs peuvent également être vulnérables. Attendez-vous à ce que des mises à jour suivent bientôt.
Informations Complémentaires
Un merci tout spécial à Francis Ladeuil qui a le premier signalé ce problème.
Nous avons également publié une analyse post-incident que vous voudrez peut-être lire.