Heartbleed

HeartbleedUnter Heartbleed versteht man einen Fehler in älteren Versionen von OpenSSL, mit Hilfe man über eine verschlüsselte Verbindung an private Daten gelangt, welche sich auf dem attackierten Server befinden. Hierbei muss man aber klar aussagen, dass man keinen gezielten Zugriff auf Daten durchführen kann, sondern nur Fragmente vom Server als Antwort zurück bekommt.

Heartbleed baut auf der Heartbleat (Server-) Kommunikation auf, welche eigens für das das Prüfen implementiert wurde um sicherzustellen, dass der Server betriebsbereit („einen Herzschlag vorweist“) ist und Aufgaben entgegennehmen kann.
Diese Erweiterung soll eine bis zu 16 kByte große, beliebigen Datenmenge an den Server Server schicken, welcher anschliessen diese Anfrage unverändert wieder zurück sendet und somit die Verbindung zu Server geprüft wird.

[xyz-ihs snippet=“ad“]

Kurz und bildlich:
Der Absender sendet:
„Hallo Server, bist du noch da?
Wenn ja, dann antworte mit ‚Zirkuspferd‚ (11 Zeichen)“

Der Server versteht:
„Absender möchte diese 11 Zeichen ‚Zirkuspferd‚ von mir „
Der Server antwortet:
Zirkuspferd

(Da es sich hierbei um eine zyklische Anfrage handelt, nimmt der Server unbegrenzt erneute Anfragen entgegen und beantwortet diese.)

Der Absender sendet:
„Hallo Server, bist du noch da?
Wenn ja, dann antworte mit ‚test‚ (4 Zeichen)“

Der Server versteht:
„Absender möchte diese 4 Zeichen ‚test‚ von mir „
Der Server antwortet:
test

(Jetzt kommt der spannende Teil, dem Heartbleed, oder der Heartbleed-Anfrage, also der veränderten Heartbeat-Anfrage. Nur jetzt mit einer signifikanten Abweichung der gezählten Zeichen.)

[xyz-ihs snippet=“ad“]

Der Absender sendet diesmal:
„Hallo Server, bist du noch da?
Wenn ja, dann antworte mit ‚Zirkus‚ (500 Zeichen)“

Der Server versteht:
„Absender möchte diese 500 Zeichen ‚Zirkus‚ von mir „
Der Server antwortet mit den letzten Anfragen und Aufgaben:
„client requested heartbeat send  4 Zeichen ‚test‚ to 123.123.123.123.
client requested heartbeat send  11 letters ‚Zirkuspferd‚ to 123.123.123.123. info@haberland.it requested to set password to 123Password456.
info@haberland.it got an e-mail form georgsamuel@gmx.de [subject] hier meine neue Telefonummer 0123 4567890 [body] Hallo Herr Haberland, hiermit sende ich Ihnen meine neue Telefonnummer und freue mich auf Ihren Anruf am 1.April.
(und so weiter bis die 500 Zeichen erreicht sind)“

Hier sieht man, dass man keine gezielten Daten abfragen kann, aber Zugriff auf die letzten Tätigkeiten des Servers. Und je nach dem was der Server davor für Aufgaben hatte, können hier ganz interessante Daten ausgelesen werden. So wie in meinem Beispiel mit den bei dem ich zuerst eine e-Mail empfangen habe, dann das Passwort neu gesetzt habe und dann die oben genannten Heartbeat-Anfragen. Ich hoffe ich konnte hier (mit fiktiven Daten) die Problematik aufzeigen.

[xyz-ihs snippet=“ad“]

Bei der Heartbleed Implementierung dieser Funktion wird nicht überprüft, ob die angegebene Länge der Daten mit der eigentlichen Länge der übertragenen Daten übereinstimmt. Ist die angegebene Länge größer als die Länge des übersandten Textes, so kopiert die OpenSSL-Implementierung über das Ende hinaus Daten aus dem Arbeitsspeichers. Aufgrund der fehlenden Überprüfung kann man somit mit nur einer Anfrage bis zu 64 kByte aus dem Arbeitsspeicher des Servers auslesen. Der Angriff kann unbegrenzt durchgeführt werden, um mehr Speicher auszulesen. In Tests unter laborbedingungen gelang es damit unter anderem den privaten Schlüssel des Serverzertifikats, Benutzernamen und Passwörter auszulesen.

[xyz-ihs snippet=“ad“]
Der Fehler wurde mit Version 1.0.1g am 7. April 2014 behoben.
Ein funktionaler Heartbleed Code wird in den kommenden Tagen veröffentlicht.

Ersten Kommentar schreiben

Antworten

Deine E-Mail-Adresse wird nicht veröffentlicht.


*