Original-URL des Artikels: https://www.golem.de/news/robot-angriff-19-jahre-alter-angriff-auf-tls-funktioniert-immer-noch-1712-131607.html    Veröffentlicht: 12.12.2017 16:15    Kurz-URL: https://glm.io/131607

ROBOT-Angriff

19 Jahre alter Angriff auf TLS funktioniert immer noch

Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, gilt das besonders für populäre Webseiten, darunter Facebook, Paypal und Produkte von mindestens acht verschiedenen Herstellern.

Server sollten längst vor ihm geschützt sein, denn der Bleichenbacher-Angriff wurde bereits 1998 entdeckt. Der Kryptograph Daniel Bleichenbacher erkannte damals, dass die Fehlermeldungen eines SSL-Servers Informationen über entschlüsselte Daten preisgeben. Weil Gegenmaßnahmen häufig nicht richtig umgesetzt werden, ist dieser Klassiker unter den Crypto-Angriffen jedoch auch in der aktuellen TLS-Version häufig noch möglich.

Wie der Autor dieses Artikels zusammen mit anderen herausgefunden hat, waren bis vor Kurzem unzählige Server weiterhin anfällig für diesen uralten Angriff. Besonders stark betroffen waren dabei die populärsten Webseiten. Bei den Top 100 laut der Alexa-Liste waren 27 Server betroffen, darunter die von Facebook und Paypal. "Return of Bleichenbacher's Oracle Threat", kurz ROBOT wurde der neue Angriff genannt.

Eine Signatur von Facebook

Gleich zu Beginn der Untersuchungen fiel dem Autor auf, dass die Server von Facebook - neben facebook.com auch andere wie instagram.com und fbcdn.com - verwundbar waren. Als Beleg für einen erfolgreichen Angriff gelang es, eine Signatur mit dem privaten Schlüssel von Facebooks Zertifikat zu erstellen. Der Angriff kann nämlich nicht nur zur Entschlüsselung, sondern auch zur Erstellung einer Signatur verwendet werden.

Facebook verwendete für seine HTTPS-Server eine gepatchte Version von OpenSSL. Der Fehler lag nicht in OpenSSL, sondern in den Patches, daher dürfte dieses spezielle Problem sonst niemanden betreffen.

Doch auch zahlreiche andere Server waren verwundbar. Der weitaus größte Teil davon wurde von Geräten der Firma F5 betrieben. F5 hatte Mitte November dafür ein Sicherheitsupdate bereitgestellt. Insgesamt sind Produkte von acht verschiedenen Herstellern betroffen. Von einigen davon gibt es bisher noch keine Updates, obwohl sie schon vor Wochen informiert wurden. Einen Überblick über die verwundbaren Produkte und einen Online-Test gibt es auf der ROBOT-Webseite. Ebenso haben diverse Hersteller von Test-Tools Checks für die Lücke integriert, darunter SSLLabs und das Kommandozeilentool testssl.sh.

Cisco-Geräte ohne Support

Besonders hart trifft das Problem Nutzer von ACE-Loadbalancern der Firma Cisco. Diese Geräte erhalten schon seit einigen Jahren keinen Support mehr. Im Einsatz sind sie trotzdem noch. Besonders schwerwiegend: Auf diesen Geräten werden keine Cipher-Suites ohne RSA-Verschlüsselung unterstützt - damit ist nicht mal das Abschalten dieser Cipher eine Option und die Sicherheitslücke ist auch noch besonders einfach auszunutzen.

Vermutlich verwendet Cisco auch selbst die verwundbaren Devices für seine eigene Domain cisco.com - die Sicherheitslücke ist dort vorhanden und das Verhalten ist identisch mit den verwundbaren ACE-Geräten. Fragen dazu hat Cisco nicht beantwortet.

RSA im Standard PKCS #1 v1.5 angreifbar

Dem Angriff von Bleichenbacher liegen zwei Eigenschaften zugrunde: zum einen das sogenannte Padding nach dem Standard PKCS #1 v1.5, mit dem Daten vor einer RSA-Verschlüsselung bearbeitet werden, und zum anderen eine Eigenschaft der RSA-Verschlüsselung, die als Malleability bezeichnet wird.

Den Daten, die mit RSA verschlüsselt werden, werden bei PKCS #1 v1.5 immer zwei Bytes vorangestellt (00 02). Wenn ein Server diese beiden Bytes prüft und feststellt, dass sie nicht korrekt sind, erscheint es naheliegend, die Verbindung sofort mit einer Fehlermeldung abzubrechen. Doch genau das führt zum Problem: Tut ein Server das, dann verrät er dem Angreifer etwas darüber, in welchem Intervall die entschlüsselten Daten liegen.

Die sogenannte Malleability von RSA ermöglicht es einem Angreifer, RSA-verschlüsselte Daten gezielt so zu manipulieren, dass das Ergebnis der Entschlüsselung ein Vielfaches des ursprünglichen Ergebnisses ist. Hat ein Angreifer etwa einen verschlüsselten Datenblock des Inhaltes M, dann kann er auch die Verschlüsselung von zweimal M oder dreimal M etc. erzeugen.

Beide Eigenschaften zusammen ermöglichten es Bleichenbacher, einen Algorithmus zu entwickeln, mit dem durch viele Anfragen an den Server RSA-Daten entschlüsselt werden können.

Gegenmaßnahmen in TLS 1.2 extrem komplex und fehleranfällig

Der aktuelle TLS-Standard 1.2 verwendet weiterhin PKCS #1 v1.5. Um Bleichenbacher-Angriffe zu verhindern, schlägt TLS folgendes vor: Wenn ein Server einen nicht korrekt formatierten Datenblock entschlüsselt, soll der Server statt der entschlüsselten Daten Zufallsdaten verwenden und damit den Handshake weiter durchführen. Um dabei Timing-Angriffe zu verhindern, müssen diese Zufallsdaten allerdings schon vor der Entschlüsselung erzeugt werden.

