Menü
Security

Lücke in Ruby on Rails erlaubt SQL-Injections

Von
vorlesen Drucken Kommentare lesen 26 Beiträge

Die Entwickler des freien Frameworks Ruby on Rails warnen vor einer Lücke in den Versionen 3.0, 3.1 und 3.2, durch die ein Angreifer beliebigen SQL-Code ausführen kann. Der Fehler befindet sich im Modul ActiveRecord und wurde inzwischen durch die RoR-Versionen 3.0.18, 3.1.9 und 3.2.10 behoben. Anwender, die keine aktuelle Version installieren dürfen oder wollen, können Patches verwenden, die es auch für die alte Version 2.3 gibt.

Aufgedeckt hatte den Fehler ein Blog-Beitrag von joernchen von der Gruppe phenoelit Ende Dezember 2012. Er untersuchte verschiedene Verfahren, die Authentifizierungsmethoden von RoR zu knacken, und stieß dabei auf eine zu großzügige Implementierung der find_by_*-Methoden in ActiveRecord. Sie interpretieren ihren letzten Namensbestandteil als Feld in einer Datenbanktabelle; so liefert find_by_id den Inhalt des Datensatzes, dessen Feld id mit dem übergebenen Wert übereinstimmt.

Ein solcher Dynamic Finder erlaubt als zweiten Parameter einen Hash, etwa der Form {:limit => 1}, der Optionen für die SQL-Abfrage enthält. Ihr erster Parameter durfte bislang jedoch ebenfalls ein Hash sein, den die find_by_*-Funktionen unter Umständen fälschlich als Sammlung von SQL-Optionen interpretierten. Dieser Bug, der sich laut dem Entdecker nicht per HTTP-GET oder -POST-Parameter ausnutzen lassen soll, ist nun behoben. (ck)