Lücke in Ruby on Rails erlaubt SQL-Injections

Alle aktuellen Versionen des Fameworks Ruby on Rails sind von einer Sicherheitslücke betroffen, die das Einschleusen von beliebigem SQL-Code ermöglicht. Nutzer sollten ihre Software möglichst schnell aktualisieren.

In Pocket speichern vorlesen Druckansicht 26 Kommentare lesen
Lesezeit: 1 Min.
Von
  • Christian Kirsch

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)