Da der Server die Kommunikation nun mit unsinnigen Daten durchführt, schlägt die TLS-Verbindung bei der Prüfung der sogenannten Finished-Nachricht fehl. Wenn der Server diese Gegenmaßnahmen korrekt durchführt, kann ein Angreifer nicht unterscheiden, welche Art von Fehler auftrat, und lernt somit nichts über die entschlüsselten Daten.

Das gesamte Verfahren ist extrem komplex. Es füllt im TLS-Standard mehr als zwei Seiten. Dort werden mehrere verschiedene mögliche Algorithmen vorgeschlagen, die in einen Server implementiert werden können. Es ist daher eigentlich wenig überraschend, dass diese Gegenmaßnahmen in Servern häufig nicht korrekt implementiert werden - vor allem, da dies im Normalbetrieb überhaupt nicht auffällt und derartige Angriffe kaum getestet werden.

Forward Secrecy hilft - ein bisschen

Wie schwerwiegend die Sicherheitslücke ist, hängt von den genauen Umständen ab. In TLS kommt RSA sowohl für Signaturen als auch zur Verschlüsselung zum Einsatz - es hängt von der gewählten Ciphersuite ab.

Bei Servern, die nur die RSA-Verschlüsselung unterstützen, ist der Angriff absolut fatal. Ein Angreifer kann Daten mitlesen und anschließend in Ruhe entschlüsseln. Bei Servern, die neben der RSA-Verschlüsselung auch Verschlüsselungsmethoden mit RSA-Signaturen und Forward Secrecy unterstützen, führt das üblicherweise dazu, dass diese genutzt werden. Angreifen lässt sich das nur, wenn es gelingt, den Angriff während des Handshakes durchzuführen. Der dauert maximal einige Sekunden. Zumindest bei Zielen wie Facebook, die viele schnelle Server betreiben, dürfte das aber durchaus realistisch sein.

Nur kleine Änderungen im Vergleich zum Angriff von 1998

Der ROBOT-Angriff unterscheidet sich in zwei Punkten von Bleichenbachers originalem Angriff von 1998: Zum einen können neben Fehlermeldungen auch andere Signale genutzt werden, um einen verwundbaren Server zu erkennen. Das können TCP-Verbindungsabbrüche, Timeouts oder auch Protokollfehler sein - einige Server schickten etwa doppelte TLS-Fehler.

Zum anderen sind einige Server nur dann verwundbar, wenn man die gewöhnliche Abfolge der Nachrichten im TLS-Handshake ändert. Üblicherweise schickt ein Client die Protokollnachrichten Client Key Exchange, CCS und Finished direkt hintereinander. Es stellte sich aber heraus, dass einige Server eine Verwundbarkeit zeigten, wenn man nur die Client-Key-Exchange-Nachricht schickt.



Nur Abschalten von RSA-Verschlüsselung hilft wirklich

Die Entwickler des TLS-Protokolls hatten sich nach Bleichenbachers Angriff entschieden, Gegenmaßnahmen zu implementieren, statt die verwundbaren Verschlüsselungsmodi auszumisten. Die Gegenmaßnahmen wurden dabei mit jeder TLS-Version komplizierter. Erst TLS 1.3 behebt diesen Fehler und lässt diese problematischen Verschlüsselungsmodi nicht mehr zu.

Doch hier kommt ein weiteres Problem zum Tragen: Selbst wenn TLS 1.3 zum Einsatz kommt - solange die RSA-Verschlüsselung in alten Protokollen unterstützt wird sind Cross-Protokoll-Angriffe denkbar.

RSA-Verschlüsselung sollte abgeschaltet werden

Selbst Server, die in unseren Tests nicht als verwundbar auftauchten, sind möglicherweise unsicher. Denn neben den Angriffen über verschiedene Fehler und Verhaltensweisen des Servers können auch Timing-Angriffe genutzt werden, um einen Bleichenbacher-Angriff durchzuführen. Dazu gab es beispielsweise 2014 eine Forschungsarbeit. Wegen bestimmter Eigenschaften der üblichen Bignum-Bibliotheken kann man davon ausgehen, dass Timing-Probleme weiterhin vorhanden sind, auch in populären Implementierungen wie OpenSSL.

Das sicherste wäre, die RSA-Verschlüsselung ganz abzuschalten und nur noch Verschlüsselungsmethoden mit Forward Secrecy und einem Diffie-Hellman-Schlüsselaustausch - heutzutage üblicherweise mit elliptischen Kurven - zu verwenden. Alle modernen Clients unterstützen das und auf Webservern gibt es nur noch wenig Traffic, der die alten RSA-Verschlüsselungsmodi nutzt.

Es ist an der Zeit, den uralten Verschlüsselungsstandard PKCS #1 v1.5 auszumisten - und auf sicherere Methoden zu setzen.  (hab)


Verwandte Artikel:
ROBOT-Angriff: Arbeitsagentur nutzt uralte Cisco-Geräte   
(09.03.2018, https://glm.io/133258 )
Drown-Angrifff: Ein Drittel der HTTPS-Server angreifbar   
(01.03.2016, https://glm.io/119457 )
Verschlüsselung: Github testet Abschaltung alter Krypto   
(09.02.2018, https://glm.io/132684 )
Trustico/Digicert: Chaos um 23.000 Zertifikate und private Schlüssel   
(01.03.2018, https://glm.io/133077 )
HSTS: Facebook verschlüsselt alle ausgehenden Links, wenn möglich   
(06.03.2018, https://glm.io/133157 )

© 1997–2020 Golem.de, https://www.golem.de/