Une faille de sécurité récemment découverte dans MySQL permet à des utilisateurs malveillants d’accéder à un serveur de base de données, même en tant que root, même en utilisant un mot de passe invalide. Le problème affecte les serveurs ayant plusieurs distributions Linux et la vulnérabilité peut également être exploitée dans MariaDB, une variante développée par la communauté.
En plus de stocker uniquement le hachage des mots de passe des utilisateurs, MySQL ajoute également une chaîne aléatoire pour rendre les attaques par dictionnaire ou par force brute difficiles. Le mot de passe que l’utilisateur a saisi pour se connecter à la base de données est crypté puis comparé au code secret stocké dans la base de données. Dans certaines situations, le mot de passe saisi et la valeur attendue sont considérés comme égaux même s’ils ne le sont pas, ce qui permet l’accès.
En cas d’échec de l’authentification, toute personne qui connaît un nom d’utilisateur enregistré sur le serveur peut y accéder, y compris en tant que root, avec des privilèges d’exclusion de la base de données. La probabilité d’un accès non autorisé est d’une sur 256 tentatives, un pourcentage relativement faible, grâce au système de caractères aléatoires de MySQL. Le problème est que des centaines de tentatives d’accès peuvent être effectuées en une fraction de seconde avec un simple code Shell Script, de sorte que le bogue peut apporter des maux de tête importants aux administrateurs système.
La vulnérabilité est présente dans les versions 5.1.61, 5.2.11, 5.3.5, 5.5.22 et antérieures de MySQL et MariaDB. Les serveurs 64 bits avec les distributions Ubuntu, Arch Linux, openSUSE 12.1 et Fedora 16 contiennent des versions vulnérables. La faille de sécurité a déjà été corrigée dans des versions plus récentes. Un développeur d’Accuvant Labs a développé un petit script pour tester si votre serveur est vulnérable, disponible sur ce lien.