Une vulnérabilité ciblant les versions de la branche 1.6.x inférieures à la 1.6.1.20 et les versions de la branche 1.7.x inférieures à la 1.7.3.4 de Prestashop a été découverte. Elle permet une escalade de privilèges.

En exploitant cette vulnérabilité, il est possible de :
– Prendre le contrôle de n’importe quelle session client ;
– Voler les données commerciales telles que les informations sur les clients, les commandes, les coupons, les statistiques, etc. ;
– Accéder au panneau d’administration via CSRF ou d’autres vecteurs, ce qui permet l’exécution du code.

Les exploits sont disponibles sur GitHub : ici et ici.

Une POC est disponible ici.

Pour rappel, PrestaShop est une solution de commerce électronique libre et gratuite. Le logiciel est publié sous licence Open Software. Il est écrit en langage de programmation PHP avec prise en charge du système de gestion de base de données MySQL.

La version la plus récente est la 1.7, qui n’est pas vulnérable. Néanmoins, la version ciblée, 1.6.1.19 et inférieure, est toujours maintenue et largement utilisée.

D’où vient la vulnérabilité ?

Au lieu d’utiliser l’ID de session PHP habituel et de stocker les données localement, PrestaShop stocke les données de session dans un cookie. Pour que le cookie ne soit pas altéré, un checksum est ajouté, et le tout est ensuite chiffré. Le processus est défectueux et permet aux attaquants de lire et d’écrire les données de session et donc de détourner les sessions des clients ou des employés, ce qui entraîne un contrôle partiel ou complet du site Web.

Dans PrestaShop, votre cookie client ou employé contiendra toutes les informations associées à votre session. Ces données contiennent ce que vous vous attendez à trouver dans une session standard : ID client/employé, ID chariot, mot de passe haché, prénom, nom de famille, et bien d’autres choses. Après la sérialisation, un checksum est ajouté et toute la chaîne de caractères est chiffrée. La procédure de génération des cookies se fait dans ./classes/Cookie.php.

L’équipe de PrestaShop a été contactée le 1er mai 2018 et après quelques e-mails décrivant les problèmes, le bug a été corrigé le 28 du même mois. Les versions 1.6.1.20 et 1.7.3.4 corrigent le bogue, et le journal des modifications indique « Améliorer le chiffrement des cookies » — tout en étant techniquement vrai, c’est un peu obscur.

Si ce n’est pas déjà fait, nous vous recommandons d’effectuer les mises à jour de votre CMS sans attendre.
Si vous rencontrez des difficultés pour appliquer ces mises à jour, nous pouvons vous accompagner. Contactez-nous.