Wie funktioniert eigentlich Heartbleed
Lest ihr regelmäßig Bugreports oder Meldungen über Schwachstellen bei SSL/TLS? Wie fühlt ihr euch so? Zur Erinnerung:
- 22. Februar 2014: Apple wird wegen des goto-fail-Bugs belächelt
- 3. März 2014: Die freie Bibliothek GnuTLS hat einen ähnlich schweren Bug
- 7. April 2014: OpenSSL vermeldet die Heartbleed-Schwachstelle
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:
- Netzpolitik.org: HeartBleed: Ein OpenSSL-Bug, der weitreichende Folgen haben könnte
- Heise: Passwort-Zugriff: Heartbleed-Lücke mit katastrophalen Folgen
- Heise Security: So funktioniert der Heartbleed-Exploit
- Zeit: Heartbleed – auf der Gruselskala bis 10 ist es die 11
- Ars technica: Critical crypto bug exposes Yahoo Mail, other passwords Russian roulette-style
- Vox: The heartbleed bug, explained
- existential type crisis : Diagnosis of the OpenSSL Heartbleed Bug
- The Register: Anatomy of OpenSSL’s Heartbleed: Just four bytes trigger horror bug
- Erweiterung Chromebleed für Google Chrome
- pacemaker – Client Exploit
Do not login to Yahoo! The OpenSSL bug #heartbleed allows extraction of usernames and plain passwords! pic.twitter.com/OuF3FM10GP
— Mark Loman (@markloman) 8. April 2014