zurück zur Übersicht

Risiko Instant Messaging: Sicherheitslücke in libotr

Instant Messaging ist praktisch – aber oft unsicher implementiertInstant Messaging und Chats sind heute gängige Mittel der Kommunikation in Unternehmen – ob interne oder externe Kommunikation. Zu kurz für E-Mail aber mit der Möglichkeit kleinere Dateien mitzuschicken, automatisch als Log verfügbar zum Nachschlagen aber ohne ein Telefonprotokoll schreiben zu müssen – Instant Messaging ist eine praktische Sache.

Sicherheit & Instant Messaging

Vertraulichkeit mit Perfect Forward Secrecy sowie Authentizität – diese Informationssicherheits-Schutzziele versucht das Off-the-Record-Protokoll (OTR) für Textsofortmitteilungen (Instant Messaging) zu erreichen. Zudem wird weiterhin die Abstreitbarkeit, wie sie bei einfachen Textmitteilungen gegeben ist, gewährleistet. Dies unterscheidet OTR beispielsweise von digitalen Nachrichtensignaturen per Pretty Good Privacy (PGP). OTR setzt als zusätzliche Ende-zu-Ende-Schicht auf bekannten Chatprotokollen auf. Mit jenen Charakteristika eignet sich OTR besonders dort, wo geheime Kommunikation zwischen zwei Partnern stattfinden soll. Beispielsweise die populären Desktop-Chatprogramme Pidgin oder Tor Messenger unterstützen OTR. In den durch Edward Snowden veröffentlichten Dokumenten konstatiert die NSA „größere Probleme“ und Nichtentschlüsselbarkeit von OTR.

libotr: Gutes Konzept schlecht umgesetzt

Gerade bei besonders schützenswerten Informationen wären Sicherheitslücken in den verwendeten Systemen sehr schmerzhaft.

Genau eine solche wurde aber kürzlich in libotr gefunden. libotr ist die Referenzimplementierung des OTR-Protokolls in der Programmiersprache C. In den Versionen vor 4.1.1 (nur 64 Bit) kann ein Ganzzahlüberlauf der Integer-Variable auftreten, die die Größe der aktuell verarbeiteten Nachricht enthält. Die Verwendung dieses Variablenwertes in der Größenberechnung für eine Speicherreservierung führt dazu, dass für sehr große Nachrichten ein viel zu kleiner Speicherbereich reserviert wird. Die Nachricht wird dennoch von libotr in den Speicher geschrieben – über den reservierten Bereich hinaus in andere Bereiche (Heap Buffer Overflow). Dieser Programmierfehler kann durch einen Angreifer ausgenutzt werden, um beliebigen Code auf dem Zielcomputer auszuführen (Remote Code Execution).

Neue Schwachstellen – altbekannte Ursachen

Bei speicherunsicheren Programmiersprachen wie C oder C++ kommt es immer wieder zu Programmierfehlern in der Speicherverwaltung der Anwendung (beispielsweise Buffer Overflows oder Dangling Pointers), da diese Programmiersprachen selbst nicht sicher vor solchen Fehlern schützen. Auswirkungen können Remote Code Execution, Privilege Escalation oder Offenlegung sensibler Informationen sein.

Einige mögliche Lösungsansätze:

  • Fehlervermeidung (ex ante) in allen Schritten des Software Development Lifecycle
  • Fehlerbehebung (ex post) per Statischer Codeanalyse
  • Speichersichere Programmiersprachen – Beispielsweise der Tor Messenger verwendet für mehr Sicherheit bei der Implementierung der zugrundeliegenden Chatprotokolle nicht die populäre, aber in der Vergangenheit oft Sicherheitslücken aufweisende, in C geschriebene libpurple-Bibliothek, sondern eine JavaScript-Implementierung. Allerdings wird libotr zur Umsetzung der OTR-Verschlüsselung verwendet, wodurch Nutzer des Tor Messengers dennoch durch die kürzlich entdeckte Lücke angreifbar waren.
  • Sandboxing – Abschottung führt zur Begrenzung des möglichen Schadens. Beispiele dafür sind Medien-Plugins (Mozilla Content Decryption Module, Adobe Flash) in modernen Browsern.

Damit Sie nicht an neuralgischen Punkten von solchen Problemen überrascht werden, beraten wir Sie gerne über mögliche Lösungsansätze.


Quellen:

Bild: ©iT-CUBE SYSTEMS AG 2016

Schreibe einen Kommentar