Passwörter werden nicht richtig escaped!

  • Hallo,


    uns ist gerade aufgefallen, dass Liveconfig beim erstellen von MySQL Benutzern (vielleicht auch woanders?), das Passwort nicht ordnungsgemäß escaped. Hier sollten natürlich Prepared Statements genutzt werden..


    So reicht es aus beim Anlegen eines MySQL Benutzer am Ende des Passworts ein '\' hinzuzufügen (Backslash). Im Log beim lcclient erscheint dann auch die entsprechende Meldung:


    [2015/01/05 16:52:35.720902] [10317|10318] Error while creating new database 'd_kmbs' (user 'd_kmbs'): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''XXXXXXXXXXXXX\'' at line 1
    [2015/01/05 16:54:07.180496] [10317|10320] Error while creating new database 'd_kmbs' (user 'd_kmbs'): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''XXXXXXXXXXXXX\'' at line 1
    [2015/01/06 15:50:10.822021] [20751|20754] Deleted database 'd_kmbs' and user 'd_kmbs'
    [2015/01/06 15:50:17.485031] [20751|20755] Deleted database 'dsdsdasdaw' and user 'ddsaasddassdaf'
    [2015/01/06 15:50:34.665640] [20751|20757] Error while creating new database 'dfdsgsdg' (user 'dsdgdsgsdg'): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''dfsgfdsgsdffsdfdsD\'' at line 1
    [2015/01/06 15:51:12.192222] [20751|20754] Deleted database 'dfdsgsdg' and user 'dsdgdsgsdg'


    Aus zeitlichen Gründen werde ich nicht schauen, was passiert, wenn ich hinter das Backslash ein wenig mehr SQL schreibe ;)


    Wir haben die aktuelle Version von LiveConfig im Einsatz: 1.8.0-r3361


    Mit freundlichen Grüßen,
    Patrick Matthäi


  • Aus zeitlichen Gründen werde ich nicht schauen, was passiert, wenn ich hinter das Backslash ein wenig mehr SQL schreibe ;)


    Keine Sorge, es besteht keine Gefahr für die Bevölkerung.



    Zitat

    Jede einzelne Formulareingabe auf der Weboberfläche wird durch LiveConfig untersucht, bevor die Daten weiterverarbeitet werden. XSS und SQL-Injections haben somit keine Chance.


    https://www.liveconfig.com/de/vorteile

  • Danke für den Hinweis. Ich habe mir das eben mal direkt im Code angesehen, warum es zu diesem Fehler kommen kann.


    Grundsätzlich arbeitet LiveConfig immer mit Prepared Statements, wodurch keine SQL-Injections möglich sind. Es gibt aber einige ganz wenige Ausnahmen: MySQL selbst kann nämlich einige Befehle nicht als Prepared Statement verarbeiten - u.a. bei GRANT. Diese Befehle werden dann direkt über mysql_query() ausgeführt. Hier ist es aber so, dass LiveConfig bewusst bei der Verbindung zur MySQL-Datenbank das Flag CLIENT_MULTI_STATEMENTS nicht setzt, wodurch also keine Befehle angefügt werden können.


    Dennoch handelt es sich hier um einen Fehler (es wurde hier die falsche Escaping-Funktion verwendet); ein Update steht in ca. 30 Minuten in den Repositories.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!