Zum Inhalt springen Weiter zur Suche
Testversion
Blog

CVE-2014-3566: Von BEAST zu POODLE (oder Tanzen mit BEAST)

Im Mai 2011 veröffentlichten Thai Duong und Juliano Rizzo ein Papier mit dem Titel "Here Come The ⊕ Ninjas", in dem sie den BEAST-Angriff beschrieben.

Im Oktober 2014, dreieinhalb Jahre später, veröffentlichten Bodo Möller, Thai Duong und Krzysztof Kotowicz ein neues Papier mit dem Titel "Padding Oracle On Downgraded Legacy Encryption", das eine neue SSL-Schwachstelle, POODLE, dokumentierte.

BEAST steht für "Browser Exploit Against SSL/TLS" und ist ein Angriff, der es einem Angreifer ermöglicht, geschützte Inhalte effektiv zu lesen, indem er die IV-Verkettung(Initialisierungsvektor) in der CBC-Schwäche(Cipher Block Chaining) mit einem bekannten Klartextangriff ausnutzt. Bei der CBC-IV-Verkettung handelt es sich um eine Technik, bei der die neue "Zufallskomponente" (der IV) eine Funktion des Kryptotextes des vorhergehenden Blocks ist, und es handelt sich um eine häufig verwendete Technik, mit der die Notwendigkeit von Zufallszahlengeneratoren mit hoher Rate umgangen wird, da der IV aus Daten abgeleitet wird, die (hoffentlich) nicht erraten werden können. Wenn die Daten erraten werden können, ist das gesamte Schema geschwächt.

Damals wurde der Angriff erfolgreich abgewehrt, indem RC4 als Stromchiffre aktiviert wurde. Im Jahr 2013 veröffentlichten Scott Fluhrer, Itsik Mantin und Adi Shamir dann das Papier "Weaknesses in the Key Scheduling Algorithm of RC4", in dem sie eine Schwachstelle im Key Scheduling Algorithm (KSA) beschrieben - oder einfach gesagt, die Art und Weise, wie der Anfangszustand abgeleitet wird. Wie bereits im Zusammenhang mit dem Anfangszustand bei der CBC-IV-Verkettung erwähnt, verhält es sich hier ähnlich - wenn der Anfangszustand abgeleitet werden kann, werden Informationen preisgegeben. Der Unterschied ist jedoch, dass bei der CBC-IV-Verkettung ein ganzer Block angreifbar ist. In diesem Fall können Fragmente des Klartextes wiederhergestellt werden - mit mehreren Versuchen kann also der gesamte Text konstruiert werden. Folglich gibt es ein Informationsleck in den ersten Bytes des verschlüsselten Datenstroms.

Beachten Sie, dass es sich hierbei um zwei verschiedene Probleme handelt, die auf einen schwachen Ausgangszustand des Systems zurückzuführen sind (ja, ich bin liberal). Im Falle von BEAST wird die CBC-IV-Verkettung angegriffen und kann einen Chiffrierblock gefährden. Beim RC4-Angriff können Fragmente des Klartextes wiederhergestellt werden, so dass bei Wiederholungen (und mit der Zeit) der gesamte Text kompromittiert werden kann.

Damals betraf BEAST SSL und TLS 1.0, derzeit ist POODLE(Padding Oracle On Downgraded Legacy Encryption) nur für TLS relevant. Beachten Sie, dass das Problem nicht wirklich mit dem Protokoll selbst zu tun hat, sondern mit den verwendeten Cipher Suites. TLS 1.0 bevorzugt CBC-Chiffren und auch SSL v3, wo der Padding-Oracle-Angriff stattfindet. POODLE erfordert auch, dass der "Tanz" mit TLS beginnt, damit es herabgestuft werden kann (der -DLE-Teil des Angriffs).

