Aus Linux-Magazin 07/2014

Insecurity-Bulletin: Heartbleed-Bug in Open SSL

Wegen eines Programmierfehlers in Open SSL ließen Server ihre geheimen Schlüssel Byte-weise ins Internet tropfen. Eine Nachlese zum bisher aufsehenerregendsten Security-Bug des Jahres 2014.

Ein sicherheitsrelevanter Bug in der freien Krypto-Software Open SSL [1] hat im April 2014 für einiges Aufsehen gesorgt, auch außerhalb von Fachkreisen. Entdeckt haben ihn ungefähr zeitgleich am 7. April der Google-Mitarbeiter Neel Mehta [2] und das Team der finnischen Security-Firma Codenomicon.

Da sich der Fehler in der Heartbeat-Erweiterung der Software befand, war mit einem Wortspiel rasch der Name Heartbleed geschaffen. Codenomicon stellte eine gleichnamige Website online – und der Name blieb haften [3]. Der Heartbleed-Bug mit der Kennung CVE-2014-0160 sorgte für viel Unsicherheit und eilige Serverupdates.

Lebenszeichen

Technisch steckt hinter der Sicherheitslücke ein recht einfacher Programmierfehler. Open SSL setzt unter anderem Transportverschlüsselung nach dem Protokoll TLS um. Aus Performancegründen ist es wünschenswert, die TLS-Verbindung zwischen Client und Server nicht ständig neu aufzubauen, sondern länger aktiv zu halten. Dazu dient die Heartbeat-Erweiterung des Protokolls nach RFC 6520. Um der Gegenseite zu versichern, dass sie die Verbindung halten, schicken sich Client und Server kleine Datenmengen hin und her. Dabei senden sie nicht nur ein paar Bytes Daten, die die Gegenstelle wieder zurückschicken soll, sondern geben auch deren Länge an.

DELUG-DVD

Die DELUG-Ausgabe dieses Linux-Magazins bringt auf DVD die Pentesting-Distribution Kali Linux in Version 1.0.6 zuzüglich Updates mit. Das installierbare Livesystem enthält unter anderem die Metasploit-Version 4.9.2 mit Client- sowie Server-seitigen Exploit-Modulen für Heartbleed.

Der Programmierfehler liegt darin, dass der Empfänger die Datenlänge nicht selbst ermittelt, sondern diesen Wert ohne Prüfung von der Gegenstelle übernimmt. Schickt ein Partner nun aber lediglich 1 KByte Daten als Payload, gibt aber beispielsweise 5 KByte als deren Länge an, dann liest der Empfänger über den Datenbereich der Payload hinaus und schickt weitere 4 KByte aus seinem Arbeitsspeicher durchs Netzwerk zurück.

Zu viel gelesen

Dieser Fehler entspricht dem bekannten Typ Read Overrun, auch als Buffer Overread oder Out-of-bounds Read bezeichnet – ein Lesevorgang über das Datenende hinaus [4]. Im Normalfall wäre das nicht sonderlich dramatisch, denn es würde sich um zufällige Inhalte aus dem Arbeitsspeicher handeln. Open SSL implementiert allerdings seine eigene Speicherverwaltung und verwendet dabei etwa die Funktion »OPENSSL_malloc()« statt der gebräuchlichen »malloc()« .

Daher enthalten die Speicherfragmente stets Daten, mit denen Open SSL arbeitet. Bei der Kryptosoftware sind das Zertifikate und Schlüssel, die eigentlich geheim bleiben sollten. Bis zu 64 KByte lassen sich pro einzelnem Heartbeat herauskitzeln. Wiederholt ein Angreifer den Vorgang oft genug, kann er sich eine ausreichende Menge Speicher verschaffen, um schließlich den privaten SSL-Schlüssel eines Servers zu rekonstruieren.

Das war zunächst noch eine Vermutung und das Unternehmen Cloudflare schrieb einen Wettbewerb für den praktischen Beweis aus [5]. Kaum einen Tag später hatten ein Open-Source-Entwickler sowie ein finnischer Security-Forscher den privaten SSL-Schlüssel des Cloudflare-Testservers erbeutet. Sie brauchten dazu in dem einen Fall 2,5 Millionen, im anderen 100000 Requests.

