Zur Zeit wird viel über den Heartbleed-Bug (CVE-2014-0160) in OpenSSL diskutiert. Betroffen sind die Versionen 1.0.1 bis 1.0.1f. Scheinbar ist dieser Bug einer der gravierendsten seit langem. Ein Angreifer kann über das Internet 64KB des Arbeitsspeichers eines entfernten Systems auslesen, dessen Verbindung mit der betroffenen OpenSSL Version abgesichert ist.
So kann zunächst der private Key des Systems ausgelesen werden, womit es möglich wird, jeglichen Datenverkehr zu entschlüsseln. So können laufende Verbindungen ausgelesen werden, aber auch Datenverkehr, der in der Vergangenheit abgefangen wurde. Passwörter oder weitere sensible Daten können so ohne Probleme erspäht werden.
Ich habe hier eine kurze Anleitung zusammengeschrieben, mit dessen Hilfe ein Server auf diese Verwundbarkeit überprüft werden kann. Basis ist hierbei das Script von Filippo Valsorda.
Auf Debian sind die Go-Pakete zu alt, darum werden aktuellere benötigt:
wget http://go.googlecode.com/files/go1.2.1.linux-amd64.tar.gz cd /usr/local/src tar xvzf $PATH_TO_TAR_GZ/go1.2.1.linux-amd64.tar.gz mkdir /usr/local/src/go
Anschließend müssen die Umgebungs-Variablen angepasst werden:
export PATH=$PATH:/usr/local/go/bin export GOROOT=/usr/local/go export GOPATH=/usr/local/src/go
Nun kann das Script heruntergeladen und kompiliert werden:
go get github.com/FiloSottile/Heartbleed go install github.com/FiloSottile/Heartbleed
Danach liegt das Binary im oben definierten GOPATH, in diesem Beispiel unter /usr/local/src/go/bin.
cd /usr/local/src/go/bin root@exodus:/usr/local/src/go/bin# ./Heartbleed This is a tool for detecting OpenSSL Heartbleed vulnerability (CVE-2014-0160). Usage: ./Heartbleed server_name(:port) The default port is 443 (HTTPS).
Und hier im Selbstversuch, wenn der Server verwundbar ist:
root@exodus:/usr/local/src/go/bin# ./Heartbleed netzdeponie.de 2014/04/09 02:08:17 ([]uint8) { 00000000 02 00 79 68 65 61 72 74 62 6c 65 65 64 2e 66 69 |..yheartbleed.fi| 00000010 6c 69 70 70 6f 2e 69 6f 59 45 4c 4c 4f 57 20 53 |lippo.ioYELLOW S| 00000020 55 42 4d 41 52 49 4e 45 3a 68 38 50 f1 9a f9 a3 |UBMARINE:h8P....| 00000030 43 44 14 3a 12 26 10 6b 3f b0 4e 2e 03 03 03 03 |CD.|.&.k!.Z.....| 00000040 81 d9 8a c0 a7 bf 2e b5 9e 26 df 62 8a 12 e4 92 |.........&.b....| 00000050 ff d3 6b 61 80 8c 39 34 69 77 33 e1 f1 de a3 d6 |..ka..f4ae3.....| 00000060 df e6 61 fd f2 c4 28 51 c0 56 3a 77 07 c0 c4 cd |..a<..(D.V:w....| 00000070 24 2d 3a 5c 34 e2 53 54 c4 7f 41 63 50 82 bf c9 |$.:\4.FP..fAc...| 00000080 21 a9 f6 f6 e2 65 03 17 16 4a 68 72 |!....e...Jhr| 2014/04/09 02:08:17 netzdeponie.de - VULNERABLE
Und so sieht es aus, wenn der Server nicht mehr verwundbar ist:
root@exodus:/usr/local/src/go/bin# ./Heartbleed netzdeponie.de 2014/04/09 02:15:12 netzdeponie.de - SAFE