Sicherheitswarnung: MySQL (nicht nur) unter CentOS 6.5 - Nach Installation angelegte Benutzer können sich nicht (genauer nur ohne Passwort) anmelden

Mir ist aufgefallen, dass ein eigentlich seit dem Jahr 2009 bekanntes Problem wieder aufgetaucht ist. Ich habe bei einem Kunde CentOS nebst MySQL und die zu Übungszwecken die mitgelieferte Testdatenbank installiert. Danach die Benutzeraccounts eingerichtet.

Es trat folgender, höchst merkwürdiger Effekt auf: Der frisch angemeldete Benutzer konnte sich zwar nicht mit seinem Passwort (mysql -u username -p) anmelden - dafür aber ohne Passwort (mysql -u username). Das konnte folglich auch jeder, der den Benutzername erriet oder kannte.

Dieser Effekt trat bei jeder Art und Weise auf, mit der man Benutzer anlegen kann. Eine Änderung des Passwortes brachte gar nichts.

Sicherheitswarnung:

Installieren Sie CentOS 6.5. und MySQL und kopieren dann Datenbanken können sich dadurch Unberechtigte anmelden und womöglich Daten manipulieren! dagegen erscheint es nur ärgerlich, dass sich der berechtigte Benutzer - mit seinem Passwort - nicht anmelden kann.

Abhilfe:

(1)
Melden Sie sich als root an:

~> mysql -u root -p

(2) Löschen Sie alle accounts mit leerem Name und laden Sie dann die Benutzertabellen neu:

mysql> DELETE FROM mysql.user WHERE user='';
mysql> FLUSH PRIVILEGES;

Das war dann schon. Jetzt kann sich der berechtigte Benutzer nur noch mit seinem Passwort anmelden (und bekommt auch seine Rechte).

Hintergrund:

Es werden beim Setup kommentarlos 3 Benutzer angelegt die keinen (also einen leeren) Name und kein (also ein leeres) Passwort haben. Diese können sich mit dem Mysql-Client ohne Passwort anmelden. Meldet sich jetzt ein gültiger Benutzer mit Passwort an, dann führt der Vergleich des leeren Benutzernamens in der Datenbank mit dem eingebenen Benutzername zu einem "false positive" - aber der Passwortverlgleich schlägt fehl. Meldet sich jetzt ein gültiger Benutzer ohne sein Passwort an, dann führt der Vergleich des leeren Benutzernamens in der Datenbank mit dem eingebenen Benutzername wieder zu einem "false positive" und der Passwortvergleich klappt diesmal.

Ob es nun tröstlich ist, dass der ohne Passwort angemeldete Benutzer auch nur die Rechte des namenlosen Benutzers hat, mag jeder Admin und Entwickler selbst entscheiden.

Es sei, wie es sei: Löscht man die namenlosen "Zombis" wie unter Abhilfe beschrieben, dann klappt alles so, wie man es erwartet.


Weitere Informationen in diesem Bereich: