Heartbleed
Der Heartbleed-Bug ist eine Sicherheitslücke in älteren Versionen der Open-Source-Bibliothek OpenSSL. Durch Ausnutzung eines schwerwiegenden Programmfehlers können über verschlüsselte TLS-Verbindungen private Daten von Clients und Servern ausgelesen werden. Der Fehler betrifft die OpenSSL-Versionen 1.0.1 bis 1.0.1f und wurde mit Version 1.0.1g am 7. April 2014 behoben. Dadurch war ein großer Teil der Online-Dienste, darunter auch namhafte Websites, sowie auch VoIP-Telefone, Router und Netzwerkdrucker für Angriffe anfällig.
Beschreibung[Bearbeiten]
Der Fehler befindet sich in der OpenSSL-Implementierung der Heartbeat-Erweiterung für die Verschlüsselungsprotokolle TLS und DTLS. Die Heartbeat-Erweiterung sieht vor, dass ein Kommunikationsteilnehmer eine bis zu 16 kByte große Menge an beliebigen Daten (Payload und Padding) an die Gegenseite schickt, die anschließend den Payload-Teil unverändert zurücksendet,<ref name="RFC6520" /> womit periodisch abgeprüft werden kann, ob die Verbindung zum Server noch besteht.
Compiler der für OpenSSL verwendeten Programmiersprache C erzeugen standardmäßig keinen Code zur automatischen Überprüfung der Datenlänge. Sofern der Programmierer solche Fehler nicht explizit durch einen zusätzlichen Programmcode abfängt, wird daher auch nicht überprüft, ob die angegebene Länge der Daten mit der tatsächlichen Länge der mitgelieferten Daten übereinstimmt. Ist die angegebene Länge größer als die tatsächliche Länge, so kopiert die OpenSSL-Implementierung über das Ende des Eingabepuffers hinaus Daten aus dem Heap in den Ausgabepuffer. Aufgrund der fehlenden Überprüfung kann ein Angreifer mit einer Anfrage bis zu 64 kByte<ref>So funktioniert der Heartbleed-Exploit</ref> des Arbeitsspeichers der Gegenstelle auslesen.<ref><templatestyles src="Webarchiv/styles.css" />existential type crisis: Diagnosis of the OpenSSL Heartbleed Bug. ( vom 9. April 2014 im Internet Archive) blog.existentialize.com (englisch); detaillierte technische Beschreibung; abgerufen am 10. April 2014.</ref> Der Angriff kann mehrmals hintereinander durchgeführt werden, um mehr Speicher auszulesen. In Tests gelang es damit unter anderem, den privaten Schlüssel des Serverzertifikats, Benutzernamen und Passwörter von Servern auszulesen.<ref>Passwort-Zugriff: Heartbleed-Lücke mit katastrophalen Folgen. heise.de; abgerufen am 10. April 2014.</ref>
Bei der Sicherheitslücke handelt es sich um einen lesenden Zugriff über die Grenzen eines Datenpuffers (buffer over-read). Anders als bei einem Pufferüberlauf werden keine Daten außerhalb von Puffergrenzen geschrieben.
Entstehung[Bearbeiten]
Der Quellcode, der den Fehler aufweist, wurde am 31. Dezember 2011 von dem einzigen fest angestellten Mitarbeiter des OpenSSL-Teams aus dem Entwurfszweig in das OpenSSL-Git-Repository eingepflegt<ref>git-commit Er befindet sich dort in den Dateien <templatestyles src="Webarchiv/styles.css" />ssl/d1_both.c ( vom 1. September 2017 im Internet Archive) und <templatestyles src="Webarchiv/styles.css" />ssl/t1_lib.c ( vom 1. September 2017 im Internet Archive)</ref> und erstmals am 14. März 2012 mit OpenSSL-Version 1.0.1 veröffentlicht. Der Code wurde zuvor von einem Studenten der Fachhochschule Münster und der Universität Duisburg-Essen im Rahmen der Vorarbeiten zu seiner Dissertation über das SCTP-Protokoll entwickelt und als Entwurf bei OpenSSL eingereicht. Er erweitert OpenSSL um ein Heartbeat-Verfahren.<ref name="dissertation">Robin Seggelmann. SCTP. Strategies to Secure End-To-End Communication. S. 66 f. (PDF; 4,6 MB).</ref> Das Verfahren wurde von dem Studenten und zwei Mitautoren in RFC 6520<ref name="RFC6520" /> spezifiziert und ermöglicht es in TLS und DTLS, zu erfragen, ob die Gegenseite noch erreichbar ist. So werden z. B. die Verbindungszustände von eventuell in die OpenSSL-Kommunikation involvierten NAT-Routern aufgefrischt, damit die Verbindung bei einer vorübergehenden Inaktivität nicht gelöscht wird. Bei DTLS kann das Heartbeat-Verfahren zur Path MTU Discovery verwendet werden.<ref name="RFC6520" /> In der Dissertation begründet der Programmierer Designentscheidungen in der Heartbeat-Spezifikation, unter anderem den Einsatz des Padding-Felds, als Schutz vor Known-Plaintext-Angriffen.<ref name="dissertation" />
Entdeckung[Bearbeiten]
Am 7. April 2014 hat das OpenSSL-Team einen Sicherheitshinweis des Inhalts herausgegeben, dass die OpenSSL-Versionen 1.0.1 bis einschließlich 1.0.1f, sowie 1.0.2-beta bis einschließlich 1.0.2-beta1<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. 7. April 2014, abgerufen am 29. November 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> vom sogenannten Heartbleed-Bug<ref>The Heartbleed Bug Englisch. Abgerufen am 8. April 2014.</ref> betroffen seien. Es ist jedoch möglich, OpenSSL ohne die fehlerhafte Heartbeat-Komponente zu kompilieren (-DOPENSSL_NO_HEARTBEATS), eine so kompilierte Version war dadurch auch gegen einen Heartbleed-Angriff immun.<ref>OpenSSL-Sicherheitslücke: Update empfohlen</ref>
Die Sicherheitslücke bestand insgesamt 27 Monate, bis sie unabhängig voneinander von Antti Karjalainen (Codenomicon, Oulu, Finnland) und Neel Mehta (Google Security) entdeckt<ref>businessinsider.com</ref><ref>How Codenomicon Found The Heartbleed Bug Now Plaguing The Internet Englisch. Abgerufen am 14. April 2014.</ref><ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. 13. April 2014, abgerufen am 9. Dezember 2017.</ref> und behoben wurde.<ref>bugfix</ref> Bereits vor dem öffentlichen Bekanntwerden des Fehlers waren einige Anbieter informiert,<ref>Heartbleed disclosure timeline: who knew what and when englisch (Abgerufen am 23. April 2014).</ref> die daraufhin bereits ihre Systeme absicherten.<ref><templatestyles src="Webarchiv/styles.css" />Update on the Heartbleed OpenSSL Vulnerability ( vom 31. Juli 2014 im Internet Archive) englisch (Abgerufen am 23. April 2014).</ref>
Bewertung[Bearbeiten]
Der Kryptologe und Sicherheitsexperte Bruce Schneier beschreibt die Tragweite des Heartbleed-Bug als:
Lua-Fehler in Modul:Text, Zeile 51: attempt to index field 'wikibase' (a nil value)
„Katastrophal ist das richtige Wort. Auf einer Skala von 1 bis 10 ist dies eine 11.“
Der Programmierer erklärte, er habe einen unabsichtlichen Programmierfehler begangen und die Prüfung einer Eingabevariable versäumt,<ref>Der Programmierer im Sydney Morning Herald</ref><ref>„Heartbleed“-Programmierer spricht von Versehen</ref> in der die Länge des zurückzuliefernden Puffers mitgeteilt wird. Sein Fehler sei zwar trivial, aber folgenreich gewesen. Ferner stellte er fest, dass sein Fehler offensichtlich deshalb nicht bemerkt worden sei, weil zu wenige Menschen den Code von OpenSSL tatsächlich überprüfen.
Der IT-Sicherheitsexperte Felix von Leitner kritisierte, dass eine Heartbeat-Erweiterung für TCP aufgrund der vorhandenen Keepalive-Unterstützung nicht notwendig sei und dass man für einen Heartbeat keinen Payload brauche. Der Bug habe laut von Leitner den Anschein einer Backdoor.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. 9. April 2014, abgerufen am 16. Februar 2025.</ref> Von Leitner verteidigte die Namensnennung des Entwicklers in seinem Blog und rief zu mehr Verantwortung bei der Open-Source-Entwicklung auf.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Abgerufen am 7. Februar 2025.</ref> Die Schuld für Softwarefehler liege beim Programmierer.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Abgerufen am 7. Februar 2025.</ref>
OpenBSD- und OpenSSH-Entwickler Theo de Raadt bezeichnete in diesem Zusammenhang das OpenSSL-Team als nicht verantwortungsbewusst, da dieses einen Sicherheitsmechanismus, der bei der Entwicklung diesen Fehler nicht zugelassen hätte, aus Gründen der Leistung explizit umgehe.<ref><templatestyles src="Webarchiv/styles.css" />Theo De Raadt on Heartbleed ( vom 11. April 2014 im Internet Archive)</ref> Das OpenSSL-Team verwendete eigene Funktionen zur Speicherallokation (malloc) und -deallokation (free) und umging damit mögliche Schutzmechanismen des Betriebssystems. Das OpenSSL-Team wies auf zu wenig Ressourcen als strukturelles Problem bei der Entwicklung der Software hin und bat um finanzielle Unterstützung.<ref>Nach Heartbleed: OpenSSL-Projekt bittet um Unterstützung Abgerufen am 16. April 2014.</ref>
Auswirkungen[Bearbeiten]
Der Heartbleed-Bug betraf Millionen von Geräten, die eine verwundbare OpenSSL-Version beinhalteten.<ref>Tom Spring: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. 23. Januar 2017, abgerufen am 16. Februar 2025.</ref>
Entschlüsselung während der Webserver-Verbindungsaufnahme[Bearbeiten]
Durch den Angriff können private Schlüssel der Serverzertifikate und möglicherweise auch andere Zugangsdaten kompromittiert werden. Es wurde empfohlen, diese auszutauschen. Betroffene Diensteanbieter rieten ihren Nutzern zum Wechsel des Passworts.<ref>Heartbleed-Sicherheitslücke: Diese Passwörter müssen Sie jetzt ändern Abgerufen am 10. April 2014.</ref>
Durch die hohe Anzahl betroffener Systeme stellte der Zertifikatsaustausch im April 2014 professionelle Zertifikatsanbieter vor Herausforderungen.<ref>Heartbleed SSL-GAU: Neue Zertifikate braucht das Land. Abgerufen am 10. April 2014.</ref> Im Rahmen von Heartbleed wurde auch auf die unzureichenden Möglichkeiten zur Prüfung auf zurückgezogene Serverzertifikate (CRL und OCSP) hingewiesen.<ref>Zurückziehen von Zertifikaten bringt wenig Abgerufen am 16. April 2014.</ref><ref>Heartbleed und das Sperrproblem von SSL Abgerufen am 23. April 2014.</ref>
Entschlüsselung archivierter Daten[Bearbeiten]
Abgesehen von möglicherweise abgegriffenen Zugangsdaten (Benutzernamen, Passwörter) kann mit dem privaten Schlüssel des Serverzertifikats ein auch lange vor dem Bekanntwerden des Fehlers aufgezeichneter Datenverkehr nachträglich entschlüsselt werden, sofern die Verschlüsselung nicht mit Perfect Forward Secrecy geschützt war. Außerdem können mit dem privaten Schlüssel des Serverzertifikats Man-in-the-middle-Angriffe durchgeführt werden, sofern das Serverzertifikat noch nicht abgelaufen oder widerrufen ist. Es können alle Dienste betroffen sein, wie beispielsweise E-Mail-Verkehr oder verschlüsselte Chats, sofern eine betroffene OpenSSL-Version verwendet wurde. SSH ist nicht betroffen, da es TLS nicht verwendet.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Abgerufen am 19. Dezember 2024.</ref>
Betroffene Produkte[Bearbeiten]
TLS-Verbindungen dienen nicht nur der abgesicherten Verbindungsaufnahme mit einem Webserver. Auch VoIP-Telefone, Netzwerkdrucker und Router, die zur Authentifizierung Varianten des EAP-Protokolls verwenden, sind von der Sicherheitslücke betroffen.<ref>Jörg Thoma: Heartbleed in WLAN-Routern. golem.de; abgerufen am 2. Juni 2014.</ref> So waren beispielsweise einige VoIP-Telefon-Modelle des Herstellers Cisco betroffen.<ref>Zahlreiche Cisco- und Juniper-Produkte betroffen (Abgerufen am 16. April 2014).</ref> Der portugiesische Sicherheitsexperte Luis Grangeia zeigte an einem Konzeptbeispiel, wie ein maliziöser Access Point über EAP verwundbare Geräte angreifen kann.<ref>Michael Mimoso: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. 2. Juni 2014, abgerufen am 16. Februar 2025.</ref>
Durch bereitgestellte Firmware-Updates zur Behebung des Heartbleed-Bug kam es zum Komplettausfall einiger NAS-Modelle des Herstellers Synology.<ref>Heartbleed-Bugfix legt einige NAS-Systeme lahm (Abgerufen am 16. April 2014).</ref>
Googles Betriebssystem Android war ausschließlich in der Version 4.1.1 beim Bekanntwerden der Lücke betroffen.<ref>Google Services Updated to Address OpenSSL CVE-2014-0160 (the Heartbleed bug). googleonlinesecurity.blogspot.de; abgerufen am 16. April 2014.</ref><ref>Vorlage:CommonVulnerabExpos</ref>
Ausmaß der Ausnutzung[Bearbeiten]
Das Abgreifen von Daten hinterlässt auf einem angegriffenen System kaum Spuren. Daher ist nicht sicher, in welchem Maß der Fehler ausgenutzt wurde.<ref>Der GAU für Verschlüsselung im Web: Horror-Bug in OpenSSL. Abgerufen am 8. April 2014.</ref><ref>Keys auslesen mit OpenSSL. Abgerufen am 8. April 2014.</ref> Es gibt Hinweise auf einen Missbrauch im November 2013.<ref>Spuren von Heartbleed schon im November 2013. golem.de; abgerufen am 10. April 2014.</ref> Die Nachrichtenagentur Bloomberg berichtete unter Berufung auf „zwei informierte Personen“, dass der Heartbleed-Bug praktisch von Beginn an durch die NSA genutzt wurde,<ref>Internet-Sicherheitslücke: NSA soll „Heartbleed“-Fehler systematisch ausgenutzt haben. Spiegel Online, 11. April 2014.</ref> was vom Büro des NSA-Direktors jedoch umgehend dementiert wurde.<ref name="sz-1935920">Johannes Kuhn: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. 12. April 2014, abgerufen am 13. Oktober 2018.</ref><ref><templatestyles src="Webarchiv/styles.css" />icontherecord.tumblr.com ( des Vorlage:Referrer vom 27. Dezember 2017 im Internet Archive)Vorlage:Webarchiv/archiv-bot</ref> In einer im September 2014 veröffentlichten Studie kommen mehrere Sicherheitsforscher zu dem Ergebnis, dass es keine Hinweise auf ein Ausnutzen des Fehlers vor dessen Veröffentlichung gebe.<ref>Heartbleed-Lücke war zuvor nicht bekannt Abgerufen am 15. September 2014.</ref>
Durchgeführte Angriffe[Bearbeiten]
Durch den Heartbleed-Bug kam es zu einem Datendiebstahl beim kanadischen Finanzamt, bei dem innerhalb von sechs Stunden Sozialversicherungsnummern von 900 Personen entwendet wurden.<ref>Heartbleed: Datendiebstahl beim kanadischen Finanzamt (Abgerufen am 16. April 2014).</ref> Als Angreifer wurde ein 19-jähriger Teenager festgenommen.<ref>Teenager klaut Steuerdaten per „Heartbleed“ (Abgerufen am 19. April 2014).</ref>
Bei Community Health Systems, dem größten Krankenhausbetreiber in den USA, kam es durch Ausnutzung von Heartbleed zu einem Datendiebstahl von 4,5 Millionen betroffenen Patienten.<ref>Mike Lennon: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. 19. August 2014, abgerufen am 16. Februar 2025.</ref>
LibreSSL[Bearbeiten]
Um den Quellcode der OpenSSL-Bibliothek von nicht benötigten Bestandteilen zu bereinigen, erstellte das OpenBSD-Team den Fork LibreSSL. Der Quellcode wurde um mehr als 90.000 Zeilen bereinigt (Stand 21. April 2014).<ref>OpenBSD-Team bereinigt und forkt OpenSSL Abgerufen am 23. April 2014.</ref>
Behebung weiterer Fehler[Bearbeiten]
Bedingt durch den Heartbleed-Bug wurde der Quellcode von OpenSSL in der Folgezeit intensiver überprüft und so wurden im Juni 2014 noch weitere Lücken entdeckt und geschlossen,<ref>Sieben auf einen Streich: OpenSSL schließt Sicherheitslücken Abgerufen am 10. Juni 2014.</ref> darunter weitere des Programmierers, der auch den Heartbleed-Bug verursacht hat.<ref>Noch mehr Herzblut bei OpenSSL Abgerufen am 12. Juni 2014.</ref>
Andere Bibliotheken[Bearbeiten]
Die alternativen TLS-Bibliotheken PolarSSL,<ref>[[Kategorie:Wikipedia:Defekte Weblinks/Ungeprüfte Botmarkierungen Skriptfehler: Ein solches Modul „Archivbot“ ist nicht vorhanden.]]PolarSSL Security Advisory 2014-01 (Seite nicht mehr abrufbar, festgestellt im Juni 2025. Suche im Internet Archive)Vorlage:Toter Link/archivebot</ref> GnuTLS, NSS<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Abgerufen am 19. Dezember 2024 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref><ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Abgerufen am 19. Dezember 2024 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> und MatrixSSL<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Abgerufen am 19. Dezember 2024.</ref> waren im Gegensatz zu OpenSSL nicht von der Heartbleed-Lücke betroffen. Bei GnuTLS wurde allerdings kurze Zeit später eine ähnliche Sicherheitslücke bekannt.<ref><templatestyles src="Webarchiv/styles.css" />Linux hit by GnuTLS exploit, follows Heartbleed model ( vom 7. Juli 2014 im Internet Archive)</ref>
Weblinks[Bearbeiten]
- Offizielle Seite von Codenomicon Ltd., mit der die Lücke veröffentlicht wurde
- Fragen und Antworten zu Heartbleed. Golem.de, 9. April 2014.
- So funktioniert der Heartbleed-Exploit. Heise.de, 10. April 2014.
- The Heartbleed Hit List: The Passwords You Need to Change Right Now. mashable.com, 12. April 2014 – Liste betroffener Seiten und E-Mail-Provider.
- „Heartbleed Bug“: BSI sieht weiteren Handlungsbedarf. Bundesamt für Sicherheit in der Informationstechnik, 19. April 2014.
Einzelnachweise[Bearbeiten]
<references responsive> <ref name="RFC6520"> Vorlage:RFC-Internet </ref> </references>