Login
Newsletter
Werbung

Do, 4. Januar 2001, 08:55

Software::Entwicklung

Die Sicherheit von GTK+

GTK+, das X11-Toolkit, das GIMP, GNOME und zahlreichen anderen Programmen zugrunde liegt, unterstützt eine Umgebungsvariable GTK_MODULES, mit der beliebige dynamische Module beim Programmstart geladen werden können.

Es ist offensichtlich, daß dadurch jedes setuid-Programm, das GTK+ verwendet, zu einem Sicherheitsrisiko wird. Jeder Benutzer könnte vor der Ausführung des Progamms die Variable setzen und damit beliebigen Code mit Root-Rechten ausführen.

Dies ist kein Problem bei Programmen, die nicht setuid sind. Das GTK+-Team macht daher klar, daß es die Verwendung von GTK+ in setuid-Programmen nicht unterstützt und daher auch keinen Anlaß sieht, das vermeintliche Problem zu beseitigen. Bei einer Code-Größe von 200000 Zeilen für GTK+ 1.2 und 500000 Zeilen für GTK+ 2.0 gibt es so viele potentielle Stellen, wo ein Sicherheitsrisiko auftreten könnte, das es einfach unverantwortlich ist, solche Programme mit setuid-Bit zu betreiben. Verschärft wird das Problem noch dadurch, daß die Xlib sowie weitere externe Bibliotheken verwendet werden, deren Sicherheit nicht garantiert werden kann. In einem setuid-Programm kann jeder einzelne Bug zu einer Sicherheitslücke werden, und in 500000 Zeilen finden sich mit Sicherheit eine ganze Menge Bugs.

Die Programmteile, die die Root-Rechte benötigen, sind, wenn überhaupt vorhanden, meist nur wenige Zeilen lang. Es ist also schlicht unsinnig, wegen ein paar Zeilen das ganze Programm mit den riskanten Root-Rechten zu versehen. Der Großteil des Codes benötigt keine Root-Rechte zum Laufen. Die korrekte Vorgehensweise ist, das Programm mit normalen Rechten laufen zu lassen und die Aktionen, die Root-Rechte benötigen, in einem kleinen separaten Programm laufen zu lassen. Dieses kann das setuid-Bit relativ gefahrlos gesetzt haben.

Um den Benutzern die Problematik zu verdeutlichen, wird eine künftige Version von GTK+ eventuell erst gar nicht starten, wenn sie mit erweiterten Rechten aufgerufen wird. Programme, die einer privilegierten Gruppe angehören (beispielsweise setgid games sind), sollten diese Privilegien vor dem ersten Aufruf einer GTK+-Funktion aufgeben.

Abgesehen von diesem Punkt gibt es weitere Stellen in GTK+, die Risiken darstellen. Das GTK+-Team ist sich darüber im Klaren und versucht, diese zu beseitigen oder zu minimieren. Besonders sorgfältig geht man bei den Bildladeroutinen vor, da die Bilder häufig aus nicht vertrauenswürdigen Quellen stammen. Einfachstes Beispiel hierfür wäre ein Web-Browser, der irgendeine Webseite lädt.

Werbung
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung