Une faille a été trouvée dans MySQL et MariaDB. Elle permet à n’importe qui de se connecter en tant que “root” en tapant simplement la ligne suivante dans votre terminal :
$ for i in `seq 1 1000`; do mysql -u root –password=bad -h 127.0.0.1 2>/dev/null; done
Le principe consiste à saturer le logiciel de tentatives d’authentifications. Il suffit simplement de connaitre le login (dans la plus part des cas “root”), et quelques centaines d’essais plus tard facilement réalisés par la boucle (ici 1000 essais sont demandés), la fonction memcmp accorde l’accès avec n’importe quel mot de passe.
Cette faille est possible car lorsqu’un utilisateur tente de se connecter, un jeton (token SHA généré à partir du mot de passe et d’une valeur aléatoire) est calculé et comparé à la valeur attendue. il arrive que les 2 valeurs soient considérées comme égales alors qu’elles ne le sont pas.
Les versions concernées sont :
MySQL 5.1.61, 5.2.11, 5.3.5, 5.5.22 et toutes les versions de MariaDB
MySQL 5.5.23 de Fedora et d’OpenSUSE 12.1 64-bit
Ubuntu 64-bit 10.04, 10.10, 11.04, 11.10, et 12.04
Comment se protéger en attendant un patch ? Interdisez l’accès de l’extérieur à la base :
- éditer le my.cnf :
- ajouter : bind-address=127.0.0.1
Ainsi votre base de données ne sera plus accessible que par le serveur lui meme et le port 3306 ne sera plus ouvert depuis l’extérieur (tester avec un NMAP par exemple, ou un netstat -an)
Pour le suivi des bug report, c’est par ici :
MariaDB bug report: https://mariadb.atlassian.net/browse/MDEV-212 MariaDB fix: http://bazaar.launchpad.net/~maria-captains/maria/5.1/revision/3144 MySQL bug report: http://bugs.mysql.com/bug.php?id=64884 MySQL fix: http://bazaar.launchpad.net/~mysql/mysql-server/5.1/revision/3560.10.17 MySQL changelog: http://dev.mysql.com/doc/refman/5.1/en/news-5-1-63.html http://dev.mysql.com/doc/refman/5.5/en/news-5-5-24.html
Pour finir, sachez que MariaDB et MySQL sont des SGBD parmis les plus utilisés au monde, les deux sont donc intéressants à comparer : http://dasini.net/blog/2010/12/30/bench-mariadb-vs-mysql/