Auch Clients sind von Heartbleed betroffen!

Bei den Diskussionen über Heartbleed fällt häufig die Tatsache unter dem Tisch, das nicht nur Server betroffen sind, sondern auch bei Clients das Exploit verwendet werden kann, um Remote 64 KiB aus dem Speicher zu lesen. Hinzu kommt die Erkenntnis, das hierfür nicht mal ein Zertifikat bei der Gegenstelle vorhanden sein muss, da Heartbeats in betroffenen OpenSSL Versionen bereits vor dem Austausch von Zertifikaten oder Schlüsseln akzeptiert werden.

Die Vorgehensweise ist recht simpel:

  1. Auf das ClientHello mit der TLS Version und der Cipher Suite warten
  2. Senden des ServerHello mit der gleichen TLS Version und Cipher Suite (um Handshake Fehler zu vermeiden)
  3. Ab diesem Zeitpunkt können vom vermeintlichen Server beliebig viele Heartbeats gesendet werden

Für gewöhnliche Web-Anwendungen ist dieses Proof of Concept uninteressant, dennoch bietet es bei clientseitigen Zertifikaten ein Angriffsszenario an – beispielsweise bei OpenVPN Clients ist hiermit eine Man in the Middle Attacke denkbar, um den privaten Schlüssel eines Clients zu erbeuten.

Zur Demonstration hat Peter Wu hierzu das Proof of Concept pacemaker veröffentlicht und stelle die Ergebnisse gerne vor.

Dies ist ein Beispiel einer gepatchten OpenSSL Version mit wget:

user@patched-system:~$ wget https://host.name:4433/
--2014-04-13 15:32:04--  https://host.name:4433/
Auflösen des Hostnamen »host.name (host.name)«... yy.yy.yy.yy
Verbindungsaufbau zu host.name (host.name)|yy.yy.yy.yy|:4433... verbunden.
Es ist nicht möglich, eine SSL-Verbindung herzustellen.

Und so sieht das Ergebnis in dem Tool pacemaker aus:

Connection from: zz.zz.zz.zz:49119
Possibly not vulnerable

Hier das Gegenbeispiel:

user@vulnerable-system:~$ wget https://host.name:4433/
--2014-04-13 15:35:18--  https://host.name:4433/
Auflösen des Hostnamen »host.name (host.name)«... yy.yy.yy.yy
Verbindungsaufbau zu host.name (host.name)|yy.yy.yy.yy|:4433... verbunden.
Es ist nicht möglich, eine SSL-Verbindung herzustellen.

Und in pacemaker können wir hier den 64 KiB Dump vom Client sehen (Inhalte wurden verfälscht):

Connection from: xx.xx.xx.xx:56784
Client returned 65534 (0xfffe) bytes
0000: ed 2d 03 02 52 34 c6 6d 86 fd e8 40 b3 da ee 7e  .-..R4.d...!...~
0010: 21 c4 1d 2e 9f e9 60 5f 05 b0 ce af 7e b7 95 8c  !.....`_....~...
0020: 33 42 3f d5 00 c0 14 00 00 05 00 0f 00 01 01 00  3B?.............
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
*
4530: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c1 44  ...............D
89f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 81 00  ................
8a00: 00 00 00 00 00 00 08 78 e7 e5 ba 7f 00 00 08 78  .......x.......x
8a10: e7 e5 ba 7f 00 00 00 00 00 00 00 00 00 00 01 00  ................
8a20: 00 00 01 00 00 00 00 00 00 00 00 00 00 00 ff ff  ................
8a30: ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
8a50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 24 01  ..............$.
8a70: 00 00 00 00 00 00 80 00 00 00 00 00 00 00 20 00  .............. .
8a80: 00 00 00 00 00 00 03 00 00 00 ba 7f 00 00 60 17  ..............`.
8a90: d7 01 00 00 00 00 00 00 00 00 00 00 00 00 31 00  ..............1.
8aa0: 00 00 00 00 00 00 00 00 00 00 ba 7f 00 00 50 3b  ..............P;
8ab0: d7 01 00 00 00 00 00 00 00 00 04 00 00 00 00 00  ................
8ac0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 21 00  ..............!.
8ad0: 00 00 00 00 00 00 40 17 d7 01 00 00 00 00 00 00  ......@.........
8ae0: 00 00 00 00 00 00 03 00 00 00 00 00 00 00 41 00  ..............A.
8af0: 00 00 00 00 00 00 00 0e 00 0d 00 19 00 0b 00 0c  ................
8b00: 00 18 00 09 00 0a 00 16 00 17 00 08 00 06 00 07  ................
[...]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert