Analyse

Weit mehr als nur das Clipboard: Diese Daten sammelt Tiktok

(Foto: Shutterstock)

Ein App-Researcher hat die beliebte Social-Media-App Tiktok „reverse engineered“ und schreibt auf Reddit: Sie ist ein Datensammel-Alptraum. Untersuchungen einer Security-Research-Agentur bestätigen seine Aussagen zum Teil.

Tiktok, die vor allem bei der Generation Z beliebte Videosharing-App aus China, gilt als die am schnellsten wachsende Social-Media-Plattform der Welt. Gleichzeitig macht die Plattform immer wieder durch Sicherheitslücken von sich reden: Im Januar wurde nach einer umfassenden Analyse durch die israelische Security-Research-Agentur Checkpoint unter anderem bekannt, dass die App auf HTTP statt HTTPS setzte, um sich mit der Tiktok-CDN zu verbinden.

Die Verwendung von HTTP anstelle von HTTPS hat wohl geringe Performanzvorteile. Der Nachteil: Die unsichere Netwerkverbindung machte es potenziellen Angreifern leicht, über eine sogenannte „Man in the Middle“-Attacke Nutzerdaten wie Klarnamen, Geburtsdaten und E-Mail-Adressen sowie sekundäre E-Mail-Adressen zum Zurücksetzen von Passwörtern auszulesen. Erneut ins Gespräch kam die mindestens bis zu Version 15.5.6 (iOS) respektive Version 15.7.4 (Android) offenbar weiterhin bestehende Lücke im April – diesmal vor allem im Hinblick auf Desinformationskampagnen. Die Security Researcher Mysk und Bakry zeigen in einem Blogpost, wie sich Hacker die unsichere Verbindung zu diesem Zweck zunutze machen konnten.

Die Clipboard-Geschichte

Damit nicht genug: Im März hatten die Security-Experten herausgefunden, dass eine Reihe von Android- und iOS-Apps – inklusive Tiktok – mitlasen, was Nutzer in die Zwischenablage kopierten: Selfies, Passwörter, Kontodaten, Bitcoin-Adressen, Nachrichten, URL – einfach alles. Das versteckte Auslesen der Zwischenlage betraf nicht nur lokale Daten auf dem jeweiligen Gerät, es war bei Verwendung derselben Apple-ID über das Universal Clipboard sogar geräteübergreifend möglich.

Für manche Apps gebe es gute Gründe für das Auslesen von Inhalten aus der Zwischenablage, für Tiktok gelte das aber nicht: „Eine App, die über kein Textfeld verfügt, hat keinen Grund, Text aus der Zwischenablage auszulesen“, wird einer der Forscher zitiert. Tiktok und weitere Apps gelobten, das Feature umgehend zu entfernen.

Ende Juni 2020 rückte der Befund erneut in den Fokus der Aufmerksamkeit: Apple hatte die Developer-Beta von iOS 14 veröffentlicht – die neue Version des iPhone-Betriebssystems kennzeichnet eben dieses Verhalten über ein Popup-Banner. Anstoß für die Implementierung des Features gaben offenbar die Forschungsergebnisse Mysks und Bakrys. Ein am 23. Juni veröffentlichtes Video, das dokumentiert, wie iOS 14 das Auslesen des Clipboards verschiedener Apps kenntlich macht, zeigt, wie viele bekannte Apps Inhalte der Zwischenablage auslesen. Tiktok befand sich zum Zeitpunkt der Aufnahme immer noch unter den betroffenen Apps.

Im Zuge des Skandals um das Clipboard rückte auch ein mittlerweile über zwei Monate alter, viral gegangener Reddit-Thread in den Fokus der Aufmerksamkeit. Ein App-Researcher hat die App „reverse engineered“. Was er herausgefunden haben will, übersteigt die Clipboard-Geschichte um ein Vielfaches.

Gravierende Sicherheitslücken und dubiose Tracking-Praktiken

Das Reverse-Engineering habe gezeigt, dass Tiktok als soziales Netzwerk getarnte Malware sei, schreibt der Researcher, der auf Reddit unter dem Nutzernamen Bangorlol in Erscheinung tritt. Existiere eine API, um persönliche Daten, Kontakte, Nutzerverhalten oder Informationen über das verwendete Gerät zu sammeln, könne man sicher sein, dass Tiktok sie nutze.

