Skip to content

Die GHOST-Schwachstelle - Mehr Schein als Sein

Es gibt mal wieder eine neue Schwachstelle mit Namen: GHOST. Aber die ist bei weitem nicht so gefährlich wie zum Beispiel der Heartbleed-Bug oder die ShellShock-Schwachstelle.

Eine uralte Schwachstelle spukt auf Linux-Systemen

Erst mal ist die GHOST-Schwachstelle eine ganz normale Pufferüberlauf-Schwachstelle in der Funktion __nss_hostname_digits_dots() der Standard-C-Bibliothek GNU C Library (glibc) (CVE-2015-0235). Da sie über die gethostbyname*()-Funktionen aus der Ferne ausgenutzt werden kann, wurde sie von ihren Entdeckern von Qualys GHOST genannt.

Eine gute Beschreibung der Schwachstelle hat Paul Ducklin auf Sophos Naked Security veröffentlicht.

Eine Besonderheit der Schwachstelle ist ihr Alter: Die erste betroffene glibc-Version ist glibc-2.2 vom 10. November 2000. Der Fehler wurde zwar am 21. Mai 2013 zwischen der Veröffentlichung der Versionen glibc-2.17 und glibc-2.18 behoben, aber nur als normaler Fehler und nicht als Schwachstelle.

Womit wir zur zweiten Besonderheit kommen: Den betroffenen Linux-Distributionen. Aktuelle Distributionen, die eine aktuelle glibc-Version (ab 2.18) enthalten, sind nicht betroffen. Da der Patch aber nicht als sicherheitsrelevant eingestuft wurde, gelangte er nicht in die Long-Term-Support-Versionen der Linux-Distributionen, so dass zum Beispiel Debian 7 (Wheezy), Red Hat Enterprise Linux 6 und 7, CentOS 6 und 7 und Ubuntu 12.04 LTS von der Schwachstelle betroffen sind. Für diese Distributionen stehen inzwischen Updates zur Verfügung, die die Schwachstelle beheben.

Eine Liste betroffener und nicht betroffener Linux-Distributionen wurde von Matasano veröffentlicht.

Wie gefährlich ist die Schwachstelle?

Prinzipiell erlaubt die Schwachstelle das Ausführen beliebigen Codes. Es gibt aber einige Einschränkungen, die ihre Gefährlichkeit ziemlich reduzieren.

Die gethostbyname*()-Funktionen wandeln Hostnamen in IP-Adressen um. Wird eine IP-Adresse übergeben, ist das natürlich überflüssig. Der Fehler befindet sich im Code, der prüft, ob die Eingabe eine IP-Adresse ist. Laut Security Advisory von Qualys muss ein Parameter etliche Bedingungen erfüllen, um den für den Pufferüberlauf anfälligen Code zu erreichen. Bei vielen getesteten Programmen müssen die Parameter aber genau gegenteilige Bedingungen erfüllen, um überhaupt an die gethostbyname*()-Funktionen übergeben zu werden. Ein möglicherweise eingeschleuster Exploit erreicht die anfällige Funktion in diesen Fällen also gar nicht. Außerdem ist gethostbyname() obsolet, aktuelle Programmversionen nutzen oft den IPv6-fähigen Nachfolger getaddrinfo() und sind generell nicht betroffen.

Nicht betroffen sind laut Qualys die folgenden Programme:

"apache, cups, dovecot, gnupg, isc-dhcp, lighttpd, mariadb/mysql, nfs-utils, nginx, nodejs, openldap, openssh, postfix, proftpd, pure-ftpd, rsyslog, samba, sendmail, sysklogd, syslog-ng, tcp_wrappers, vsftpd, xinetd."

Ebenfalls nicht betroffen sind Squid und zugehörige Tools sowie HAProxy.

Johannes B. Ullrich hat im ISC Diary beschrieben, wie mittels ldd und lsof überprüft werden kann, welche Programme welche Libraries verwenden.

Es gibt einen (1!) PoC

Betroffen ist der Exim-Mailserver, sofern er so konfiguriert wurde, dass er zusätzliche Prüfungen für die Befehle HELO und EHLO durchführt. Qualys hat einen Proof-of-Concept entwickelt, bei dem eine an den Server gesendete E-Mail die Schwachstelle ausnutzt, um einen Shellzugang zu öffnen. Das ist aber auch der einzige PoC, der existiert.

Außer Exim sind noch clockdiff, procmail und pppd nachweislich betroffen, außerdem sind möglicherweise PHP-Anwendungen wie zum Beispiel Wordpress betroffen. Für das Metasploit-Framework gibt es ein wordpress ghost scanner module zum Testen von Wordpress-Installationen. Was es nicht gibt, sind PoCs oder gar echte Exploits für diese Programme.

