Menü
iX Magazin

PostgreSQL-Entwickler warnen vor Sicherheitslücke

Von
vorlesen Drucken Kommentare lesen 78 Beiträge

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)