Skip to content

Wie funktioniert eigentlich Heartbleed

Lest ihr regelmäßig Bugreports oder Meldungen über Schwachstellen bei SSL/TLS? Wie fühlt ihr euch so? Zur Erinnerung:

SSL added and removed here!
Ausschnitt aus einer Folie aus dem MUSCULAR-Programm der NSA

Das heißt, drei Monate in Folge gab es schwere Sicherheitslücken in Software zur Verschlüsselung. Ganz unwillkürlich fühlt man sich an die Folien aus dem NSA-Programm MUSCULAR erinnert.

Die letztgenannte Schwachstelle ist vermutlich die bislang schwerste. Denn damit ist es möglich, den Arbeitsspeicher eines Computers auszulesen. Dies funktioniert sowohl auf der Seite des Servers wie auch beim Clientprogramm. Dazu ist es notwendig, dass das Programm OpenSSL verwendet und eine Erweiterung von SSL namens Heartbeat aktiviert hat. Dies ist beispielsweise bei Android in der Version 4.1.1 der Fall. Mozilla Firefox hingegen nutzt die NSS-Bibliothek und ist nicht betroffen. Die Webserver nutzen hingegen recht oft die OpenSSL-Bibliothek und sind damit betroffen, falls die Version 1.0.1 bis 1.0.1f von OpenSSL verwendet wird. Sollte jemand von euch die Software nutzen, so upgraded auf mindestens 1.0.1g oder deaktiviert Heartbeat in OpenSSL. Gerade letzteres kann man aus meiner Sicht problemlos tun. Denn bisher fand ich keinen sinnvollen Anwendungsfall für Heartbeat.

Doch wie funktioniert diese Lücke eigentlich? Heartbeat (RFC 6520) ist eine Erweiterung für TLS. Ein Teilnehmer einer Verbindung sendet beliebige Daten an den Empfänger. Dieser antwortet mit einer Kopie dieser Daten und zeigt somit, dass die Verbindung noch steht und alles in Ordnung ist. Das Problem dabei ist, dass in einer Anfrage zwei Längenfelder vorhanden sind. Ein Angreifer sendet einfach ein Byte Daten und behauptet, er hätte 64 kB gesendet. OpenSSL liest nun die 64 kB aus dem eigenen Puffer und sendet die Daten zurück an den Angreifer. Der Angreifer kann den Angriff immer und immer wieder starten und erhält so eventuell immer wieder ein neues Stück Arbeitsspeicher (siehe Kommentar von Florian Diesch). Bruce Schneier hat mit seinen Worten vollkommen recht:

Catastrophic" is the right word. On the scale of 1 to 10, this is an 11.
https://www.schneier.com/blog/archives/2014/04/heartbleed.html

Ich hatte in meinem 30C3-Vortrag schon ein OpenSSL-Beispiel reingenommen. Das sollte zeigen, wie kompliziert es sein kann, mit der Software sicheren Code zu schreiben. Auch andere sind, über die Codequalität gestolpert. Daher sind Leute gefragt, die einen detaillierten Blick auf OpenSSL werfen und die Software verbessern. Dazu zählt auch die bessere Lesbarkeit des Codes oder gute Dokumentation.

Wenn ihr wissen wollt, ob ihr betroffen seit, schaut lokal auf die OpenSSL-Version, nutzt die Zeile openssl s_client -connect example.com:443 -tlsextdebug 2>&1| grep ‘server extension “heartbeat” (id=15)’ || echo safe oder verwendet den Testservice von Lutz Donnerhacke oder Filippo Valsorda.

Weiterlesen:

Passwort und Nutzername im Dump der Daten von Yahoo! Mail

Trackbacks

Tania Kobieta am : Tania Kobieta via Twitter

Vorschau anzeigen
RT @qbi: Wie funktioniert #Heartbleed? Mein Versuch einer Erklärung des Bugs. #OpenSSL http://t.co/qmkNRgeG2q

schrottn rohheit am : schrottn rohheit via Twitter

Vorschau anzeigen
RT @qbi: Wie funktioniert #Heartbleed? Mein Versuch einer Erklärung des Bugs. #OpenSSL http://t.co/qmkNRgeG2q

Andreas T. am : Andreas T. via Twitter

Vorschau anzeigen
“Wie funktioniert eigentlich Heartbleed” http://t.co/OoZKMRf75N

?????? ???? am : ?????? ???? via Twitter

Vorschau anzeigen
RT @qbi: Wie funktioniert #Heartbleed? Mein Versuch einer Erklärung des Bugs. #OpenSSL http://t.co/qmkNRgeG2q

Der Haken am : Der Haken via Twitter

Vorschau anzeigen
RT @qbi: Das, was ich in http://t.co/qmkNRgeG2q mit Worten probierte, schafft @xkcdComic mit dem wunderbaren Comic. http://t.co/xIQ4oOGB9T

Fred Thiele am : Fred Thiele via Twitter

Vorschau anzeigen
RT @qbi: Das, was ich in http://t.co/qmkNRgeG2q mit Worten probierte, schafft @xkcdComic mit dem wunderbaren Comic. http://t.co/xIQ4oOGB9T

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Hanno am :

Bei Deiner Liste mehr oder weniger schwerer Sicherheitslücken fehlt das Frankencert-Paper, da gabs auch einige interessante Sachen drin:
https://www.cs.utexas.edu/~shmat/shmat_oak14.pdf
U.A. eine weitere GnuTLS-Lücke, die falsche (X509v1) Zertifikate als gültig erkennt.

Jens Kubieziel am :

Danke für den Hinweis. Mir fielen beim Blick auf die letzten drei Monate genau die Lücken auf. Pro Monat eine heftige Lücke ist enorm.

Florian Diesch am :

QUOTE:
Der Angreifer kann den Angriff immer und immer wieder starten und sich so durch den Arbeitsspeicher arbeiten.
halte ich für etwas unglücklich formuliert. Der Angreifeer bekommt jedesmal ein 65k-Stück aus dem Speicherbereich von OpenSSL, kann aber nicht kontrollieren, welches.

In diesem Stück können beliebige Daten stehen, die etwas auch den Verbindungen zu tun haben, für die OpenSSL benutzt wird, also auch z.B. Passwörter, Benutzernamen, Kreditkarten-Daten, übertragene Datei-Inhalte o.ä. - und auch der private Schlüssel des Servers, mit dem sich alle SSL-Verbindungen des Servers entschlüsseln lassen.

Man sollte daher davon ausgehen, dass mindestens alle Daten ausgespäht wurden, die ein anfälliger Server zwischen dem Bekanntwerden von Heartbleed und dem Zeitpunkt, zu dem der Server vom Netz genommern oder der Bug gefixt und die Schlüssel neu erzeugt wurden, übertragen hat.

Jens Kubieziel am :

ACK. Leider fällt mir momentan keine kurze griffige Formulierung ein. Ich habe den Satz ein wenig abgeändert und auf deinen Kommentar verwiesen. Eventuell bessere ich den Satz morgen nochmal aus.

Kommentar schreiben

Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
BBCode-Formatierung erlaubt
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA

Sie können [geshi lang=LANG][/lang] Tags verwenden um Quellcode abhängig von der gewählten Programmiersprache einzubinden
Formular-Optionen
cronjob