Exploits

Man muss jedoch kein Security-Champion sein, um die Attacke selbst nachzuvollziehen. Für das Penetrationtest-Framework Metasploit stehen fertige Module für Angriffe gegen Server [6] und Clients [7] zur Verfügung. Der Kasten “Heartbleed mit Metasploit aufspüren” gibt eine detaillierte Anleitung, Abbildung 1 zeigt den Einsatz des Exploits gegen einen lokalen Apache-Webserver mit verwundbarem SSL-Modul.

Heartbleed mit Metasploit aufspüren

Die Entwickler von Metasploit, einem freien Toolkit für Penetrationtests, reagieren rasch auf neue Sicherheitslücken. Auch im Fall von Heartbleed gab es nur wenige Tage nach der Bekanntgabe der Lücke bereits passende Exploit-Module für die in Ruby geschriebene Software – erst zum Attackieren von Servern, dann auch einen Serverdienst, der den Speicher von Clients ausliest.

Je nach eingesetzter Linux-Distribution ist Metasploit nicht so einfach zu installieren. Am einfachsten probiert man es mit einer Security-Distribution wie Kali Linux [9] aus, die der DVD-Ausgabe dieses Linux-Magazins beiliegt. Die Kali-Entwickler pflegen ein eigenes Paketarchiv für Security-Software, das auch ein regelmäßig aktualisiertes Metasploit samt Modulen enthält. Eigene Installationen sind mit dem Kommando »msfupdate« aktualisierbar.

Das muss der Anwender jedoch mir Rootrechten ausführen. Nicht erschrecken: Penetration-Tester arbeiten häufig als Root, so auch beim Benutzen von Metasploit. Die Distribution Kali bootet standardmäßig ebenfalls in eine Root-Oberfläche (Defaultpasswort »toor« ).

Die lange Liste der installierten Metasploit-Module kann man auf der Kommandozeile mit dem Kommando

mfscli | grep heart

nach Exploits für Heartbleed durchsuchen. Das Testen erfolgt dann in der Metasploit-Konsole, die eine interaktive Kommandozeile mit History und Vervollständigung bereitstellt, ähnlich der Bash. Der Anwender startet sie mit »mfsconsole« und muss anschließend eine merkliche Weile warten, bis das Framework initialisiert ist und ein Prompt erscheint.

Das Use-Kommando wählt das zu benutzende Modul aus, mit

use auxiliary/scanner/ssl/openssl_heartbleed

aktiviert der Anwender den Scanner zum Untersuchen verwundbarer Server. Das Kommando »info« zeigt eine Kurzinformation über das Modul inklusive Autoren, relevanter Advisories sowie der wichtigsten Variablen. Letztere setzt man nach dem Muster »set VARIABLE Wert« . Beispielsweise stellt

set RHOSTS 192.168.1.123

die IP-Adresse eines zu scannenden Servers im lokalen Netzwerk ein. Der Befehl »run« führt den Exploit aus. Das Kommando

use auxiliary/server/openssl_heartbeat_client_memory

wählt das Modul zum Angreifen verwundbarer Clients aus. Es stellt einen Serverdienst auf dem Metasploit-Host bereit. Mittels Info- und Set-Kommando lässt er sich konfigurieren, standardmäßig hört er auf alle eingehenden Anfragen. Der Befehl »run« startet anschließend den Server.

Aktiviert man zudem die Einstellung »VERBOSE« , schreibt der Server sein Ereignisprotokoll aufs Terminal. Die Tastenkombination [Strg]+[D] beendet die Metasploit-Konsole.

Abbildung 1: Metasploit-Angriff gegen einen Apache-Webserver mit verwundbarem Open-SSL-Modul.

Abbildung 1: Metasploit-Angriff gegen einen Apache-Webserver mit verwundbarem Open-SSL-Modul.

Die erbeuteten Daten enthalten Mailadressen und weitere Texte, die aus Zertifikaten und Schlüsseln aus dem Verzeichnis »/etc/ssl/private« stammen. Das macht für alle öffentlichen Open-SSL-Installationen ein Update zwingend erforderlich. Unzählige Web-, SMTP-, POP- und IMAP-Server sowie SSL-VPNs, Webbrowser und Chat-Dienste nutzen die äußerst populäre Krypto-Software für sichere Verbindungen – sofern sie nicht die Konkurrenz GNU TLS verwenden.

