GHOST – die neue (alte) Linux-Schwachstelle

Forscher des Sicherheitsunternehmens Qualys haben eine schwerwiegende Schwachstelle in der glibc-Bibliothek von Linux entdeckt. Die Sicherheitslücke erlaubt Angreifern, ohne direkten Zugriff auf das System die Kontrolle zu übernehmen.

Dank der Zusammenarbeit zwischen Qualys und vielen Linux-Distributionen konnte mit der Veröffentlichung der kritischen Schwachstelle (CVE-2015-0235) zugleich ein entsprechender Patch bereitgestellt werden. Alle Nutzer, die eine Linux-Distribution nutzen, die von der Sicherheitslücke betroffen ist, sollten umgehend ein Upgrade vornehmen. Auf dem Blog des Unternehmens werden alle wichtigen Informationen zur Schwachstelle genannt, die wir hier für euch zusammengefasst haben. Darüber hinaus erklären wir euch weiter unten an einem Beispiel, wie ihr auf einem Linux-System ein Upgrade vornehmen könnt.

Was ist glibc?

Die GNU-C-Bibliothek – oder kurz glibc – ist eine Implementierung der Standard C Bibliothek, ohne die Linux-Betriebssysteme nicht funktionsfähig sind.

Wie sieht die Schwachstelle aus?

Während der Untersuchungen haben die Forscher einen Pufferüberlauf innerhalb der Funktion __nss_hostname_digits_dots() entdeckt. Diese Schwachstelle kann über alle gethostbyname*()-Funktionen sowohl lokal als auch ferngesteuert ausgenutzt werden.

Anwendungen haben hauptsächlich durch gethostbyname*()-Funktionen Zugriff auf das Domain Name System (DNS). Dieser Dienst regelt die Umsetzung von Domainnamen in IP-Adressen.

Welche Gefahren bestehen?

Bei erfolgreicher Ausnutzung der Schwachstelle kann ein Angreifer ferngesteuert schädlichen Code ausführen und damit die volle Kontrolle über das jeweilige System übernehmen.

Welche Angriffe könnten durchgeführt werden?

Die Forscher von Qualys konnten im Zuge der durchgeführten Tests ein Proof-of-Concept erstellen: Mit einer speziell gefertigten E-Mail, die sie an den Mailserver sendeten, konnten gängige Sicherheitsmaßnahmen (wie ASLR, PIE und NX) umgangen werden – sowohl auf 32- als auch auf 64-Bit-Systemen.

Wie kann ich mich schützen?

Um das Risiko eines Angriffs zu minimieren, sollte man den Patch installieren, der von verschiedenen Linux-Distributionen bereits in der vergangenen Woche bereitgestellt wurde. Die Forscher haben eng mit diesen Distributoren zusammengearbeitet, um die Gefahren eizudämmen.

Warum heißt es GHOST?

Der Name GHOST bezieht sich auf die GetHost-Funktion, über die der Pufferüberlauf provoziert werden kann.

Ist die Schwachstelle ein Konstruktionsfehler?

Nein, es handelt sich um ein Implementierungsproblem, von dem nur manche Versionen der Software betroffen sind.

Welche Linux-Distributionen sind betroffen?

Die erste Version der GNU-C-Bibliothek, glibc 2.2, die am 10. November 2000 veröffentlicht wurde, ist von der Schwachstelle betroffen. Am 21. Mai 2013 wurde die Lücke zwischen der Veröffentlichung von glibc 2.17 und glibc 2.18 repariert.

Die Lücke wurde allerdings nicht als Sicherheitslücke erkannt, weshalb vor allem Langzeit-Support-Versionen anfällig sind. Dazu gehören z.B. Debain 7 (Wheezy), Red Hat Enterprise Linux 6 und 7, CentOS 6 und 7 sowie Ubuntu 12.04.

Kann der Exploit heruntergeladen werden?

Die Forscher von Qualys wollen den Nutzern zunächst die Möglichkeit geben, ihre Systeme zu reparieren und werden den Exploit zu einem späteren Zeitpunkt veröffentlichen.

Dadurch soll verhindert werden, dass noch nicht gepatchte Systeme angegriffen werden. Alle Nutzer betroffener Linux-Distributionen werden also aufgefordert, umgehend ein Update vorzunehmen.

Upgrade-Anleitung für Debian-Systeme

Von kinomakino entnommen:

Im Folgenden erklären wir euch, wie ihr auf einem Debian-basierten System – in diesem Fall ein apt-get-freundlicher Kali Linux – überprüfen könnt, welche glibc-Version ihr nutzt und wie ihr bei Bedarf ein Upgrade vornehmt.

Zunächst verlassen wir die grafische Umgebung, indem wir Ctrl. + Alt + F1 drücken.

Wir haben unsere grafische Umgebung gestoppt – in meinem Fall GDM, der Gnome Display Manager.

Ghost1

Überprüfe die glibc6-Version mit dem Befehl dpkg -s glibc6. Im Output können wir dann sehen, welche Version aktuell genutzt wird.

Ghost2

In der Datei /etc/apt/sources.list stehen die sogenannten Respositories, also die Quellen für die Pakete. In diese Liste muss der Debian Sid-Release eingetragen werden.

Die entsprechende Zeile lautet: deb http://ftp.debian.org/debian sid main. Zur Aktualisierung der Paketliste verwenden wir den Befehl apt-get update.

Ghost3

Wenn wir damit fertig sind, gehen wir zurück und überprüfen nochmals die Version des Pakets. Diesmal sollte hier 2.19-13 stehen.

Ghost4

Um zu überprüfen, welche Dienste die Bibliothek nutzen, führen wir den Befehl lsof | grep libc | awk ‚{print $ 1}‘ | sort | uniq aus. Nun kannst du entweder die hier angezeigten Dienste einzeln oder aber direkt das gesamte System neustarten.

Mithilfe des folgenden Proof-of-Concepts können wir dann ganz leicht überprüfen, ob unser System nun sicher ist:

wget https://gist.githubusercontent.com/koelling/ef9b2b9d0be6d6dbab63/raw/de1730049198c64eaf8f8ab015a3c8b23b63fd34/gistfile1.c gcc gistfile1.c -o CVE-2015-0235 ./CVE-2015-0235

Wie wir sehen, ist das System nicht mehr angreifbar.

Ghost5

Systeme ohne Upgrade, wie z.B. Centos 6.5, zeigen hingegen Folgendes an:

Ghost6

Fazit

Neben Shellshock stellt dies mit Sicherheit eine der schwerwiegendsten Linux-Schwachstellen innerhalb der letzten Jahre dar. Die Forscher haben ohne Zweifel hervorragende Arbeit geleistet und viele Systeme und Nutzer vor ernsthaften Sicherheitsproblemen bewahrt.

Dennoch kann man nicht ausschließen, dass einige Systeme nicht aktualisiert werden – vor allem solche, die auf Geräten laufen, bei denen sich deren Nutzer gar nicht so recht bewusst sind, dass sie ein Betriebssystem haben. Das könnte uns mittelfristig Probleme bereiten.

Autor , ESET