Garmin Connect: Facebook und Google dürfen auch tracken

Am zweiten Tag der App-Review-Week wird die Android-App Garmin Connect (Version 4.22.1) einem Kurzcheck unterzogen – eine App, die benötigt wird, um Fitness-Daten von Garmin-Geräten auszuwerten bzw. zu synchronisieren. Beginnen wir mit den Netzwerkverbindungen, die Garmin Connect während der Nutzung aufbaut.

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]:

  • 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: com.garmin.android.apps.connectmobile
    • Versionsnummer der App: 4.22.1
    • Android-Versionsnummer: 9
    • Gerätemodell: Mi A1
    • 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, dass Facebook nun eine Verknüpfung zwischen Facebook-Nutzer und den übermittelten Daten herstellen kann. Der Grund: Auch die Facebook-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« kommuniziert die App im Verlauf der App-Nutzung übrigens regelmäßig – auch wenn man überhaupt kein Facebook-Konto hat. Facebook erfährt also unter anderem, in welcher View (Ansicht in der App) sich der Nutzer gerade befindet.

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

GET /spi/v2/platforms/android/apps/com.garmin.android.apps.connectmobile/settings?instance=02b81de25e16366e2a65ae4fe52170c009d4be7c&build_version=5045&display_version=4.22.1&source=4&icon_hash=ca86f75f2554f117aec789e590c0c32182e4650d HTTP/1.1
User-Agent: Crashlytics Android SDK/1.4.8.32
X-CRASHLYTICS-DEVELOPER-TOKEN: 470fa2b4ae81cd56ecbcda9735803434cec591fa
X-CRASHLYTICS-API-KEY: 4e3b4ae0663da5099f310ac3d7e1961044e54379
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: c262fa24a00c4698b2b98137885bce47
Host: settings.crashlytics.com
Connection: close
Accept-Encoding: gzip, deflate

Bei einem Absturz wird Garmin Connect dann einen Absturzbericht an CrashLytics senden.

[3] 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: 436
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.

[4] Die Server der App-Entwickler werden ebenfalls kontaktiert [static.garmincdn.com | geolocation.garmin.com]. Unter anderem, um eine Standortbestimmung durchzuführen und ein paar Informationen vom Gerät zu übermitteln:

GET /geolocation/whereami/akamai HTTP/1.1
Content-Type: application/json
X-app-ver: 5045
X-lang: de
User-Agent: com.garmin.android.apps.connectmobile 4.22.1 5045 Dalvik/2.1.0 (Linux; U; Android 9; Mi A1 Build/PQ3A.190705.003)
Authorization: OAuth oauth_consumer_key="fc3e99d2-118c-44b8-8ae3-03370dde24c0", oauth_nonce="-2597516023199816155", oauth_signature="ez1zFbhvUN1C4BviwqZlv0aTF2s%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1568889817", oauth_version="1.0"
Host: geolocation.garmin.com
Connection: close
Accept-Encoding: gzip, deflate

Registrierung: Anmeldung via E-Mail-Adresse

Nach der Zustimmung in die EULA, kann ein Konto bei Garmin Connect angelegt werden. Darunter findet sich noch folgender Hinweis:

Datenschutz ist für Garmin sehr wichtig. Unsere Garmin Connect-Datenschutzrichtlinie ist zur Ansicht verfügbar.

Damit ist Garmin in guter Gesellschaft: Auf dem Papier bzw. vordergründig hat der Datenschutz einen hohen Stellenwert, in der Praxis leider weniger – siehe unter anderem der Facebook-Tracker. Ich werte das mittlerweile als Verbrauchertäuschung – denn erst ein Blick in die Datenschutzerklärung informiert den Nutzer darüber, dass Facebook-Tracker und Co. eingebunden werden. Mit Datenschutz hat diese Einbindung jedoch wenig zu tun. Es ist wirklich erstaunlich, nach all den Datenskandalen, in die Facebook verwickelt ist / war, gibt es noch immer Unternehmen, die Facebook in ihre Apps integrieren.

Nach Einwilligung in die EULA wird eine Verbindung zu sso.garmin.com aufgebaut (inklusive Cert-Pinning) – dazwischen auch immer zu Cloudflare [ajax.cloudflare.com], um von dort JavaScript nachzuladen. Innerhalb der App wird man anschließend gebeten Name, E-Mail-Adresse und Kennwort anzugeben:

POST /sso/createNewAccount?service=https%3A%2F%2Fsso.garmin.com%2Fsso%2Fembed&source=https%3A%2F%2Fsso.garmin.com%2Fsso%2Fembed&redirectAfterAccountLoginUrl=https%3A%2F%2Fsso.garmin.com%2Fsso%2Fembed&redirectAfterAccountCreationUrl=https%3A%2F%2Fsso.garmin.com%2Fsso%2Fembed&gauthHost=https%3A%2F%2Fsso.garmin.com%2Fsso&locale=de&id=gauth-widget&cssUrl=https%3A%2F%2Fstatic.garmincdn.com%2Fcom.garmin.connect%2Fui%2Fcss%2Fgauth-custom-gcm-bic-v1.3-min.css&clientId=GarminConnectMobileAndroid&rememberMeShown=false&rememberMeChecked=false&createAccountShown=false&openCreateAccount=true&displayNameShown=false&consumeServiceTicket=true&initialFocus=true&embedWidget=true&socialEnabled=false&generateExtraServiceTicket=false&generateTwoExtraServiceTickets=false&generateNoServiceTicket=false&globalOptInShown=true&globalOptInChecked=false&mobile=true&connectLegalTerms=false&showTermsOfUse=false&showPrivacyPolicy=false&showConnectLegalAge=true&locationPromptShown=true&showPassword=true HTTP/1.1
Host: sso.garmin.com
Connection: close
Content-Length: 262
Pragma: no-cache
Cache-Control: no-cache
Origin: https://sso.garmin.com
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Linux; Android 9; Mi A1 Build/PQ3A.190705.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/75.0.3770.101 Mobile Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Referer: [...]
Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: [...]
X-Requested-With: com.garmin.android.apps.connectmobile

name=Test&username=test%40tutanota.de&email=test%40tutanota.de&emailMatch=test%40tutanota.de&password=secretPassword&location=DE&confirmAge=on&_csrf=82664008B7740A90FA9FC52D8BF7B4ADBD016EE349A38BFBC00FAD15C086F9D78AC4D4FD143DABE250B8B898CCDDFAF61974

Während der Nutzung

Leider konnte ich kein Garmin-Gerät mit Garmin Connect verknüpfen – ich habe schlichtweg keines. Eine Aussage darüber, welche Daten dann während der App-Nutzung übermittelt werden ist daher schwierig. Beim Klicken durch die Menüs wird hauptsächlich eine Verbindung zu connectapi.garmin.com aufgebaut und Daten ausgetauscht. Hin und wieder auch zum Facebook-Tracker – Facebook muss ja auf dem Laufenden bleiben, was ihr so innerhalb Garmin Connect alles so antippt bzw. zu welchem Zeitpunkt ihr die App benutzt.

Kurzcheck der Datenschutzerklärung

Die Datenschutzerklärung ist in deutscher Sprache einsehbar. Erster Satz:

Garmin schützt Ihre Privatsphäre.

Der integrierte Facebook-Tracker spricht da aber eine ganz andere Sprache. Insgesamt ist die Datenschutzerklärung relativ umfangreich und erklärt transparent wofür die Daten verwendet bzw. zu welchem Zweck sie verarbeitet werden. Selbst Drittanbieter werden genannt. Wer die Datenschutzerklärung im Vorfeld liest, der weiß: Garmin Connect verarbeitet jede Menge von (personenbezogenen) Daten bzw. nutzt dafür diverse Drittanbieter. Persönlich würde ich kein Gerät nutzen wollen, dass zwingend auf die Garmin-Connect-App angewiesen ist.

Fazit

Wer heute noch Facebook-Bibliotheken in seine Apps integriert, der verhöhnt den aufgeklärten Nutzer geradezu, wenn er in der Datenschutzerklärung Sätze wie

Garmin schützt Ihre Privatsphäre.

platziert. Die Integration von Facebook-Trackern und die massive Nutzung von Google-Diensten hat mit Privatsphäre jedenfalls nichts gemein.

Nein Danke Garmin, die App dürft ihr behalten.

Hilf mit die Spendenziele zu erreichen! Mitmachen ➡