Und nun?

Die Lösung des Problems ist ganz einfach: Es müssen nur die inzwischen bereit stehenden Patches/Updates installiert werde. Danach ist ein Neustart des Systems zwingend notwendig, da ansonsten die bereits laufenden Prozesse weiterhin die alte, angreifbare glibc-Version verwenden. Das war es dann aber auch schon - Problem erkannt, Problem gebannt.

Kleine Marketing-Panne, sowas kann ja mal passieren...

Ein etwas pikantes Detail am Rande: Die Schwachstelle wurde zu früh veröffentlicht. Zwar nur einige Stunden, aber immerhin. Qualys hatte eine PR-Agentur mit der Veröffentlichung der Schwachstelle beauftragt, und die hat eine französische Meldung (Englische Übersetzung via Google Translate) zu früh veröffentlicht. Allerdings nur um einige Stunden vor dem vereinbarten koordinierten Veröffentlichungstermin. Wofür sich Qualys entschuldigt hat.

Der Vorfall hat einige Kritik nach sich gezogen, wobei die zu frühe Veröffentlichung nur ein Kritikpunkt ist. Bedenklich ist auch, dass die PR-Agentur einige Zeit vor Veröffentlichung der Patches über die Schwachstelle informiert war. Normalerweise kennen bei vertraulich gemeldeten Schwachstellen nur die Entdecker und Entwickler die Schwachstelle (sofern sie nicht von Dritten unabhängig von den Entdeckern ebenfalls entdeckt wird). Sollte das Einschalten von PR-Agenturen üblich werden, werden die damit zu einem interessanten Angriffsziel für Cyberkriminelle. Vom der ebenfalls möglichen unbefugten Weitergabe durch Mitarbeiter der PR-Agentur ganz zu schweigen.

Außerdem erfolgt die Kommunikation zwischen den Entdeckern der Schwachstellen und den Entwicklern im Allgemeinen verschlüsselt, was man bei der Kommunikation mit PR-Agenturen wohl eher ausschließen kann.

Die Sache mit dem Logo...

Das Logo der Schwachstelle hat einigen Spott auf sich gezogen. Zum Beispiel, weil der gezeigte Shell-Prompt doch eher dem von MS-DOS als dem einer Unix-Shell ähnelt. Oder weil das verwendete JPEG-Format, dass die Qualität des Logos im Vergleich zu einem besser geeigneten Format wie PNG verschlechtert. Michal Zalewski hat eine "Technical analysis of Qualys' GHOST" veröffentlicht. Die aber nicht die Schwachstelle, sondern das Logo behandelt.

Ein Punkt ist dabei interessant: Der Webserver von Qualys liefert für das Logo einen Last-Modified-Header mit dem Wert "Thu, 02 Oct 2014 02:36:26 GMT", also lange bevor die Schwachstelle veröffentlicht wurde. Und zwar ungefähr 90 Tage früher - die Zeit, die üblicherweise für das Vorbereiten und Testen von Patches benötigt und zugestanden wird. Was laut Qualys aber ein reiner Zufall ist, das Datum der Logo-Datei hat mit der Schwachstelle nichts zu tun. Und der Name "GHOST" wurde erst am 23. Januar geprägt. Er war zum Beispiel noch nicht in dem am 18. Januar an die Linux-Distributionen gesendeten Advisory-Entwurf enthalten. Eine Erklärung für das vermutliche Alter des Logos steht noch aus. Und rein zufällig ist die betreffende Logo-Datei vom Webserver verschwunden.

Ein Schelm, der böses dabei denkt? Aber man sollte ja nicht mit Böswilligkeit erklären, was sich auch mit Dämlichkeit erklären lässt. Vermutlich hat da nur ein Praktikant den Webserver aufgeräumt und gedacht, so ein merkwürdiges Logo braucht ja keiner, also weg damit.

Aber das ist eigentlich auch egal. Patches/Updates installieren, Rechner neu starten, und die Sache ist erledigt.

Carsten Eilers

Trackbacks

Dipl.-Inform. Carsten Eilers am : Drucksache: Entwickler Magazin 3.16 - Angriffsziel DNS

Vorschau anzeigen
Im Entwickler Magazin 3.16 ist ein Artikel über Angriffe auf das Domain Name System DNS erschienen. Das Domain Name System (DNS) ist quasi das Telefonbuch des Internets. Niemand merkt sich IP-Adressen, stattdessen werden Domain-Namen ver

entwickler.de am : PingBack

Die Anzeige des Inhaltes dieses Trackbacks ist leider nicht möglich.