Sicherheitslücke im HTML-Export von Telegram Desktop ermöglicht Diebstahl von Chats

Sicherheitslücke im HTML-Export von Telegram Desktop ermöglicht Diebstahl von Chats

Forscher haben eine Sicherheitslücke in Telegram Desktop entdeckt, die es verstecktem JavaScript ermöglicht, Chat-Nachrichten aus älteren HTML-Exportdateien zu stehlen. Aktualisieren Sie die App und exportieren Sie alte Chats erneut.

Eine Sicherheitslücke in Telegram Desktop ermöglichte es, dass eine Bot-Nachricht JavaScript in Chat-Exporte einschleuste, die als HTML-Dateien gespeichert wurden, berichteten Forscher von ExPatch am 12. September. Das Skript würde ausgeführt, wenn jemand die exportierte Datei in einem Webbrowser öffnete, und es könnte den Inhalt dieser Datei an einen vom Angreifer kontrollierten Server senden oder die Anzeige der Seite verändern. Die Lücke betraf Telegram Desktop, die Desktop-App für Windows, macOS und Linux, mit der ein einzelner Chat oder alle Chats als Seiten exportiert werden können, die in einem Browser geöffnet werden.

Telegram-Bots können Reihen von anklickbaren Schaltflächen unter ihren Nachrichten anfügen, sogenannte Inline-Tastaturen, und der Bot wählt den Text, der auf jeder Schaltfläche angezeigt wird. Bis zur Behebung schrieb die Exportfunktion von Telegram Desktop diesen Schaltflächentext direkt in die HTML-Datei, ohne ihn zu maskieren. Maskieren ist ein Standardsicherheitsschritt, der Zeichen wie das Kleiner-als-Zeichen umwandelt, sodass ein Browser sie als Text anzeigt, anstatt sie als Code zu behandeln. Der Exportcode maskierte zwar Nachrichtentext, Absendernamen und andere Felder, aber nicht den Schaltflächentext. Die Forscher Denis Rostilov und Aleksander Rostilov fanden heraus, dass ein Bot ein Script-Tag in den Text einer Schaltfläche einfügen konnte, aufgefüllt mit unsichtbaren Zeichen, sodass die Schaltfläche in der von ihnen getesteten Version von Telegram Desktop leer aussah. Der Bot musste nicht im Zielchat sein: Wenn eine Bot-Nachricht mit nur Weblink-Schaltflächen in eine Gruppe weitergeleitet wird, behalten die Schaltflächen ihren Inhalt, sodass jedes Mitglied das Skript in die Chat-Historie einschleusen kann. Es bleibt dann dort, bis es gelöscht wird, und kann Monate oder Jahre später exportiert werden.

Wenn eine Exportdatei mit einer solchen Nachricht geöffnet wird, läuft das Skript ohne weiteren Klick. Es kann jede Nachricht in dieser Datei lesen, einschließlich Absendernamen und Zeitstempel, den Namen, Typ und die Mitgliederzahl des Chats sowie den lokalen Dateipfad auf dem Gerät. Es kann all das an den Server des Angreifers senden. Der Exportcode teilt lange Exporte in separate Dateien mit jeweils 1.000 Nachrichten auf, sodass eine Datei höchstens ihren eigenen Inhalt preisgibt, nicht den gesamten Chat oder das Telegram-Konto. Das Skript kann auch die Seite umschreiben: In der Demonstration der Forscher ersetzte es den gesamten Export durch ein gefälschtes Telegram-„Verifizierungs“-Formular. Dieselbe Kontrolle könnte Daten, Absender oder Nachrichtentext in einer Datei ändern, die als Aufzeichnung verwendet wird. Es ändert nicht Telegrams eigene Kopie des Chats oder die auf der Festplatte gespeicherte Exportdatei. Damit das Skript ausgeführt wird, müssen drei Bedingungen erfüllt sein: Der HTML-Export wurde mit einer Telegram-Desktop-Version vor der Behebung erstellt, die Nachricht mit dem Skript befindet sich im exportierten Chat, und die Datei wird in einem Browser mit aktiviertem JavaScript geöffnet.