Tiktok sammle Informationen über die verwendete Hardware, verbundene Netzwerke sowie sonstige verwendete Apps und tracke den Standort der User extensiv. Zur Transkodierung von Medienformaten würde mit Installation der App außerdem ein lokaler Proxyserver auf betreffenden Geräten installiert – problematisch sei dabei vor allem, dass er über keinerlei Authentifizierungsmechanismus verfüge und damit einen möglichen Missbrauch nur allzu einfach mache. Beim Versuch des Reverse-Engineerings will Bangorlol zudem immer wieder auf Mechanismen gestoßen sein, die ihn aktiv daran hinderten, das Verhalten einzelner Features nachzuvollziehen.

Bangorlol gibt an, App-Researcher mit einem weitreichenden Verständnis für die Materie zu sein – sich mit der Funktionsweise solcher Apps auseinanderzusetzen, sei sein Job. Einen entsprechenden Nachweis über seine Aussagen könne er allerdings nicht liefern, weil sich der Großteil des Codes und sonstige mit dem Reverse-Engineering zusammenhängende Informationen auf einem Macbook befänden, auf das er mittlerweile nur noch eingeschränkt Zugriff habe, schreibt er in einem kürzlichen Edit seines Threads.

Das tat der Verbreitung von Bangorlols Warnungen vor der Nutzung Tiktoks keinen Abbruch – zahlreiche Medien berichteten. Auch Anonymous teilte einen Tweet mit Screenshots aus dem Reddit-Thread.

Was ist dran?

Neben der im Januar veröffentlichten Untersuchung der App durch Checkpoint und derer Zimperiums im Oktober 2019 nahm mit Penetrum zuletzt eine weitere Security-Forschungseinrichtung den Quellcode der App unter die Lupe.

Standort-Tracking

In deren Paper heißt es: „Es ist bekannt, dass mobile Anwendungen Daten sammeln. Diese werden zur Gewinnmaximierung verwendet und dafür, personalisierte Werbung ausspielen zu können. […] Aber ist es wirklich notwendig, dass eine mobile Anwendung die IMEI-Nummer eines Smartphones, die Bildschirmauflösung oder den jeweiligen SIM-Provider ausliest? Ist es normal, dass es eine Section gibt, die sehr genaues Tracking ermöglicht und GPS-Daten sammelt?“

Die Analysten beziehen sich bei ihrer Untersuchung auf den Code von Version 15.2.3 der Android-App; mittlerweile ist Tiktok für Android in Version 16.6.4 verfügbar.