POODLE besteht aus zwei Phasen. In der ersten Phase wird das Protokoll auf SSL v3 herabgestuft und dann ein Auffüllungsangriff ähnlich wie BEAST ausgeführt, bei dem die CBC-IV-Verkettung ausgenutzt wird, um den Textblock wiederherzustellen - allerdings wird er auch mit einem Angriff zur Herabstufung der Verschlüsselung kombiniert (den die Autoren als "Downgrade-Tanz" bezeichnen), so dass der Angriff eigentlich "Tanz mit BEAST" heißen müsste. Scherz beiseite, POODLE ist gefährlicher als BEAST, weil es weniger Vorabinformationen erfordert.

Der POODLE-Angriff nutzt einen Protokollfehler in SSL v3 aus, bei dem das Auffüllen des letzten Blocks nicht definiert ist (mit Ausnahme des letzten Bytes). Diese Klasse von Angriffen ist als "Padding Oracles "-Angriffe bekannt. In diesem ausgezeichneten Artikel wird ihre Funktionsweise ausführlich beschrieben.

Das Besondere an diesem Angriff ist die Art und Weise, wie das Padding funktioniert und dass das letzte Byte des Paddings signifikant und gleich der Länge des Paddings selbst ist. Wenn also der letzte Block nur aus Auffüllbytes besteht und der Angreifer ihn durch einen Block von Interesse ersetzen kann, der früher im Datenstrom auftaucht und dessen letztes Byte übereinstimmt, wird dieser Block akzeptiert und führt nicht zum Abbruch der Verbindung. Dies bedeutet, dass der Angreifer dies als Signal verwenden kann, wenn er den verschlüsselten Wert der Auffülllänge "erraten" hat, und als Ergebnis kann er das letzte Byte des Blocks, den er wieder eingespielt hat, wiederherstellen und ein Byte der Nachricht gewinnen. Durch Manipulation des Offsets der Nachricht können sie alle Bytes der Nachricht durchlaufen. Wenn es sich um ein sicheres Cookie handeln würde, würden sie dessen Wert kennen.

Damit BEAST funktioniert, muss der Angreifer die Möglichkeit haben, den Datenverkehr rechtzeitig zu manipulieren. Dies kann auf verschiedene Weise geschehen. Im lokalen Netzwerk können sie einfach MAC-Spoofing betreiben und den Datenverkehr durch ihre Station leiten, oder sie können Policy-Routing betreiben, wenn sie Zugang zu einem Switch haben, oder sie können den Datenverkehr über BGP-Routeninjektion entführen (was in der Vergangenheit schon mehrfach passiert ist). Die letzte Anmerkung mache ich absichtlich, damit klar ist, dass es nicht erforderlich ist, Zugang zum lokalen Netz zu haben, um dies auszunutzen. Und denjenigen, die nicht an BGP-Hijacks glauben, empfehle ich dringend den Blog von Andree Toonk.

Auf diese Weise gibt die Chiffre Informationen auf der Grundlage des internen Ausgangszustands und bestimmter Schlüssel preis.

Wie bereits erwähnt, handelt es sich um einen Fehler im Design des Protokolls, der nicht von der Implementierung abhängt. Im Vergleich dazu war Heartbleed ein Fehler in der Implementierung des Protokolls und betraf nur OpenSSL, so dass andere SSL-Implementierungen nicht von demselben Problem betroffen waren. Im Fall von POODLE betrifft der Fehler alle SSL-Implementierungen, die SSL v3 und alle entsprechenden Chiffren unterstützen.

Wie man feststellt, ob ein Server verwundbar ist

If you have OpenSSL installed you can connect to a server and force SSLv3 using the following command: openssl s_client -ssl3 -connect <TESTED SERVER>:<PORT>.

Wenn Sie nicht über OpenSSL verfügen und der Server über das Internet zugänglich ist, können Sie einige Online-Ressourcen verwenden.

Deaktivieren von SSLv3 auf A10 Thunder Application Delivery Controller (ADC)

