
Ein Forschungstool zur Überprüfung der OpenSSL-CVE-2014-0160-Schwachstelle.
Ein einfaches, in Ruby geschriebenes Tool, mit dem Sie Ihre Server auf die OpenSSL-Sicherheitslücke CVE-2014-0160 testen können.
Ich übernehme keine Verantwortung für Schäden, die durch die Verwendung dieses Tools verursacht werden könnten. Es wurde geschrieben, um private Server auf eine bestimmte Sicherheitslücke zu prüfen und potenzielle nutzerbezogene Datenlecks bei hohem Datenverkehr zu messen. Es wird als Werkzeug für interne Sicherheitsaudits bereitgestellt.
Erfordert:
Um diese Voraussetzungen zu installieren, laden Sie zunächst Ruby für Ihre Plattform herunter und installieren Sie es. Installieren Sie dann Bundler mit dem Befehl gem install bundler und holen Sie die Projektabhängigkeiten, indem Sie bundle install im Projektwurzelverzeichnis ausführen.
Die Befehlszeilen-Syntax lautet ruby src/run.rb <host> [<port>].
Wenn Ihr Server nicht verwundbar zu sein scheint, sieht die Ausgabe wie folgt aus:
Host server:443 seems safe
Ist er dagegen verwundbar, zeigt die Ausgabe etwa 64 Kib an Daten, die aus dem Speicher gestohlen wurden, als Hexdump an, sodass Sie prüfen können, ob eine Offenlegung sensibler Informationen hätte stattfinden können oder nicht.
Host server:443 is vulnerable! Heartbeat response payload : 00000000 d4 03 03 53 4a 84 a9 00 01 02 03 04 05 06 07 08 |...SJ...........| 00000010 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 |................| 00000020 19 1a 1b 00 01 a6 00 00 00 01 00 02 00 03 00 04 |................| 00000030 00 05 00 06 00 07 00 08 00 09 00 0a 00 0b 00 0c |................| 00000040 00 0d 00 0e 00 0f 00 10 00 11 00 12 00 13 00 14 |................| 00000050 00 15 00 16 00 17 00 18 00 19 00 1a 00 1b 00 1c |................| 00000060 00 1d 00 1e 00 1f 00 20 00 21 00 22 00 23 00 24 |....... .!.".#.$| 00000070 00 25 00 26 00 27 00 28 00 29 00 2a 00 2b 00 2c |.%.&.'.(.).*.+.,| 00000080 00 2d 00 2e 00 2f 00 30 00 31 00 32 00 33 00 34 |.-.../.0.1.2.3.4| ....
Gemäß den RFCs 6520 und 6066 sollte die maximale Heartbeat-Nachrichtengröße entweder ,
,
,
oder
Bytes betragen, abhängig davon, ob die Erweiterung „Maximum Fragment Length“ verwendet wird oder nicht.
Zitat aus RFC 6520 :
Die Gesamtlänge einer HeartbeatMessage DARF NICHT 2^14 oder max_fragment_length überschreiten, wenn diese wie in RFC 6066 definiert ausgehandelt wurde.
Zitat aus RFC 6066 :
Das Feld „extension_data“ dieser Erweiterung MUSS enthalten:
enum{ 2^9(1), 2^10(2), 2^11(3), 2^12(4), (255) } MaxFragmentLength;
dessen Wert die gewünschte maximale Fragmentlänge ist. Die zulässigen Werte für dieses Feld sind: 2^9, 2^10, 2^11 und 2^12.
Das bedeutet, die maximale Größe der gestohlenen Datenblöcke sollte etwa 16 Kib betragen. OpenSSL hält sich jedoch nicht an diese Einschränkung und erlaubt die Verwendung des maximalen Werts des Nutzlastlängenfelds der Heartbeat-Nachricht, d. h. 65535 (0xFFFF).