Achtung: MySQL-Datenbank-Zugang ohne Passwort möglich

  • Quelle: heise Security


    Durch einen Fehler innerhalb des MySQL-Servers ist es unter speziellen Umständen möglich ohne Passwort eine mysql Shell zu erhalten. Dies kann vor allem bei vorhandenen Usern wie root oder anderen Usern die Zugriff "auf alles" in MySQL haben, eine schwerwiegende Lücke bedeuten.

    Zitat von heise Scurity

    ...theoretisch alle MySQL- und MariaDB-Versionen bis einschließlich 5.1.61, 5.2.11, 5.3.5 und 5.5.22 verwundbar

    Überprüfen kann man dies auf seinem eigenen Server in einer aktiven Shell mit folgendem Befehl:


    Code
    for i in `seq 1 1000`; do mysql -u root --password=bad -h 127.0.0.1 2>/dev/null; done


    Erhält man hiermit eine aktive MySQL Shell (mysql>) so ist man von dem oben genannten Problem akut betroffen.


    Wir konnten dies in unseren Images in keinem der aktuellen Debian Images nachstellen (Squeeze, Wheezy).


    Bei Ubuntu ist das Problem lediglich im Ubuntu 12.04 Image nachvollziehbar. Getestet wurde dies mit Minimal-Installationen sowie der anschließenden regulären Installation des Mysql-Servers aus den Distributions-Repositories.

  • Empfehlungen für die Absicherung seiner Systeme:

    • externen Zugriff nicht global aktivieren, weder für den Server noch für einzelne User
    • nur kontrollierte Hostfreigaben für User / Datenbanken erteilen (localhost/hostname)
    • root User sowie User mit vollen Adminrechten temporär deaktivieren (mindestens bis es sichere Updates gibt)
    • externen Datenbankzugriff ggf. zusätzlich per Firewall unterbinden
  • 3 Server mit Debian Squeeze 6.0.5 und MySQL 5.5.25: Problem nicht nachvollziehbar.


    1 Server mit Debian Squeeze 6.0.5 und MySQL 5.1.62: Problem nicht nachvollziehbar.

    Neun von zehn stimmen in meinem Kopf sagen ich bin nicht verrückt, die zehnte summt die Melodie von Tetris.

  • Gegen localhost prüfen ist ja schön und gut, aber in welcher Distribution hat root den IP-mäßig unbeschränkten Zugriff auf MySQL? In der Standardkonfiguration ist doch sogar so, dass MySQL nichtmal per TCP/IP erreichbar ist.

    "Security is like an onion - the more you dig in the more you want to cry"

  • Danke für den Hinweis.
    Habe das auf meine beiden V-Server getestet auf dem Debian 6.0 (Squeeze) installiert getestet.


    Ergebnis: Kein Erfolg, Fehler nicht nachstellbar.


    Außerdem nutze ich die Firewall von Netcup damit keiner auf mein MySQL Server zugreifen kann und mit PHPMyAdmin bin auch sehr Vorsichtig, mache den Zugang dort auch immer zu wenn ich es nicht brauche.

  • Hallo,


    wenn ich folgenden Befehl ausführe erhalte ich nur folgendes:

    Zitat

    for i in `seq 1 1000`; do mysql -u root --password=bad -h 127.0.0.1 2>/dev/null; done




    Zitat

    root@v.........05:~# for i in `seq 1 1000`; do mysql -u root --password=bad -h 127.0.0.1 2>/dev/null; done
    root@v22..........605:~#

  • - NetCup VServer mit DebianSqueeze (das Image mit Froxlor, MySQL 5.1.61): Fehler nicht nachstellbar.
    - VServer eines anderen Providers mit Debian6+Confixx (MySQL 5.1.49): Fehler nicht nachstellbar.
    - Uralter Sicherheitsloch-Herumspiel-VServer eines anderen Providers mit Debian5+Confixx (MySQL 4.1.12): Fehler nicht nachstellbar.


    Und so gehts immer weiter. Bei nicht einem einzigen von insgesamt 6 V-Servern und 2 Rootservern konnte ich das Sicherheitsloch reproduzieren. Nicht einmal bei dem hier genannten, auf dem ich für sowas absichtlich Uraltversionen von allem drauf lasse, um es im Bedarfsfall zu testen - keine Sorge, der VServer ist sonst offline. ;)