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.