Prinzipiell sind sowohl Client- als auch Server-Anwendungen betroffen, Webbrowser verwenden das Heartbeat-Feature aber meist nicht. Als eine der ersten Notfall-Maßnahmen empfahl das Open-SSL-Projekt, seine Software mit dem Flag »-DOPENSSL_NO_HEARTBEATS« zu übersetzen und somit das verwundbare Heartbeat-Feature zu entfernen.

Heartbleed betrifft die Open-SSL-Versionen 1.0.1 und 1.0.2-beta, einschließlich 1.0.1f und 1.0.2-beta1. Ein Patch stand binnen eines Tages zur Verfügung. Wie Listing 1 zeigt, fügt es der betroffenen Funktion »tls1_process_heartbeat()« in der Quelltextdatei »t1_lib.c« eine If-Abfrage hinzu. Sie vergleicht die Länge der »payload« -Variablen über die »SSL3_RECORD« -Struktur (»s3->rrec« ) mit der eigentlichen Größe der übertragenen Daten. Falls diese nicht zusammenpassen, ignoriert die Software das Paket einfach und sendet keine Antwort, womit die Attacke vereitelt ist.

Listing 1

Open-SSL-Patch für Heartbleed

01 if (1 + 2 + payload + 16 > s->s3->rrec.length)
02  return 0; /* silently discard per RFC 6520 sec. 4 */

Die Distributionen

Das Patch oder ein Update auf die Open-SSL-Versionen 1.0.1g beziehungsweise 1.0.2-beta2 stopft die Sicherheitslücke. Wegen der verschiedenen Softwareversionen befand sich der Bug nicht in allen Releases von Linux-Distributionen, wie Tabelle 1 zeigt. Beispielsweise blieben Debian Squeeze und Suse Linux Enterprise Server 11 aufgrund ihres älteren Versionsstands verschont. Bei Red Hat Enterprise Linux waren die Anwender bis inklusive Version 6.4 sicher.

Tabelle 1

Updates der Linux-Distributionen

Distribution und Version

Gefixtes Paket verfügbar

Debian Linux 6 Squeeze (Oldstable)

(nicht betroffen)

Debian Linux 7.4 Wheezy (Stable)

07.04.2014

Debian Linux 8.0 Jessie (Testing)

09.04.2014

Ubuntu 12.04 LTS Precise

07.04.2014

Ubuntu 12.10 Quantal

07.04.2014

Ubuntu 13.04 Raring

(nicht betroffen)

Ubuntu 13.10 Saucy

07.04.2014

Ubuntu 14.04 Trusty

07.04.2014

SLES 11

(nicht betroffen)

Open Suse 12.3

08.04.2014

Open Suse 13.1

08.04.2014

Red Hat Enterprise Linux 5

(nicht betroffen)

Red Hat Enterprise Linux bis 6.4

(nicht betroffen)

Red Hat Enterprise Linux ab 6.5

08.04.2014

Fedora 19

08.04.2014

Fedora 20

08.04.2014

Die meisten Linux-Distributionen stellten bereits am 8. April 2014, also einen Tag nach Bekanntgabe des Bugs, aktualisierte Binärpakete bereit, einige sogar noch am selben Tag. Viele Admins dürften Überstunden gemacht haben, um ihre Installationen zu aktualisieren. Ist ein öffentlicher Server von Heartbleed betroffen, ist es übrigens nicht genug, die Software gegen eine reparierte Version auszutauschen. Da bestehende private Schlüssel in die Hände von Angreifern gefallen sein können, muss der Admin zudem neue Schlüssel und Zertifikate generieren und das alte Zertifikat zurückrufen.

Dabei kann der Admin Heartbleed zum Anlass nehmen, um zu überprüfen, ob er beim SSL-/TLS-Betrieb alles richtig macht. Meist steht ein Upgrade auf zeitgemäße Schlüssellängen von 2048 Bit an. Weitere Anregungen dazu liefert die empfehlenswerte Leseliste des Open-Source-Entwicklers Daniel Molkentin [8].

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 3 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben