Manch einer assoziiert den Begriff «Sicherheitslücken» mit Windows. Linux wird weitgehend als sichere Alternative wahrgenommen

Manch einer assoziiert den Begriff «Sicherheitslücken» mit Windows. Linux wird weitgehend als sichere Alternative wahrgenommen

. Doch auch das freie Betriebssystem bleibt von sicherheitskritischen Lecks nicht verschont. Ein solches wurde kürzlich unter dem Kennzeichen CVE-2015-7543 bekannt und betrifft die GNU-C-Bibliothek.

Google entdeckt gefährlichen Bug

Es war ein Zufall. Ein Google-Entwickler stellte fest, dass sein SSH-Client immer wieder abstürzte, wenn er eine Verbindung zu bestimmten Adressen aufbauen wollte. Sicherheitsforscher von Google gingen der Sache nach. Was sie dabei entdeckten, ist von größter Brisanz. Eine Schwachstelle in glibc, der auf Linux-Systemen am weitesten verbreiteten Standard-Bibliothek für die Programmiersprache C, führt zu einem Pufferüberlauf auf dem Stack. Im schlimmsten Fall können Angreifer bösartigen Code einschleusen.

Pufferüberlauf im clientseitigen DNS-Resolver …

Der Fehler versteckt sich in der Funktion getaddrinfo(), die für die Auflösung von Domainnamen in IP-Adressen zuständig ist. Dazu sendet sie eine Anfrage an den DNS-Server. Für dessen Antwort reserviert sie 2048 Byte Speicherplatz auf dem Stack.

Ist die Antwort des DNS-Servers größer als der reservierte Speicherbereich, sorgt sie dafür, dass ein neuer Puffer mit der richtigen Größe auf dem Heap zugewiesen wird. Unter gewissen Umständen geht dabei etwas schief: Die DNS-Antwort landet trotzdem im zu kleinen Puffer auf dem Stack und es kommt zum Pufferüberlauf. Diesen kann ein Angreifer nutzen, um eigenen Code zur Ausführung zu bringen.

… erlaubt Ausführung von Remote-Code

Einfach ist dies allerdings nicht. Die meisten Linux-Systeme verhindern durch die zufällige Zuordnung von Speicheradressen (Speicherrandomisierung), dass der Angreifer die Einsprungadresse seines Schadcodes kennt. Den Sicherheitsforschern von Google gelang es dennoch, einen Exploit zu entwickeln, der den Fehler im DNS-Resolver von glibc nutzt, um Remote-Code auszuführen. Aus Sicherheitsgründen verzichteten sie, diesen Exploit zu veröffentlichen.
Angreifbar sind alle Anwendungen, die die glibc-Funktion getaddrinfo() für DNS-Abfragen verwenden – und das sind viele. Die Google-Ingenieure testeten erfolgreich Angriffe auf SSH, sudo und cURL. Es sind verschiedene Wege denkbar, wie ein Eindringling die Schwachstelle auszunutzen kann: Er schaltet sich über eine Man-in-the-Middle-Attacke in die DNS-Kommunikation ein, kapert einen DNS-Server oder setzt speziell konstruierte Domainnamen ein.

Wer ist betroffen?

Das Sicherheitsleck schlich sich 2008 mit Version 2.9 in die glibc. Es bedroht alle Systeme, die die GNU-C-Bibliothek ab 2.9 nutzen, also nahezu alle aktuellen Linux-Distributionen. Nicht betroffen sind Android-Geräte. Googles Betriebssystem baut zwar auf Linux auf, setzt aber auf eine eigene Implementierung der C-Standard-Bibliothek namens Bionic. Nicht betroffen sind auch die meisten Linux-basierten Embedded-Geräte wie Router. Sie verwenden in der Regel abgespeckte Alternativen zur glibc, hauptsächlich uClibc. Macht ein solches Gerät dennoch von der GNU-C-Bibliothek Gebrauch, ist es indes besonders gefährdet: Embedded-Geräte nutzen typischerweise keine Speicherrandomisierung und werden nur spärlich mit Updates versorgt.
Ob das eigene System verwundbar ist, lässt sich mit einem vom Google-Sicherheitsteam auf Github veröffentlichten Proof of Concept prüfen. Dieses Testprogramm ist harmlos. Ist die Sicherheitslücke vorhanden, stürzt es ab, führt jedoch keinen Schadcode aus.

So schnell wie möglich updaten

Die Ingenieure von Google fanden bald heraus, dass sie nicht die Ersten waren, die den Bug im DNS-Resolver von glibc entdeckt hatten. Die Red-Hat-Entwickler Carlos O’Donell und Florian Weimer beschäftigten sich bereits seit Mitte letzten Jahres damit. Lange unterschätzten sie allerdings die Gefahr, die von der Sicherheitslücke ausgeht. Das Google-Forscherteam kontaktierte die beiden und entwickelte mit ihnen zusammen einen Patch. Dieser ist seit 16. Februar verfügbar. Viele Linux-Distributionen haben rasch reagiert, und bieten bereits ein Update-Paket an. Dazu gehören unter anderem:

  • Ubuntu 12.04, 14.04 und 15.10
  • Debian 6 (Squeeze), 7 (Wheezy) und 8 (Jessie)
  • Red Hat Enterprise Linux 6 und 7

Es empfiehlt sich, das Update schnellstmöglich einzuspielen und das System anschließend neu zu starten. Steht noch keine Aktualisierung der glibc zur Verfügung, hilft es, DNS-Antworten, die 512 Bytes (UDP) respektive 1024 Bytes (TCP) überschreiten, über die Firewall auszufiltern.

Déjà-vu

Das noch namenlose Leck weckt ungute Erinnerungen. Bereits vor einem Jahr wurde unter dem Namen “Ghost” ein schwerwiegender Fehler im DNS-Resolver von glibc bekannt, der die Ausführung von Remote-Code erlaubte. Mit einer manipulierten IP-Adresse konnte ein Angreifer in der (veralteten) Funktion gethostbyname() einen Pufferüberlauf verursachen und so eigenen Code einschleusen. Beiden Sicherheitslücken ist gemein, dass sie während vieler Jahre unentdeckt blieben und zunächst unterschätzt wurden. Bei Ghost dauerte es lange, bis der Bugfix seinen Weg in die Linux-Distributionen fand. Zumindest dies scheint sich derzeit nicht zu wiederholen.

 

 Bildquelle: bigstock-ID-82341470-by-Nasir1164

Share →

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>