Zum hauptinhalt springen

Gespräche aus dem brennenden Clubhouse tragen

Dies ist ein Archiv eines Twitter-Threads, zur besseren Lesbarkeit auf einer Seite.

Heute sind wir ganz am Zeitgeist und schauen uns das Sprachi-Netzwerk Clubhouse an. Es gab bereits einige Kritik am Datenschutz (https://www.tagesschau.de/wirtschaft/clubhouse-audio-app-deutschland-datenschutz-social-media-101.html) und Exklusivität.


Der Großteil des Kontakt zum Server wird über eine REST-Api abgewickelt. Hier ist Clubhouse widerspenstiger als viele andere Apps und implementiert Certificate Pinning. Dann holen wir mal das gejailbreakte Telefon heraus.


Sobald man einen Raum startet verbindet sich die Clubhouse-App mit zwei weiteren Diensten: Pubnub und Agora. Pubnub wird für die Echtzeitkommunkation genutzt, Agora für den Audiochat.

Screenshot eines Mitschnitts des Datenverkehrs von Clubhouse

Screenshot eines Mitschnitts des Datenverkehrs von Clubhouse


Agora hat ein öffentliches SDK (leider nicht open source), dann laden wir das doch mal herunter.

Downloadseite des Agora SDKs

Downloadseite des Agora SDKs


Bei Agora gibt es 2 Arten einen Videochatraum zu betreten. Entweder nur mit dem Namen, für “low-security”-Anwendungen wie Staubsauger (https://itcareersholland.nl/call-an-exorcist-my-robots-possessed/), oder für “high-security”-Anwendungen wie öffentliche Gespräche mit Namen und einem Token.


Clubhouse nutzt Tokens. Dieses Token wird serverseitig generiert, bei Clubhouse bekommen wir dieses wenn wir den “join_channel”- oder “create_channel”-Endpoint aufrufen.

Antwort eines create_channel-Aufrufs

Antwort eines create_channel-Aufrufs


Oh, wenn wir join_channel aufrufen, taucht die*der Nutzer*in bereits im Raum auf und wir als gemutet angezeigt. Dabei haben wir noch garnicht probiert, den Agora-Audio-Kanal zu öffnen. Naja dann probieren wir das doch gleich mal.


Super, 10 Zeilen code und der Ton läuft. Wir können die anderen hören. Mal schauen, was das SDK so für Methoden bietet…


Wie praktisch, es gibt “startAudioRecording” um eine Aufnahme zu starten. Wir können uns sogar aussuchen, in welcher Qualität die Aufnahme passieren soll.

SDK-Dokumentation zu startAudioRecording

SDK-Dokumentation zu startAudioRecording


Hinweis: Wir finden es nicht okay, einfach so nicht-öffentliche Gespräche aufzuzeichen. Wenn Politiker*innen aber als Mandatsträger*innen (semi-)öffentlich sprechen, *kann* es für uns ein berechtigtes Interesse geben das nachzuvollziehen.


Okay, dann verlassen wir den Raum mal wieder. Die App ruft dazu “leave_channel” auf. Wenn wir das tun, verschwinden wir bei den anderen im Raum auch sofort aus der Raumübersicht in der App. Nur ein Problem:

Erfolgreicher Aufruf von leave_channel

Erfolgreicher Aufruf von leave_channel


Wir sind in Agora immernoch im Raum und hören die anderen weiterhin. Auch eine neue Aufzeichnung können wir ohne Probleme starten. Alles ohne, dass uns die Anderen sehen.


Wir können uns sogar erneut verbinden. Auf die Schnelle konnten wir in der Dokumentation von Agora keine Möglichkeit finden, ein Raum-Token zu wiederrufen.


Dafür haben wir einen spannende Methoden gefunden: Man kann sich den Ton nach Nutzer*in getrennt geben lassen. So können gezielt einzelne Personen mitgeschnitten werden.

Dokumentation einer Methode um Audiodaten einzelner Personen zu bekommen

Dokumentation einer Methode um Audiodaten einzelner Personen zu bekommen


Praktischerweise werden in Agora die gleichen Nutzer*innen-Ids verwendet wie in Clubhouse, sodass wir das ganze sogar automatisch Nutzer*innen zuordnen können.


Fazit: Wir sehen also, dass es möglich ist fast unerkannt Gespräche auf #Clubhouse aufzuzeichnen.

Dies zu finden hat nur wenige Stunden gedauert, wer weiß, was da noch im Argen liegt


Nachtrag: Scheinbar konnte man im November auch mal die Profile aller Nutzer*innen abfragen.