FaceApp: Facebook ist permanent dabei

FaceApp scheint gerade äußerst beliebt – obwohl die App schon länger auf dem Markt ist. Aufgrund des Hypes wollte ich mir den Datenverkehr mal genauer ansehen.

App-Start: Unmittelbar nach dem Start (keine Interaktion des Nutzers)

[1] Unmittelbar nach dem Start der App kontaktiert die App Facebook. Unter anderem werden folgende Informationen übermittelt [graph.facebook.com | graph.accountkit.com]:

  • Google Advertising ID: advertiser_id = c3639f11-626a-4692-9574-6a0f632e1ea3
  • Ob Ad-Tracking aktiviert / erlaubt ist: advertiser_tracking_enabled = true
  • Ein Identifier: anon_id = XZce953baa-18a8-42e0-82ad-2d1b3866fe63
  • Ob das App-Tracking aktiviert / erlaubt ist: application_tracking_enabled = true
  • Weitere Informationen:
    • Paketname der App: io.faceapp
    • Versionsnummer der App: 3.4.8
    • Android-Versionsnummer: 7.1.2
    • Gerätemodell: Redmi Note 4
    • Länderkennung: de_DE
    • Zeitzone: MESZ, Europe/Berlin
    • Displayauflösung: 1080×1920

Wie bedenklich die Einbindung von Facebook-Bausteinen (SDK) hinsichtlich der Privatsphäre sind, scheint noch immer nicht an die App-Entwickler durchgedrungen zu sein – einfach unverantwortlich. Allein die Übermittlung der Google Advertising ID genügt im Grunde genommen, dass Facebook nun eine Verknüpfung zwischen Facebook-Nutzer und den übermittelten Daten herstellen kann. Der Grund: Auch die Facebok-App (sofern installiert) liest die Google Advertising ID aus. Damit hat Facebook anschließend einen Identifier, den sie einer Person exakt zuordnen können.

Mit dem Server »graph.facebook.com« bzw. »graph.accountkit.com« kommuniziert die App im Verlauf der App-Nutzung übrigens regelmäßig – praktisch nach jedem Fingertipp innerhalb der App. Wer FaceApp nutzt übermittelt also auch jede Menge Informationen an Facebook – ob er das nun will oder nicht.

[2] Zur Analyse von Abstürzen hat FaceApp CrashLytics von Google integriert:

GET /spi/v2/platforms/android/apps/io.faceapp/settings?instance=2882b15b06eaa6476de7f1d98aae3f3880b66756&build_version=2343&display_version=3.4.8&source=4&icon_hash=4d343a43edf6fb967f4fdf77d58d3b35b0786b8e HTTP/1.1
User-Agent: Crashlytics Android SDK/1.4.8.32
X-CRASHLYTICS-DEVELOPER-TOKEN: 470fa2b4ae81cd56ecbcda9735803434cec591fa
X-CRASHLYTICS-API-KEY: b4330c21c53b307e978e6bec2198e3aeee02586b
X-CRASHLYTICS-API-CLIENT-TYPE: android
X-CRASHLYTICS-API-CLIENT-VERSION: 1.4.8.32
Accept: application/json
X-CRASHLYTICS-DEVICE-MODEL: Xiaomi/Mi A1
X-CRASHLYTICS-OS-BUILD-VERSION: 0ae0a9df12
X-CRASHLYTICS-OS-DISPLAY-VERSION: 9
X-CRASHLYTICS-INSTALLATION-ID: 5faa16b5db194c0fab8729c7dfb3ed00
Host: settings.crashlytics.com
Connection: close
Accept-Encoding: gzip, deflate

Bei einem Absturz wird FaceApp dann einen Absturzbericht an CrashLytics senden.

[3] Die Server der App-Entwickler werden ebenfalls kontaktiert und ein paar Informationen vom Gerät übermittelt [api.faceapp.io]:

POST /api/v3.0/devices/register HTTP/1.1
X-FaceApp-DeviceID: 7227620273dd60cb
X-FaceApp-AppLaunched: 1563522826
User-Agent: FaceApp/3.4.8 (Linux; Android 9; Mi A1 Build/PQ3A.190705.003; wv)
Accept-Language: de
Content-Type: application/json; charset=UTF-8
Content-Length: 323
Host: api.faceapp.io
Connection: close
Accept-Encoding: gzip, deflate

{"app_version":"3.4.8","device_id":"7227620273dd60cb","device_model":"Mi A1","lang_code":"de","registration_id":"cq7OSJg4NHo:APA91bGFw8Qw9yy-aTHKxRSeyQ8jy8KUd7CQSE0wLpQS4Nl8erTBe4iNQushb1eiTrRiu9AveDj1f4oYuVEo3SUgaY5EWH9JEw0-Wam6wQ4ZUMCtjRfU_n3iWm7YdwmUaODw6lA-xmq5","sandbox":false,"system_version":"9","token_type":"fcm"}

[4] Ebenfalls integriert ist der Google-Tracker »app-measurement.com«, der den Google-Cloud-Messaging (GCM) Nachfolger Firebase-Cloud-Messaging (FCM) standardmäßig mit Daten beliefert, sofern die Entwickler dies nicht aktiv deaktivieren [app-measurement.com]:

POST /a HTTP/1.1
Content-Encoding: gzip
Content-Length: 2717
Content-Type: application/x-www-form-urlencoded
User-Agent: Dalvik/2.1.0 (Linux; U; Android 9; Mi A1 Build/PQ3A.190705.003)
Host: app-measurement.com
Connection: close
Accept-Encoding: gzip, deflate

Leider können wir die Daten nicht einsehen, da Google eine zusätzliche Verschlüsselung darüber legt.

[5] FaceApp nutzt ebenfalls Firebase Remote Config, mit dem es möglich ist, kleine Änderungen an der App direkt auszuliefern. Ein komplettes Update der App über den Play Store ist somit in bestimmten Fällen nicht notwendig [firebaseremoteconfig.googleapis.com]:

POST /v1/projects/554161020816/namespaces/firebase:fetch?key=AIzaSyBuUgD4-WVyRBKIMbBFrOJqNihb8396CUs HTTP/1.1
Accept-Encoding: gzip, deflate
User-Agent: Google-API-Java-Client Google-HTTP-Java-Client/1.26.0-SNAPSHOT (gzip)
x-goog-api-client: java/0 http-google-cb/1.26.0 linux/4.9.184
x-android-package: io.faceapp
x-android-cert: 60A14471B853BF20974E0E2135D78D427B91067E
Content-Type: application/json; charset=UTF-8
Content-Encoding: gzip
Content-Length: 376
Host: firebaseremoteconfig.googleapis.com
Connection: close

Leider können wir die Daten nicht einsehen, da Google eine zusätzliche Verschlüsselung darüber legt.

Nutzung der App

Der weitere App-Verkehr ist eher unspektakulär. Man kann Bilder auswählen oder knipsen, die anschließend auf die FaceApp-Server [faceapp.io] zur Bearbeitung hochgeladen werden. Persönlich würde ich von einer Nutzung abraten, da niemand weiß, was mit den hochgeladenen Bildern tatsächlich passiert.

Fazit

Einer netter Spaß für zwischendurch – sofern man damit einverstanden ist, dass die App-Nutzung von Facebook und Co. getrackt wird. Die Datenschutzerklärung schweigt sich über Drittanbieter aus. Daher kann sich auch niemand im Vorfeld darüber informieren, welche Daten, zu welchem Zweck, an welchen Drittanbieter übermittelt werden. In Anbetracht dieser groben Schnitzer würde ich FaceApp bzw. den Protagonisten dahinter meine Daten bzw. Bilder nicht anvertrauen. Man muss nicht auf jeden Hype-Zug aufspringen und anschließend fragwürdige Unternehmen mit Daten beliefern – egal wie »trendy« etwas gerade ist.

Unterstütze den Blog mit einem Dauerauftrag! Mitmachen ➡