Aus Linux-Magazin 09/2007

Sicherheitsschwachstellen bei der Installation von proprietärer Software finden

© Michal Mrozek, Fotolia

Schwachstellen im Quellcode finden ist schon schwierig – richtig heikel wird es bei Closed-Source-Software. Der Fall der Schwachstelle in einem Druckertreiber zeigt exemplarisch, wie sicherheitsbewusste Administratoren diabolische Details deutlicher Dummheiten detektieren.

Ein Gespenst geht um in der Unix-Welt, das Gespenst immer neuer SUID-Vorfälle. Dieses Flag sorgt dafür, dass Programmdateien unter den Rechten des Besitzers und nicht unter denen des ausführenden Anwenders laufen. Dadurch erhalten auch normale Benutzer vorübergehend Root-Rechte. Beispielsweise muss das »ping«-Kommando besondere Pakete kreieren, was einem Benutzer gemeinhin verwehrt bleibt. Daher hat das Tool ein SUID-Flag und gehört dem User Root. Zu dessen Sonderrecht gehört aber auch die Pflicht, seine Rechte nicht für andere Zwecke zu missbrauchen oder dies dem Anwender zu gestatten.

Solange die Befehle ihre ursprüngliche Funktion beibehalten, ist die Welt in Ordnung. Doch wehe, ein Angreifer lockt die Werkzeuge vom rechten Pfad. Manche Programme erweisen sich hier als viel zu leichte Gegner. So geschehen beim letzten Installationstool für Samsung-Drucker: Das gut gemeinte Programm verstößt gegen die einfachsten Grundprinzipien sicherer Software und erweist sich im Testlabor als unerwartetes Risiko.

Samsung hat offenbar erkannt, dass auch Anhänger freier Software potenzielle Kunden seiner Drucker sind. Das Unternehmen bietet daher mit dem Unified Linux Driver ein Hilfsmittel an, das die Angebotspalette seiner Drucker mit dem Linux-Drucksystem Cups vertraut macht [1]. Das gut 20 MByte große Tar-Archiv liegt auf der Firmenwebsite zum Download bereit. Nach dem Entpacken, so die Anleitung, sei »./cdroot/autorun« als Root auszuführen.

Root-Gefahr

Hier klingeln bei einem besorgten Administrator schon die ersten Glöckchen, wenn sein Gehörgang nicht durch zu viele gerade absolvierte Installationsrunden, die alle das Gleiche forderten, betäubt wurde. Immerhin räumen die Root-Rechte dem Installer umfassende Vollmachten auf dem System ein. Um das Klingeln abzustellen, empfiehlt es sich, die Installer-Routinen zu inspizieren. Dabei fällt auf, dass dieses Programm zunächst aus Shellskripten besteht. Um den Ausführungspfad unter die Lupe zu nehmen, hilft es, folgendes Kommando zu Beginn des Skripts einzufügen:

set -x

Fortan protokolliert das Tool alle Shellaufrufe auf der Standardausgabe. Eine rasche Durchsicht offenbart, dass der Installer zunächst Pfade untersucht, die Linux-Distribution detektiert und einige Systembibliotheken substituiert.

Hier stutzt jeder Admin: Als wäre eine ganze Dekade an Softwareverteilung mit RPM- und Debian-Paketen aus dem Lauf der Geschichte radiert worden, kopiert der Installer eine ihm genehme Version der »libstdc++« mitten in die Systemverzeichnisse und umgeht somit das Paketmanagement. Damit schrumpft die Chance auf eine spätere Deinstallation erheblich und sie entzieht sich geordneten Sicherheitsupdates.

Closed-Source-Teil

Die letzten Zeilen des Protokolls offenbaren noch, dass das Skript nach den Installationen von Ghostscript, Scanner-Verwaltung Sane, Drucksystem Cups und Open Office sucht. Danach startet es den grafischen Teil des Installers, zu dem keine Quellen vorliegen. Unklar bleibt zunächst, wozu das Skript nach den erwähnten Anwendungen sucht. Das weckt die detektivische Neugier des Systemverwalters.

Um trotz fehlender Quellen hinter die Kulissen zu schauen, klemmt sich »strace« [2] in die Schnittstelle zwischen Userspace und Kernel. Das Werkzeug protokolliert alle Systemaufrufe, die ein Programm auslöst. Folgender Aufruf startet die Analyse:

strace -o out.txt -f ./cdroot/autorun

Die Option »-o« speichert die entstehende Datenflut in die Datei »out.txt«. Da der Installer vermutlich mehrere Prozesse startet, protokolliert »strace« mit der Option »-f« auch die Aufrufe aller Kindprozesse.

Die Ausführung des Installers ficht die Überwachungsmaßnahmen nicht an. Im verwendeten Kubuntu-Testsystem führt ein Wizard (Abbildung 1) komfortabel durch die Auswahl des Druckermodells sowie der Anschlüsse und macht diese erfolgreich beim Drucksystem Cups bekannt. Die eigentlichen Probleme bleiben im Verborgenen. Nun gilt es, mögliche Schwachstellen im Heuhaufen der Log-Einträge zu lokalisieren.

Abbildung 1: Dass der grafische Installer Berechtigungen verbiegt, kündigt er ironischerweise sogar als »Fixing file ownerschip and permissions« an.

Abbildung 1: Dass der grafische Installer Berechtigungen verbiegt, kündigt er ironischerweise sogar als »Fixing file ownerschip and permissions« an.

Von den gut 1,6 Millionen Protokollzeilen interessieren nur jene, die sich nachhaltig auf das Gesamtsystem auswirken. Besonderen Argwohn wecken Änderungen der Zugriffsrechte, gerade wenn die geänderten Dateien nicht zum Drucksystem gehören (Abbildung 2). Eine Suche nach dem Namen des Systemaufrufs »chmod« liefert gut 350 Treffer, die meisten davon sind aber unkritisch.

Abbildung 2: Strace und Grep decken auf: Hier setzt der Installer eigenmächtig SUID-Bits auf Programme, die damit zu universellen Einbruchstools mutieren.

Abbildung 2: Strace und Grep decken auf: Hier setzt der Installer eigenmächtig SUID-Bits auf Programme, die damit zu universellen Einbruchstools mutieren.

Verborgene Gefahr

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 3 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben