Wie letzte Woche schon angekündigt, geht es heute darum, wo Pufferüberläufe auftreten und wie sie ausgenutzt werden können. Pufferüberläufe sind eine sehr häufig vorkommende Schwachstelle. Es gibt kaum eine Software, in der nicht früher oder später eine Pufferüberlauf-Schwachstelle gefunden wird. Dies liegt daran, dass eine der Ursachen für Pufferüberläufe eine der Haupttätigkeiten jeder Software ist: Das Kopieren von vom Benutzer gelieferten Daten von einem Ort an einen anderen. Und auch wenn die Entwickler eines Programms alle Daten vor dem Kopieren prüfen, kann es noch zu Pufferüberläufen in vom Programm verwendeten Bibliotheken kommen.
Pufferüberläufe lassen sich zu zwei Zwecken ausnutzen: Entweder das betroffene Programm oder das gesamte System wird zum Absturz gebracht, d.h. es wird ein Denial of Service ausgelöst oder eingeschleuster Code wird ausgeführt. Für einen Angreifer ist das Ausführen von Code reizvoller, einen Denial of Service kann er danach jederzeit auslösen. Besonders interessant sind Pufferüberläufe in Programmen, die mit höheren Privilegien laufen, d.h. Root bei Unix-/Linux-Systemen und Administrator bei Windows-Systemen. Aber auch die Rechte eines normalen Benutzers sind nützlich, da davon ausgehend dann weitere Schwachstellen zum Erlangen der höheren Privilegien leichter ausnutzbar sind.
Beispiele
Sehr gefährlich sind Pufferüberläufe in über das Netzwerk erreichbaren Programmen, z.B. Servern oder dem TCP/IP-Stack. Ein Beispiel hierfür ist eine im April gefundene Schwachstelle im Mailserver MailEnable [1]. Durch einen entsprechend präparierten Header kann ein Pufferüberlauf ausgelöst und danach Code ausgeführt werden. Ein Programm, dass diese Schwachstelle ausnutzt (ein sogenannter Exploit), wurde bereits im Internet veröffentlicht [2]. Damit wird eine Hintertür geöffnet, durch die der Angreifer die Kontrolle über den betroffenen Rechner übernehmen kann.
Für Angreifer haben solche Schwachstellen zwei Vorteile: Sie können sie direkt ausnutzen, ohne auf eine Aktion eines Benutzers angewiesen zu sein. Und sie können bestimmen, welchen Rechner sie angreifen. Bei den unten beschriebenen Schwachstellen kann ein Angreifer höchstens den Benutzer wählen, dem er eine zur Ausnutzung einer Schwachstelle präparierte E-Mail schickt. Er weiß nicht, auf welchem Rechner diese E-Mail gelesen wird. Dabei kann es sich um einen Rechner handeln, der die Schwachstelle nicht enthält, oder der für die weiteren Zwecke des Angreifers ungeeignet ist.
Eine weitere Kategorie sind Pufferüberläufe in Bibliotheken. Diese werden ausgenutzt, indem entsprechend präparierte Daten einem Programm übergeben werden, das dann damit die betroffene Funktion der Bibliothek aufruft. Ein besonders bekanntes Beispiel aus dieser Kategorie ist die Schwachstelle in Microsofts JPEG-Verarbeitung in GDI+ [3]. Diese im September 2004 behobene Schwachstelle kann durch ein entsprechend präpariertes JPEG-Bild ausgenutzt werden, um beliebigen Code auszuführen. Dazu muss ein derartiges Bild nur in einer Anwendung geöffnet werden, die die betroffene Bibliothek verwendet. Schon das Lesen einer E-Mail oder Webseite, die ein entsprechendes Bild enthalten, reicht aus. Kurz nach Veröffentlichung der Schwachstelle durch Microsoft erschienen erste Bilder im Internet, die die Schwachstelle ausnutzten, um einen Trojaner zu installieren und dadurch eine Hintertür zu öffnen [4].
Eine besondere Gefahr bei Schwachstellen in Bibliotheken besteht darin, dass ein bereits gepatchtes System erneut verwundbar wird, wenn ein Programm bei seiner Installation die korrigierte Bibliothek durch eine veraltete, verwundbare Version ersetzt bzw. diese zusätzlich installiert. Auch weiß der Benutzer meist nicht, ob ein bestimmtes Programm eine verwundbare Bibliothek bzw. die betroffenen Funktionen daraus verwendet. Daher ist die Gefährdung durch diese Schwachstellen für den Anwender schwer einzuschätzen.
Pufferüberläufe in Anwendungsprogrammen werden meist über entsprechend präparierte Dateien ausgenutzt. Ein aktueller Vertreter dieser Kategorie ist eine Schwachstelle in Word [5]. Ein entsprechend präpariertes Dokument führt beim Öffnen zu einem Pufferüberlauf, durch den eingeschleuster Code ausgeführt wird. Eine derartige Datei kann z.B. per E-Mail zugeschickt oder auf einer Webseite zum Download angeboten werden. Der eingeschleuste Code wird mit den Rechten des Benutzers ausgeführt. Arbeitet dieser mit Administrator-Rechten, erhält der Angreifer die vollständige Kontrolle über den betroffenen Rechner.
In der nächsten Woche geht es um einige weitere Möglichkeiten, wo Pufferüberläufe auftreten und wie sie ausgenutzt werden können. Außerdem werden Abwehrmaßnahmen für Anwender vorgestellt. Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder als Kommentar an die Kolumne anfügen.















