Heartbleed: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 +
https://imgs.xkcd.com/comics/heartbleed_explanation.png
 +
 +
 +
 
=Funktionsweise=
 
=Funktionsweise=
 
*Heartbeat sollte  eigentlich Server und Client ermöglichen, eine TLS-Verbindung am Leben zu halten.
 
*Heartbeat sollte  eigentlich Server und Client ermöglichen, eine TLS-Verbindung am Leben zu halten.
 
*Darum sendet einer der Kommunikationspartner einen Payload mit beliebigem Inhalt zum Anderen.
 
*Darum sendet einer der Kommunikationspartner einen Payload mit beliebigem Inhalt zum Anderen.
*Die Gegenseite duplziert die Nachricht und schickt sie dann wieder zurück.
+
*Die Gegenseite dupliziert die Nachricht und schickt sie dann wieder zurück.
  
 
=Heartbleed=
 
=Heartbleed=
Zeile 15: Zeile 19:
 
*Das Opfer kopiert das 1 KByte und schickt dieses und 15 benachbarte zurück.
 
*Das Opfer kopiert das 1 KByte und schickt dieses und 15 benachbarte zurück.
 
*Der Angreifer kann so an Daten gelangen die nicht für ihn vorgesehen sind.
 
*Der Angreifer kann so an Daten gelangen die nicht für ihn vorgesehen sind.
*Die können aufgrund der Implementation von Opensslhäufig Passwörter oder andere Daten sein.
+
*Die können aufgrund der Implementation von Openssl häufig Passwörter oder andere Daten sein.
 
*Der Angriff kann man beliebig wiederholen.
 
*Der Angriff kann man beliebig wiederholen.
  

Aktuelle Version vom 21. März 2023, 18:56 Uhr

https://imgs.xkcd.com/comics/heartbleed_explanation.png


Funktionsweise

  • Heartbeat sollte eigentlich Server und Client ermöglichen, eine TLS-Verbindung am Leben zu halten.
  • Darum sendet einer der Kommunikationspartner einen Payload mit beliebigem Inhalt zum Anderen.
  • Die Gegenseite dupliziert die Nachricht und schickt sie dann wieder zurück.

Heartbleed

  • Wenn jetzt eine Seite lügt schickt die Gegenseite mehr Daten zurück als vorgesehen.
  • Es können so Daten ausgelesen werden die gar nicht für den Client bestimmt sind.
  • Openssl hat nicht überprüft, wie lang die empfangene Payload tatsächlich ist.
  • Die Gegenseite glaubt einfach das es solange ist wie im vorgesehene Feld payload_length.
  • Der Angreifer konnte so beliebige Werte dort reinschreiben.

Angriff

  • Angreifer schickt eine Nachricht von 1 KByte und behauptet sie wäre 16 KByte groß.
  • Das Opfer kopiert das 1 KByte und schickt dieses und 15 benachbarte zurück.
  • Der Angreifer kann so an Daten gelangen die nicht für ihn vorgesehen sind.
  • Die können aufgrund der Implementation von Openssl häufig Passwörter oder andere Daten sein.
  • Der Angriff kann man beliebig wiederholen.

Fazit

  • Der Bug schlummerte 2 Jahre lang unentdeckt im Quellcode von OpenSSL.
  • Die Möglichkeit das der Bug weltweit in dieser Zeit ausgenützt war ist nicht gering.
  • Namhafte Firmen hatten damals Openssl eingesetzt und keiner hat die Software kontrolliert.
  • Der Quellcode war als OpenSource zugänglich.
  • Die Entwicklergruppe war damals übersichtlich und bestand aus wenigen Festangestellten.

Links