Telegram lieferte im Juli eine Behebung. Der Entwickler John Preston schrieb den Patch, Commit 8457d13a, am 30. Juni, und er fügte die fehlende Maskierung hinzu. Die Behebung erreichte die Beta 6.9.4 am 3. Juli und die stabile Version 7.0.1 am 14. Juli auf GitHub. Die betroffenen Versionen reichen von Telegram Desktop 4.15.1, veröffentlicht im März 2024, bis 6.9.3. Die Versionshinweise für 6.9.4 und 7.0.1 erwähnen die Behebung nicht, das Changelog der App erwähnt sie nicht, und das Telegram-Desktop-Repository listet keine Sicherheitshinweise auf. Es gibt auch keine CVE-Kennung für die Lücke. Die Forscher bewerteten sie mit 8,2 von 10 auf dem CVSS-3.1-Bewertungssystem. Sie meldeten die Lücke am 3. Juni an Telegram, zwei Tage nachdem sie sie entdeckt hatten, und gaben an, nur mit ihren eigenen Konten und Testgruppen getestet zu haben. Ihr Bericht behauptet nicht, dass jemand sie gegen echte Nutzer eingesetzt hat. Telegram bestätigte die Lücke am 1. Juli und bot ein Bug-Bounty von 500 US-Dollar an, das die Forscher ablehnten und baten, es einer wohltätigen Organisation zu geben. Sie baten um ein koordiniertes Veröffentlichungsdatum und boten an, bis zum Versand des Patches zu schweigen. In einer E-Mail vom 1. Juli, die die Forscher als Screenshot veröffentlichten, schrieb der Telegram-Support, dass eine öffentliche Offenlegung selbst bereits behobener Probleme mehr Telegram-Nutzer gefährden könnte, was die Forscher als Weigerung interpretierten, eine Veröffentlichung nach einer Behebung zu erlauben. Sie veröffentlichten am 12. September, nachdem die Behebung ausgeliefert worden war.

Benutzer sollten Telegram Desktop auf Version 7.0.1 oder höher aktualisieren, oder auf 6.9.4 oder höher im Beta-Kanal. Nach dem Update sollten sie alle Chats erneut exportieren, die vor der Behebung als HTML exportiert wurden, oder die alten Dateien nur mit deaktiviertem JavaScript öffnen. Jeder HTML-Export, der vor der Behebung erstellt wurde, sollte als nicht vertrauenswürdig behandelt werden, insbesondere einer aus einer großen Gruppe, in der die Herkunft jeder Nachricht schwer zu überprüfen ist. Bis die App aktualisiert ist, gibt es keinen Grund, neue HTML-Exporte zu erstellen, da nur Exporte, die mit dem älteren Code erstellt wurden, die Lücke aufweisen. Stand 14. September hatte Telegram keine Anleitung für Benutzer veröffentlicht, die ältere Exporte besitzen. Für Website-Betreiber und Unternehmen, die exportierte Chat-Archive erhalten oder weitergeben könnten, ist eine sicherheitsorientierte Überprüfung jeder HTML-Datei, bevor sie gehostet oder verteilt wird, ein praktischer Schritt; AEU-I bietet sicherheitsorientierte IT und Beratung, die bei der Bewertung solcher Dateien helfen kann.

So schützen Sie sich

  1. Aktualisieren Sie Telegram Desktop sofort auf Version 7.0.1 oder höher.
  2. Wenn Sie vor dem Update Chats als HTML exportiert haben, exportieren Sie sie mit der aktualisierten App erneut.
  3. Öffnen Sie alte HTML-Chat-Exportdateien nicht, solange JavaScript (die Funktion, die Website-Code ausführt) aktiviert ist; deaktivieren Sie es zuerst in Ihren Browsereinstellungen.
  4. Behandeln Sie jeden HTML-Chat-Export, der vor Juli 2026 erstellt wurde, als mögliches Risiko, insbesondere aus großen Gruppen, und prüfen Sie, wer jede Nachricht gesendet hat.
  5. Vermeiden Sie neue HTML-Exporte, bis Sie die App aktualisiert haben, da nur ältere Versionen die unsicheren Dateien erzeugen.

Begriffe Erklärt

  • JavaScript Eine Programmiersprache, die in Webbrowsern ausgeführt wird und lesen und ändern kann, was eine Webseite anzeigt.
  • HTML Die Sprache, mit der Webseiten erstellt werden, die ein Browser liest, um Text, Schaltflächen und Links anzuzeigen.
  • Inline keyboard Eine Reihe anklickbarer Schaltflächen, die ein Bot unter seiner Nachricht in Telegram anfügen kann.
  • Escaping Das Ändern von Sonderzeichen wie <, damit ein Browser sie als normalen Text anzeigt und nicht als Code ausführt.
  • CVSS Ein Bewertungssystem, das eine Zahl von 0 bis 10 vergibt, um zu zeigen, wie schwerwiegend ein Softwarefehler ist.
  • Bot Ein automatisiertes Programm in Telegram, das Nachrichten senden und Schaltflächen anfügen kann.

Verwandte AEU-Dienste

  • AEU DNS Verschlüsselter DNS-Resolver