Heartbleed: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (9 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 | + | *Die Gegenseite dupliziert die Nachricht und schickt sie dann wieder zurück. |
=Heartbleed= | =Heartbleed= | ||
| − | *Wenn jetzt eine Seite lügt schickt die Gegenseite mehr Daten zurück | + | *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. | *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. | *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. | *Die Gegenseite glaubt einfach das es solange ist wie im vorgesehene Feld payload_length. | ||
*Der Angreifer konnte so beliebige Werte dort reinschreiben. | *Der Angreifer konnte so beliebige Werte dort reinschreiben. | ||
| + | |||
=Angriff= | =Angriff= | ||
| − | *Angreifer schickt eine Nachricht von 1 | + | *Angreifer schickt eine Nachricht von 1 KByte und behauptet sie wäre 16 KByte groß. |
| − | *Das Opfer kopiert das 1 | + | *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 | + | *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. | ||
| + | |||
=Fazit= | =Fazit= | ||
*Der Bug schlummerte 2 Jahre lang unentdeckt im Quellcode von OpenSSL. | *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. | *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. | *Namhafte Firmen hatten damals Openssl eingesetzt und keiner hat die Software kontrolliert. | ||
| − | *Der Quellcode war | + | *Der Quellcode war als OpenSource zugänglich. |
*Die Entwicklergruppe war damals übersichtlich und bestand aus wenigen Festangestellten. | *Die Entwicklergruppe war damals übersichtlich und bestand aus wenigen Festangestellten. | ||
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.