Sécurité : Plus d’un million de sites WordPress utilisaient une version vulnérable du plug-in Loginizer. WordPress a donc forcé sa mise à jour, une fonctionnalité rarement utilisée par l’éditeur de CMS.
L’équipe de sécurité de WordPress a pris une mesure qu’elle utilise rarement la semaine dernière, en utilisant une capacité interne peu connue qui permet de forcer une mise à jour de sécurité pour un plug-in populaire.
Les sites WordPress utilisant le plug-in Loginizer ont donc été mis à jour de force cette semaine, avec la version 1.6.4 de Loginizer. Cette version contient un correctif de sécurité pour un dangereux bug d’injection SQL, qui aurait pu permettre à des pirates de s’emparer de sites WordPress utilisant des versions plus anciennes du plug-in Loginizer.
Loginizer est l’un des plug-in WordPress les plus populaires aujourd’hui, avec une base d’installation de plus d’un million de sites. Il fournit des améliorations de sécurité pour la page de connexion à WordPress. Selon sa description officielle, Loginizer peut mettre sur liste noire ou blanche les adresses IP visant à accéder à la page de connexion de WordPress, ajouter la prise en charge de l’authentification à deux facteurs, ou ajouter de simples CAPTCHA pour bloquer les tentatives de connexion automatisées, parmi de nombreuses autres fonctionnalités.
Une injection SQL dans Loginizer
Cette semaine, le chercheur en sécurité Slavco Mihajloski a révélé une grave vulnérabilité dans ce plug-in. Selon la description fournie par la base de données des vulnérabilités de WPScan WordPress, la faille de sécurité réside dans le mécanisme de protection par force brute de Loginizer, activé par défaut pour tous les sites où Loginizer est installé.
Un attaquant aurait pu exploiter cette faille pour essayer de se connecter à un site WordPress en utilisant un nom d’utilisateur WordPress spécifique, dans lequel il est possible d’inclure des instructions SQL. Lors d’un échec d’authentification, le plug-in Loginizer enregistre cette tentative ratée dans la base de données du site WordPress, avec le nom d’utilisateur qui a échoué.
Mais, comme l’expliquent Slavco et WPScan, le plug-in ne nettoie pas le nom d’utilisateur et laisse les instructions SQL intactes, permettant aux attaquants d’exécuter du code sur la base de données WordPress : les chercheurs en sécurité désignent cette attaque sous le nom d’injection SQL non authentifiée. « Il permet à tout attaquant non authentifié de compromettre complètement un site web WordPress », explique à ZDNet Ryan Dewhurst, fondateur et directeur général de WPScan.
Ce dernier souligne également que Slavco Mihajloski a fourni un script de preuve de concept dans un rapport détaillé publié plus tôt dans la journée. « Cela permet à toute personne ayant des compétences de base en ligne de commande de compromettre complètement un site WordPress », ajoute-t-il.
La mise à jour forcée du plug-in ne fait pas que des heureux
Cette vulnérabilité fait partie des pires problèmes de sécurité découverts dans les plug-in WordPress ces dernières années. C’est pourquoi l’équipe de sécurité de la plateforme semble avoir décidé de forcer le patch Loginizer 1.6.4 sur tous les sites concernés.
Ryan Dewhurst précise à ZDNet que cette fonction de « mise à jour forcée du plug-in » est présente dans le code de WordPress depuis la v3.7, sortie en 2013. Cependant, elle n’a été utilisée que très rarement.
« Une vulnérabilité que j’ai moi-même découverte dans le populaire plug-in Yoast SEO WordPress en 2015 a fait l’objet de cette mise à jour forcée. Cependant, elle n’était pas aussi dangereuse que celle découverte dans le plug-in Loginizer », ajoute-t-il. « Je ne sais pas s’il y a eu d’autres cas [de mises à jour forcées de plug-in], mais c’est probable ».
Si l’équipe de WordPress évite d’utiliser cette fonctionnalité, il y a une explication.
Dès que le patch Loginizer 1.6.4 a commencé à arriver sur les sites WordPress la semaine dernière, les utilisateurs ont commencé à se plaindre sur son forum : « Loginizer a été mis à jour de 1.6.3 à 1.6.4 automatiquement bien que je n’aie PAS activé cette nouvelle option de WordPress. Comment est-ce possible ? », demande un utilisateur mécontent. « Je me pose la même question. Cela s’est produit sur trois sites web dont je m’occupe et dont aucun n’a été configuré pour une mise à jour automatique », renchérit un autre.
Des réactions négatives similaires ont également été constatées en 2015, lorsque Ryan Dewhurst a vu pour la première fois l’équipe WordPress déployer la fonction de mise à jour forcée d’un plug-in. Ce dernier pense que la fonctionnalité n’est pas plus largement utilisée car l’équipe de WordPress craint les « risques de pousser un patch buggé à un grand nombre d’utilisateurs ».
Samuel Wood, le développeur principal de WordPress, expliquait cette semaine que cette fonctionnalité avait été utilisée « de nombreuses fois » mais sans donner plus de détails sur ses autres cas d’utilisation. En 2015, un autre développeur de WordPress racontait que la fonction de mise à jour forcée du plug-in avait été utilisée seulement cinq fois depuis son lancement en 2013, confirmant qu’elle n’est utilisée que pour les bugs critiques et qui affectent des millions de sites.