Serendipity: SQL-Injection möglich

Serendipity ist ein PHP-basiertes Weblog-Publishing-System, welches mehrere Datenbanksysteme unterstützt. Außerdem bietet es eine sehr große Auswahl an Plugins, was es in den letzten Jahren recht beliebt machte.

Eine nun entdeckte Sicherheitslücke in Serendipity hat zur Folge, dass ein entfernter Angreifer unberechtigt SQL-Befehle ausführen kann. Ursache dieser SQL-Injection-Schwachstelle ist ein Programmierfehler in der Datei “include/functions_trackbacks.inc.php”. Dort werden Benutzereingaben nicht korrekt verarbeitet, wodurch ein Angreifer SQL-Befehle einschmuggeln kann.

Der Programmierfehler befindet sich der folgenden Zeile:

$comments = serendipity_fetchComments($id,1,'co.id',true,'TRACKBACK'," AND co.url='$url'");

Die Variable “$url” enthält Benutzereingaben und wird ungefiltert an die Funktion “serendipity_fetchComments()”. Damit kann der Angreifer SQL-Anweisungen unerlaubt an die Datenbank senden.

Eine sichere Variante dieser Zeile sieht so aus:

$comments = serendipity_fetchComments($id,1,'co.id',true,'TRACKBACK'," AND co.url='http://%20.%20serendipity_db_escape_string($url)%20.%20'");

Hier kommt zusätzlich die Funktion “serendipity_db_escape_string()” zum Einsatz, um die “$url”-Variable von gefährlichen Zeichenfolgen zu bereinigen. Damit ist die SQL-Injection-Attacke nicht mehr möglich.

Betroffen sind die Versionen 1.6.1 und älter.

Nach oben