/* access modifiers changed from: package-private */
/* renamed from: ˋ reason: contains not printable characters */
public final void m72(Context context, Intent intent) {
String stringExtra = intent.getStringExtra("shouldMonitor");
if (stringExtra != null) {
AFLogger.afInfoLog("Turning on monitoring.");
AppsFlyerProperties.getInstance().set("shouldMonitor", stringExtra.equals("true"));
m61(context, (String) null, "START_TRACKING", context.getPackageName());
return;
}
AFLogger.afInfoLog("****** onReceive called *******");
AppsFlyerProperties.getInstance().setOnReceiveCalled();
String stringExtra2 = intent.getStringExtra("referrer");
AFLogger.afInfoLog("Play store referrer: ".concat(String.valueOf(stringExtra2)));
if (stringExtra2 != null) {
if ("AppsFlyer_Test".equals(intent.getStringExtra("TestIntegrationMode"))) {
SharedPreferences.Editor edit = com.ss.android.ugc.aweme.keva.d.a(context, "appsflyer-data", 0).edit();
edit.clear();
if (Build.VERSION.SDK_INT >= 9) {
edit.apply();
} else {
edit.commit();
}
AppsFlyerProperties.getInstance().f80 = false;
AFLogger.afInfoLog("Test mode started..");
this.f35 = System.currentTimeMillis();
}
SharedPreferences.Editor edit2 = com.ss.android.ugc.aweme.keva.d.a(context, "appsflyer-data", 0).edit();
edit2.putString("referrer", stringExtra2);
if (Build.VERSION.SDK_INT >= 9) {
edit2.apply();
} else {
edit2.commit();
}

Das oben stehende Code-Snippet stammt laut den Autoren des Papers direkt aus dem Quellcode der App. Im Code befindet sich ein Tracker namens Appsflyer – ein CRM-ähnliches SaaS-Tool, das es App-Entwicklern erlauben soll, Kundendaten zu speichern, zu analysieren und zu kontrollieren. In welchem Umfang Tiktok von dem Tool Gebrauch mache, sei nicht eindeutig festzustellen. Seit Version 10.0.8 setze Tiktok anti-VM-Vorkehrungen und Verschleierungstaktiken ein. Aus dem Code-Snippet gehe aber eindeutig hervor, dass Tiktok das Tool zum Monitoring des Nutzerverhaltens verwendet: Sobald die Variable shouldMonitor auf true gesetzt ist, aktiviert die Applikation offenbar einen Tracker. Eindeutig feststellen konnten die Experten trotz der eingesetzten Verschleierungstaktiken, dass Appsflyer von Location-Tracking Gebrauch macht. Appsflyer erklärte dazu in einem Statement gegenüber t3n, das Unternehmen handle gemäß in der EU und anderswo geltender Datenschutzvorschriften. „Tatsächlich ist der Einsatz des Appsflyer-SDK in einer Applikation ein Beweis dafür, dass der Entwickler dieser App die Privatsphäre der Endnutzer sehr ernst nimmt”, heißt es in dem Statement. Location-Tracking wird typischerweise eingesetzt, um standortbasierte Werbung ausspielen zu können. Der Standort der Nutzer wird von Tiktok allerdings nicht lediglich „auf einen Häuserblock genau“ nachvollzogen, sondern bezieht neben WLAN- und Mobilfunkdaten auch Daten von Standortanbietern, „einschließlich GPS (Global Positioning System) sowie WLAN- und Mobiltelefondaten“ ein, wie aus dem Quellcode des Android Application Package der App hervorgeht:


static Location m114(Context context) {
Location location;
Location location2;
try {
LocationManager locationManager = (LocationManager) context.getSystemService("location");
if (m113(context, new String[]{"android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_COARSE_LOCATION"})) {
location = locationManager.getLastKnownLocation("network");
} else {
location = null;
}
if (m113(context, new String[]{"android.permission.ACCESS_FINE_LOCATION"})) {
location2 = locationManager.getLastKnownLocation("gps");
} else {
location2 = null;
}
if (location2 == null && location == null) {
location2 = null;
} else {
if (location2 != null || location == null) {
if (location == null) {
}
}
location2 = location;
}
if (location2 != null) {
return location2;
}
return null;
} catch (Throwable unused) {
return null;
}
}

Abzuleiten ist das von der Requested Permission android.permission.ACCESS_FINE_LOCATION. Die Permission wird unter Protection-Level: dangerous gelistet, was offenbar bedeutet, dass User ihrer Verwendung explizit zustimmen müssen. Eine weniger genaue Alternative wird laut Whitepaper zusätzlich von der App requested.

Umfangreiches Data-Harvesting

Ein weiterer Auszug aus dem Quellcode bestätigt die von Bangorlol in seinem Reddit-Post beschriebene Praktik Tiktoks, so ziemlich alles zu tracken, was möglich ist:

(Screenshot: Whitepaper Penetrum/t3n)

Gesammelt werden offenbar Daten über das verwendete Betriebssystem sowie ausgeführte Network-Events wie WLAN- und SSID-Änderungen. Hinzu kommt die „International Mobile Equipment Identity“-Nummer, kurz IMEI, des betreffenden Smartphones – eine 15-stellige Nummer, über die ein Gerät eindeutig identifiziert werden kann:


Object obj2 = f88446a;
if (obj2 == null) {
k.a("obMSimTelephonyManager");
}
Class<?> cls = Class.forName(obj2.getClass().getName());
Class[] clsArr = {Integer.TYPE};
Method method = cls.getMethod("getDeviceId", (Class[]) Arrays.copyOf(clsArr, 1));
Object[] objArr = new Object[1];
if (Build.VERSION.SDK_INT == 21) {
objArr[0] = Long.valueOf(a(i));
} else {
objArr[0] = Integer.valueOf(b(i));
}
Object obj3 = f88446a;
if (obj3 == null) {
k.a("obMSimTelephonyManager");
}
Object invoke = method.invoke(obj3, Arrays.copyOf(objArr, 1));
if (invoke != null) {
str = invoke.toString();
}
if (str != null) {
String lowerCase = str.toLowerCase();
k.a((Object) lowerCase, "(this as java.lang.String).toLowerCase()");
if (k.a((Object) lowerCase, (Object) TEVideoRecorder.FACE_BEAUTY_NULL)) {
}
StringBuilder sb = new StringBuilder("imei is :");
if (str == null) {
k.a();
}
sb.append(str);
return str;
}
Method method2 = cls.getMethod("getImei", (Class[]) Arrays.copyOf(clsArr, 1));
Object obj4 = f88446a;
if (obj4 == null) {
k.a("obMSimTelephonyManager");
}
Object invoke2 = method2.invoke(obj4, Arrays.copyOf(objArr, 1));
if (invoke2 == null) {

Der oben stehende Code entstammt der Tiktok-APK. Daraus ersichtlich ist, wie die IMEI eines Smartphones abgerufen wird. Tracker machen von der IMEI eines Smartphones typischerweise Gebrauch, um festzustellen, ob eine Anwendung reinstalliert wird – außerdem zur Analyse anderer auf einem Gerät installierter Apps. Ein solcher Tracker kreiere einen extrem realistischen Fingerabdruck eines Smartphones, über den quasi lückenlos festgestellt werden könne, was seit Inbetriebnahme auf dem Gerät installiert war, so die Security-Experten. Diese Praxis wird in vieler Hinsicht als kontrovers betrachtet. Neben der IMEI gibt es noch eine weitere Nummer, die „International Mobile Subscriber Identity“, kurz IMSI, über die Nutzer auch bei einem Smartphone-Wechsel weiterhin identifiziert und getrackt werden können: Sie wird mit den SIM-Daten übertragen. Die Researcher schreiben, sie könnten nicht mit 100-prozentiger Sicherheit sagen, ob der Tracker auch die IMSI extrahiere, es sei jedoch anzunehmen.

Erhebliche Sicherheitsmängel

In den weiteren zehn Seiten des Whitepapers beschreiben die Experten zudem eine Reihe von mit dem Download der App verbundenen Sicherheitsrisiken, darunter mögliche Hinweise auf die Ausführung von OS-Commands über Benutzereingaben, eine Praxis, die als „eher weniger akzeptabel“ gelte. Ebenfalls bedenklich seien unsichere Verschlüsselungsmechanismen, darunter die Verwendung eines Hashing-Algorithmus namens MD5, der offenbar seit 2011 als veraltet gilt, die Speicherung von API-Tokens, Hinweise auf die Möglichkeit der Ausführung von nutzerdefinierten SQL-Abfragen und die standardmäßige Aktivierung der Browseralternative Webview.

Fazit

Es gebe zwar keine Indizien dafür, dass Tiktok die gesammelten Daten missbrauche. Dennoch hätten die Macher der App es zumindest bisher versäumt, ihre Nutzer darüber zu informieren, in welchem Ausmaß ihre Daten erhoben und gespeichert werden, schreiben die Autoren zum Abschluss des Tracking-Kapitels. Aus der Analyse geht hervor, dass die Tiktok-App ihre Nutzer extensiv trackt, möglicherweise sogar geräteübergreifend. Zudem beinhaltet der untersuchte Quellcode laut Penetrum offenbar tatsächlich Vorkehrungen, die ein Nachvollziehen des Tracking-Umfangs erschweren oder sogar ganz verhindern – Erkenntnisse, die auch der Reddit-Nutzer Bangorlol in seiner Analyse gewonnen haben will.

In einem ersten Gespräch mit t3n gab eine Mitarbeiterin der Kommunikationsabteilung von Tiktok an, dass die von Penetrum untersuchte Version der App mittlerweile veraltet und nicht länger im Umlauf sei. Tiktok verpflichte sich, die Privatsphäre der Nutzer zu respektieren und gegenüber der Community transparent zu sein, wie die Anwendung funktioniert. „Wir möchten Nutzer*innen ermutigen, für eine bestmögliche Erfahrung stets die neueste Version von Tiktok zu verwenden“, betonte sie und verwies zudem auf das Statement von Tiktoks Chef für Informationssicherheit vom 29. Juni. Spezifisch auf in dem Whitepaper geschilderte Praktiken und Mängel wollte sie jedoch zunächst nicht eingehen.

Update vom 7. Juli 2020: In einem ausführlicheren Statement betonte eine Sprecherin Tiktoks am Dienstag erneut, dass es sich bei der von Penetrum analysierten Version um eine veraltete Version handele, die bereits über ein Jahr alt sei. Für aktuelle Informationen darüber, welche Daten Tiktok sammelt, verwies sie auf die Datenschutzerklärung.

Update: Der Artikel wurde am 8. Juli 2020 um ein Statement der Firma Appsflyer ergänzt.

Zum Weiterlesen:

Zur Startseite
Outbrain