PostgreSQL-Entwickler warnen vor Sicherheitslücke

Die PostgreSQL-Entwickler warnen vor einer Programmierpraxis, durch die Benutzer beliebige Rechte in der Datenbank erlangen können.

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

In einem Blog-Eintrag warnen die Entwickler der freien Datenbank PostgreSQL vor der unüberlegten Verwendung der Option SECURITY DEFINER in SQL-Prozeduren und -Funktionen. Sie stattet den Code mit den Rechten desjenigen aus, der die Prozedur definiert hat und ähnelt insofern dem setuid-Verfahren in Unix, bei dem beliebige Anwender Programme mit den Rechten des Superusers ausführen können.

Die Sicherheitslücke entsteht dadurch, dass PostgreSQL sämtliche Bezüge zu nicht vollständig qualifizierten SQL-Objekten in den Prozeduren erst zur Laufzeit auflöst. Benutzer können dadurch Prozedur- oder Funktionsaufrufe auf von ihnen geschriebenen Code umlenken, wenn der Aufruf in einer Prozedur steht, für die SECURITY DEFINER gesetzt ist.

Als kurzfristige Abhilfe für diesen Designfehler empfehlen die Entwickler, in allen SECURITY-DEFINER-Prozeduren und -Funktionen mit SET search_path einen Schema-Pfad vorzugeben, auf dem PostgreSQL die referenzierten Funktionen, Prozeduren und Operatoren sucht. Der Default-Pfad sei nicht sicher, da er mit $user eine Referenz auf das Datenbank-Schema des Benutzers enthält.

Die Sicherheitslücke betrifft sämtliche PostgreSQL-Versionen seit 7.3. Einen kurzfristigen Fix stellen die Entwickler nicht bereit; PostgreSQL 8.3 soll möglicherweise eine Korrektur enthalten. Solange sie nicht zur Verfügung steht, sollten Entwickler ihre Prozeduren und Funktionen mit der beschriebenen SET-Funktion sichern. (ck)