MySQL-Client: Entfernter Angreifer kann Befehle ausführen

Eine Sicherheitslücke im Client für die Datenbank MySQL (und Maria DB) hat zur Folge, dass ein entfernter Angreifer Befehle mit den Rechten der Client-Applikation ausführen kann.

Die Schwachstelle befindet sich im MySQL-Client-Programm. Ein Angreifer kann die Attacke ausführen, wenn er die Kontrolle über einen Datenbankserver hat, mit dem das Opfer per Clientprogramm “mysql” eine Verbindung aufbaut. Der Programmierfehler befindet sich in der Quelltextdatei “client/mysql.cc”. Es handelt sich hierbei um einen typischen Buffer Overflow:

sprintf((char*) glob_buffer.ptr(), "Your %s connection id is %lu\nServer version: %s\n", mysql_get_server_name(&mysql), mysql_thread_id(&mysql), server_version_string(&mysql));

Der Angreifer kann hier einen Überlauf von “glob_buffer.ptr()” erzeugen, da er Kontrolle über die Server-Versionsinformation in der Variablen “mysql” hat. Der Patch für diese Sicherheitslücke ist sehr einfach und besteht darin die “sprintf()”-Funktion durch “snprintf()” zu ersetzen. Dabei wird zusätzlich die Länge von “glob_buffer” übergeben, so dass die Attacke unmöglich wird:

snprintf((char*) glob_buffer.ptr(), glob_buffer.alloced_length(), "Your %s connection id is %lu\nServer version: %s\n", mysql_get_server_name(&mysql), mysql_thread_id(&mysql), server_version_string(&mysql));

Hierbei gibt “alloced_length()” die allozierte Länge von “glob_buffer” an.

Nach oben