Original-URL des Artikels: https://www.golem.de/news/messenger-sicherheitsluecken-in-signal-1609-123278.html    Veröffentlicht: 15.09.2016 18:14    Kurz-URL: https://glm.io/123278

Messenger

Sicherheitslücken in Signal entdeckt

Zwei Bugs im Signal-Code erlauben das Manipulieren von Attachments und einen Crash der Signal-Applikation. Updates sind im Play Store noch nicht verfügbar.

Die Signal-Messaging-App gilt als die vermutlich sicherste Messenger-App, die zurzeit zu bekommen ist. Die Verschlüsselung von Signal hat einige revolutionäre Konzepte eingeführt und wurde inzwischen von Internetgrößen wie Whatsapp, Facebook und Google für ihre Messenger übernommen. Die Erwartungen an die Sicherheit von Signal sind daher entsprechend hoch. Die Sicherheitsforscher Markus Vervier und Jean-Philippe Aumasson haben einige Sicherheitslücken im Android-Code von Signal gefunden.

Integer Overflow bei der MAC-Prüfung

Attachments von Signal werden über einen Amazon-S3-Server mittels HTTPS verteilt. Anschließend prüft der Signal-Code einen MAC-Wert, der mit HMAC-Algorithmus erzeugt wurde. Bei der Größenberechnung findet sich ein Fehler, der zu einem Integer Overflow führt. Die Länge der eingehenden Datei wird in einer Integer-Variable abgespeichert. Allerdings können die Dateien größer sein als der Wert, der maximal in einer Integer-Variable abgelegt werden kann. Dadurch kann man einen Overflow erzeugen.

Da der Code in Java geschrieben ist, tritt hierbei keine Memory-Corruption-Lücke auf. Allerdings kann der Overflow genutzt werden, um die HMAC-Prüfung auszutricksen. Ein Angreifer kann ein Attachment ablegen, das zu Beginn einem gültigen Attachment entspricht, das jedoch vier Gigabyte an weiteren Daten enthält. Durch den Integer Overflow wird anschließend nur der gültige Teil geprüft, die gesamte Datei wird jedoch an die Entschlüsselungsfunktion weitergereicht. Die vier Gigabyte müssen dabei nicht vollständig übers Netz übertragen werden, da hierfür die Gzip-Kompression von HTTP genutzt werden kann.

Hängt man beliebige Daten an, so scheitert die Attachmentverarbeitung bei der Prüfung des Paddings. Möglicherweise ist hier ein sogenannter Padding-Oracle-Angriff möglich, Details darüber wollen die Entdecker der Lücke aber erst in einem späteren Blogpost veröffentlichen. Was auf jeden Fall möglich ist: Ein Angreifer kann an ein bestehendes Attachment Daten anhängen, die teilweise von ihm kontrolliert werden.

Möglich ist ein solcher Angriff nur, wenn der Angreifer entweder den Amazon-Server kompromittieren kann oder einen eigenen Server mit einem falsch ausgestellten Zertifikat aufstellt - dafür müsste er eine Zertifizierungsstelle kompromittieren. Beides ist nicht sehr wahrscheinlich, aber das Versprechen von Signal, Ende-zu-Ende-Sicherheit zu gewährleisten, wird hier kompromittiert.

Der zweite Bug betrifft die Übertragung von RTP-Paketen, die für die Audio- und Videofunktionalität genutzt werden. Dieser Code ist in C++ geschrieben. Durch bestimmte fehlerhafte Eingaben kann man hier einen Integer Underflow erzeugen, eine Variable für die Größe des Payloads ist anschließend negativ. Das führt später im Code dazu, dass eine große Menge an Daten aus einem ungültigen Speicherbereich gelesen wird, was zu einem Crash der Signal-App führt. Die Entdecker der Lücke gehen davon aus, dass dieses Problem nicht weiter exploitbar ist und nur zu einem Crash führt, allerdings könnte es durchaus sein, dass es weitere Wege gibt, diesen Bug auszunutzen.

Bisher noch alte Version im Play Store

Beide Bugs sehen zumindest bislang nicht extrem gravierend aus, doch sie zeigen, dass auch eine vielfach gelobte App wie Signal nicht perfekt ist. Aktuell wird über den Play Store noch die Version 3.18.3 von Signal verteilt, in der beide Bugs noch nicht gefixt sind. Im Git-Repository wurde bereits die Version 3.19.0 vorbereitet, die damit wohl in kürze erscheint.

Angesichts dieser Bugs stellt sich auch die Frage, wie Signal generell mit Sicherheitslücken umgeht. Auf der Signal-Webseite gibt es bislang keine Security-Advisories und es ist auch keine Möglichkeit dokumentiert, wie Sicherheitslücken gemeldet werden sollen. Für eine App, die so viel Wert auf Sicherheit legt, ist das sicher nicht optimal.

Nachtrag vom 21. September 2016, 13:02 Uhr

In einem weiteren Blogpost haben die Entdecker der Lücke inzwischen die Auswirkungen genauer analysiert. Auch Signal-Entwickler Moxie Marlinspike hat sich mittlerweile geäußert und die Lücke erläutert. Die inzwischen veröffentlichte Signal-Version 3.19.0 behebt das Problem.  (hab)


Verwandte Artikel:
Signal Foundation: Whatsapp-Gründer investiert 50 Millionen US-Dollar in Signal   
(21.02.2018, https://glm.io/132911 )
ROBOT-Angriff: Arbeitsagentur nutzt uralte Cisco-Geräte   
(09.03.2018, https://glm.io/133258 )
Jabber-Verschlüsselung: Sicherheitslücke in OTR-Bibliothek erlaubt Code-Ausführung   
(09.03.2016, https://glm.io/119651 )
LLVM 6.0: Clang bekommt Maßnahme gegen Spectre-Angriff   
(09.03.2018, https://glm.io/133241 )
Librem 5: Purism-Smartphone bekommt Smartcard für Verschlüsselung   
(09.03.2018, https://glm.io/133248 )

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