Durch einen Fehler in der OpenSSL Bibliothek lassen sich unbemerkt Teile des Arbeitsspeichers auslesen. Betroffen sind in erster Linie die Versionen 1.0.1a bis 1.0.1f.
Das Problem
Der Heartbleed Bug ist ein ernstzunehmender Fehler in der OpenSSL Bibliothek. Betroffen sind die Version 1.0.1a bis 1.0.1f und teilweise wohl auch ältere Versionen, bei denen einige Funktionen zurückportiert wurden. Betroffen ist daher der größte Teil aller Server und Appliances. Viele Administratoren hatten erst letztes Jahr auf die OpenSSL Version 1.0.1 aktualisieren um Angriffen wie BEAST zu verhindern. Doch der Heartbleed Bug ist wesentlich kritischer, durch einen Fehler in der TLS Heartbeat Erweiterung ist es möglich den Inhalt des Speichers des betroffenen Systems auszulesen. Theoretisch ist es möglich bei jedem Zugriff bis zu 64 kByte des Speichers unbemerkt auszulesen.
Beschrieben ist die Heartbeat Extension in RFC6520. Laut diesem RFC muss ein Server auf einen Heartbeat Request mit einem Hearbeat Respons antworten. Dazu sendet der Client ein Paket mit einer Nutzlast(Payload), diese muss vom Server kopiert und zurück geschickt werden. Ein Paket besteht aus den folgenden Bestandteilen.
- Nachrichtentyp (type): Anfrage(request) oder Antwort(response)
- Länge der Nutzlast (payload_length)
- Nutzlast (payload)
- Abschließende Zeichenkette (padding)
Ursache des Problems ist, dass die angegeben Länge der Nutzlast nicht mit der Länge der tatsächlich übertragenen Nutzlast verglichen wird. Ist also der Wert für die Länge der Nutzlast größer als die tatsächlich übertragene Nutzlast, wird beim Kopieren der Nutzlast für die Antwort die Speichergrenze überschritten. Durch diese Überschreitung werden auch Speicherbereiche kopiert, in denen sich möglicherweise sensible Daten befinden. Theoretisch ist es also möglich Benutzernamen, Passwörter und eventuell sogar den privaten SSL Schlüssel zu kopieren.
Im Laufe unserer Tests konnten wir zwar keinen Schlüssel auslesen. Jedoch erhielten wir andere sensible Nutzerdaten, in diesem Fall aber zum Glück nur von Testnutzern. Da das Auslesen so gut wie unbemerkt stattfindet, ist es daher nur eine Frage der Zeit, bis auch der SSL Schlüssel in den Daten enthalten ist.
Was ist zu tun
Der Fehler wurde mit dem Commit Add heartbeat extension bounds check behoben. Alle größeren Linux-Distributionen hatten bereits kurz nach dem Bekanntwerden des Problems Updates bereitgestellt.
Mittlerweile sind auch erste Tools aufgetaucht mit denen ein Administrator seine Server und Anwendungen testen kann. Sollte ein Server betroffen sein ist schnelles handeln angesagt. Getestet werden sollten alle Dienste, die die OpenSSL Bibliothek nutzen. Das bedeutet es ist nicht nur der Webserver betroffen, sondern auch zum Beispiel Mail-Server und VPN-Dienste.
Folgende Schritte sollten durchgeführt werden:
- Patch auf betroffenen Systemen einspielen
- Alle Dienste die OpenSSL nutzen neu starten
- Private Schlüssel neu erstellen
- Neuen CSR an CA übermitteln
- Neue Signaturen einspielen
- Gültigkeit der alten Zertifikate widerrufen
Links
- Webseite: The Heartbleed Bug (englisch)
- OSVDB: OpenSSL TLS Heartbeat Extension Packets Handling Out-of-bounds Read Memory Disclosure (englisch)