A10-Benutzer können Zertifikate in der Datenebene deaktivieren, indem sie den Befehl "disable-sslv3" unter der "slb-Vorlage client-ssl cs" ausgeben. Ein ausführlicher Artikel folgt.

In Bezug auf die administrative Webschnittstelle verwenden die A10-Geräte die FIPS-Version der OpenSSL-Bibliothek, die die Verwendung von SSL v3 nicht zulässt, so dass dieser Code nicht einkompiliert ist.

Client-seitige Behebung

Zum jetzigen Zeitpunkt scheint die beste Lösung darin zu bestehen, das Protokoll zu deaktivieren, das vor etwa 15 Jahren durch TLS 1.0 abgelöst wurde, und das trifft in den meisten Fällen zu. Es gibt jedoch eine große Ausnahme. Tech In Asia behauptet, dass es in China etwa 200 Millionen Nutzer von Windows XP und IE6 gibt.

Das Problem dabei ist, dass Windows XP seit dem 8. April 2014 nicht mehr offiziell als Plattform unterstützt wird. Und was noch schlimmer ist: Seit der Einführung von Windows Genuine Advantage in Windows XP SP3 haben viele dieser illegal installierten Systeme diesen nicht angewendet, so dass sie ohne die neuesten Patches für eine bereits ausgelaufene Plattform laufen, einschließlich der fehlenden Möglichkeit, TLS zu verwenden. Microsoft stellt jedoch hier einige Ressourcen zur Verfügung, wie man dies tun kann.

Es gibt eine neue SSL-Option namens TLS_FALLBACK_SCSV, die eine Rückwärtskompatibilität ermöglicht und heute in OpenSSL veröffentlicht wurde. Sie ist jedoch mit einigen Überlegungen verbunden. Sie schützt nur neue Implementierungen vor einem Downgrade auf SSL v3, im Falle von Netzwerkproblemen, aber sie schützt keine Systeme, die das alte Protokoll verwenden und es richtig aushandeln, was ihnen wiederum nur die Möglichkeit lässt, CBC-Modi abzuschalten und RC4 zu verwenden, das, wie oben erklärt, ebenfalls verwundbar ist. Darüber hinaus erfordert der TLS_FALLBACK_SCSV Patch, dass beide Seiten ihn implementieren.

Behebung von Problemen in Browsern

Google Chrome und Mozilla Firefox haben angekündigt(siehe Google, siehe Mozilla), dass sie SSL v3 in naher Zukunft deaktivieren werden.

In der Zwischenzeit können Sie dies tun, indem Sie den hervorragenden Beitrag von Ubuntu lesen.

Zusammenfassend lässt sich sagen, dass Chrome-Nutzer das Kommandozeilen-Flag -ssl-version-min=tls1 verwenden sollten (das übrigens bereits 2012 in den Quellcode aufgenommen wurde) und Firefox-Nutzer die Konfigurationseinstellungen ändern können, indem sie "about:config" aufrufen und security.tls.version.min auf 1 setzen(Details).

Schlussfolgerung (oder eine zufällige Bemerkung des Autors)

Zusammenfassend lässt sich sagen, dass die Schwachstelle real ist, aber nicht so dramatisch wie HeartBleed oder sogar so, wie die Presse es darzustellen versuchte. Sie zeigt jedoch einen Fehler im Protokolldesign, der 15 Jahre nach der Veröffentlichung des Protokollnachfolgers überlebt hat.

Darüber hinaus wird die Ausnutzung der CBC-IV-Verkettung schon seit einiger Zeit diskutiert, und dennoch ist es diesem Fluss gelungen, viele Jahre lang einer genaueren Untersuchung zu entgehen. Ein Blick zurück in die Literatur zeigt, dass die erste Diskussion darüber im Zusammenhang mit SSH im Jahr 1995 von Phillip Rogaway und später im Jahr 2004 von Bodo Moeller und Gregory V. Bard geführt wurde.