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 on : Tania Kobieta via Twitter

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

schrottn rohheit on : schrottn rohheit via Twitter

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

Andreas T. on : Andreas T. via Twitter

Show preview
“Wie funktioniert eigentlich Heartbleed” http://t.co/OoZKMRf75N

?????? ???? on : ?????? ???? via Twitter

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

Der Haken on : Der Haken via Twitter

Show preview
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 on : Fred Thiele via Twitter

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

Comments

Display comments as Linear | Threaded

Hanno on :

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 on :

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 on :

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 on :

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.

Add Comment

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.
BBCode format allowed
E-Mail addresses will not be displayed and will only be used for E-Mail notifications.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

You can use [geshi lang=lang_name [,ln={y|n}]][/geshi] tags to embed source code snippets.
Form options
cronjob