Post & DHL App: Datenübermittlung an Tracking-Anbieter noch vor Zustimmung/Einwilligung

Der fünfte und letzte Test der App-Aktionswochen befasst sich mit der der Android- und iOS-App Post & DHL (Version 7.0.54 (206)/7.2). Die App wird von der Deutschen Post angeboten und vereint diverse Dienste unter einem Dach. Dazu zählt unter anderem die Paketverfolgung oder der Kauf von Brief- und Paketmarken. Demnächst ist die App die einzige Möglichkeit, um Pakete an der Packstation abzuholen.

Ein Kurzcheck soll nun eine Einschätzung darüber geben, wie datenschutzfreundlich die Post & DHL App ist. Dazu wird zunächst das Datensendeverhalten der App analysiert und anschließend ein Blick in die Datenschutzerklärung geworfen.

Nachfolgend ist das Datensendeverhalten der Android-Version dargestellt. Die iOS-Version (Version 7.2) weist ein identisches Datensendeverhalten auf – inklusive Verbindungen zu Google.

Update 27.12.2021

Die Post & DHL App verstößt seit dem 1. Dezember 2021 auch gegen das TTDSG. Der Zugriff auf Informationen, die in der Endeinrichtung gespeichert sind, erfolgt ohne vorige Einwilligung durch den Nutzer. Das stellt einen klaren Verstoß gegen § 25 TTDSG dar:

Die Speicherung von Informationen in der Endeinrichtung des Endnutzers oder der Zugriff auf Informationen, die bereits in der Endeinrichtung gespeichert sind, sind nur zulässig, wenn der Endnutzer auf der Grundlage von klaren und umfassenden Informationen eingewilligt hat. Die Information des Endnutzers und die Einwilligung haben gemäß der Verordnung (EU) 2016/679 zu erfolgen.

Insgesamt finde ich es erschreckend, wie schlecht die technische/rechtliche Umsetzung ist. Schon bevor der Nutzer überhaupt seine ausdrückliche, informierte, freiwillige, aktive Einwilligung abgegeben hat, wird auf Informationen auf der Endeinrichtung zugegriffen (Verstoß TTDSG).

Vorbemerkung (für technisch Interessierte | Nerds)

Vorab ist festzuhalten, dass die Verbindungen der App mit TLS-Certificate-Pinning abgesichert sind. Mit den üblichen Methoden via Frida und Objection (android sslpinning disable) ist es mir zunächst nicht gelungen, das Cert-Pinning zu umgehen. Mit einem Frida-Hook (tls-check-bypass.js) hatte ich dann aber Erfolg:

Java.perform(function() {
   var array_list = Java.use("java.util.ArrayList"); 
   var ApiClient = Java.use('com.android.org.conscrypt.TrustManagerImpl');

   ApiClient.checkTrustedRecursive.implementation = function(a1,a2,a3,a4,a5,a6) { 
      // console.log('Bypassing SSL Pinning'); 
      var k = array_list.$new(); 
      return k; 
   }
},0);

Dieser kleine »Trick« ermöglicht mir die Umgehung des TLS-Certificate-Pinnings und damit letzendlich die Analyse des App-Datenverkehrs. Ohne diesen Schritt wäre eine Analyse nicht möglich.

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

[1] Unmittelbar nach dem Start der App wird eine Verbindung zu Google Firebase initiiert [firebaseinstallations.googleapis.com]:

POST /v1/projects/759477801123/namespaces/fireperf:fetch HTTP/1.1
X-Goog-Api-Key: AIzaSyBLb1UI-5sW5i102BDzN5kUuf_oIjXEjpI
X-Android-Package: de.dhl.paket
X-Android-Cert: 81220C281617A4946DEFFEBAA8DC96182A63E488
X-Google-GFE-Can-Retry: yes
X-Goog-Firebase-Installations-Auth: eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBJZCI6IjE6NzU5NDc3ODAxMTIzOmFuZHJvaWQ6NTRkZjlmMWM5ZDc3MTk4ZiIsImV4cCI6MTYzNTIyOTYwOSwiZmlkIjoiZkZpajRBbXVSTWVWUldpTGdkaGdqYiIsInByb2plY3ROdW1iZXIiOjc1OTQ3NzgwMTEyM30.AB2LPV8wRQIhAP1174qaGtdcbvIqaXePUY5NqXo7aXKaicx6mPC1kuKkAiAap0ePTHoxkS3EGshHzmzyHqEtI3ZBvHENQzfKByjMmA
Content-Type: application/json
Accept: application/json
Content-Length: 628
User-Agent: Dalvik/2.1.0 (Linux; U; Android 10; Mi A1 Build/QQ3A.200805.001)
Host: firebaseremoteconfig.googleapis.com
Connection: close
Accept-Encoding: gzip, deflate

{
   "appInstanceId":"fFij4AmuRMeVRWiLgdhgjb",
   "appVersion":"7.0.54 (206)",
   "countryCode":"DE","analyticsUserProperties":{
   },
   "appId":"1:759477801123:android:54df9f1c9d77198f",
   "platformVersion":"29",
   "timeZone":"Europe\/Berlin",
   "sdkVersion":"20.0.1",
   "packageName":"de.dhl.paket",
   "appInstanceIdToken":"eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJh[...]",
   "languageCode":"de-DE"
}

[2] Anschließend initiiert die App diverse Verbindungen zu Adobe Inc., einem Unternehmen aus den USA, das unter anderem auch Marketing-Lösungen anbietet [assets.adobedtm.com]:

GET /7877162daa45/33d03dabe980/launch-9a2bbcdf1571.json HTTP/1.1
User-Agent: Mozilla/5.0 (Linux; U; Android 10; de-DE; Mi A1 Build/QQ3A.200805.001)
Accept-Language: de-DE
Host: assets.adobedtm.com
Connection: close
Accept-Encoding: gzip, deflate

Es werden JSON-Dateien, ein Zip-File und JavaScript von der Adresse assets.adobedtm.com nachgeladen. Eine Antwort von der Gegenstelle sieht folgendermaßen aus und deutet auf die Adobe Experience Cloud hin:

HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Type: application/json
ETag: "d28338e41699ca571593e503259a8d27:1589453968.255943"
Last-Modified: Thu, 14 May 2020 10:59:28 GMT
Server: AkamaiNetStorage
Vary: Accept-Encoding
Cache-Control: max-age=3600
Expires: Tue, 19 Oct 2021 06:59:37 GMT
Date: Tue, 19 Oct 2021 05:59:37 GMT
Content-Length: 651
Connection: close
Timing-Allow-Origin: *

{
   "global.privacy":"optedin",
   "analytics.launchHitDelay":0,
   "analytics.backdatePreviousSessionInfo":false,
   "analytics.offlineEnabled":false,
   "__dev__analytics.rsids":"deutschepostdhlpaketdev",
   "build.environment":"prod",
   "rules.url":"https://assets.adobedtm.com/7877162daa45/33d03dabe980/launch-9a2bbcdf1571-rules.zip",
   "experienceCloud.org":"3505782352FCE66F0A490D4C@AdobeOrg",
   "lifecycle.sessionTimeout":300,
   "analytics.server":"smetrics.dhl.de",
   "__stage__analytics.rsids":"deutschepostdhlpaketdev",
   "analytics.rsids":"deutschepostdhlpaketprod",
   "analytics.batchLimit":0,
   "property.id":"PR18d263b4a4c64322833082c05330a4dd",
   "analytics.aamForwardingEnabled":false
}

[3] Weiter geht es dann erneut mit einem Verbindungsaufbau zu Google Crashlytics [firebase-settings.crashlytics.com]:

GET /spi/v2/platforms/android/gmp/1:759477801123:android:54df9f1c9d77198f/settings?instance=92665c25ecc0be0b12dbed1b1f1dbddcbac4f07e&build_version=291000206&display_version=7.0.54%20(206)&source=1 HTTP/1.1
X-CRASHLYTICS-DEVELOPER-TOKEN: 470fa2b4ae81cd56ecbcda9735803434cec591fa
X-CRASHLYTICS-DEVICE-MODEL: Xiaomi/Mi A1
X-CRASHLYTICS-INSTALLATION-ID: cf1247df050b4c729a59c8f29a201ed6
X-CRASHLYTICS-OS-DISPLAY-VERSION: 10
Accept: application/json
X-CRASHLYTICS-API-CLIENT-VERSION: 17.3.1
User-Agent: Crashlytics Android SDK/17.3.1
X-CRASHLYTICS-API-CLIENT-TYPE: android
X-CRASHLYTICS-GOOGLE-APP-ID: 1:759477801123:android:54df9f1c9d77198f
X-CRASHLYTICS-OS-BUILD-VERSION: 10035440
Host: firebase-settings.crashlytics.com
Connection: close
Accept-Encoding: gzip, deflate

[4] Nachdem nun Verbindungen zu Adobe und Google erfolgt sind, werden auch Ressourcen wie JSON-Dateien, CSS-Stylesheets, JavaScript, Bilder etc. von den Servern der Deutschen Post geladen. Hierbei wird auch HTML geladen und mit einem Adobe Identifier verknüpft [www.dhl.de]:

GET /int-webapp/spa/prod/v6-SPA-VERFOLGEN.html?adobe_mc=TS=1634623174|MCMID=60320804828751944894792287326376314504|MCORGID=3505782352FCE66F0A490D4C@AdobeOrg HTTP/1.1
Host: www.dhl.de
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Linux; Android 10; Mi A1 Build/QQ3A.200805.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/93.0.4577.82 Mobile Safari/537.36 [DHL Paket Android App/7.0.54 (206)]
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
X-Requested-With: de.dhl.paket
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
Connection: close

Der Adobe Identifier

  • adobe_mc=TS=1634623174|
  • MCMID=60320804828751944894792287326376314504|
  • MCORGID=3505782352FCE66F0A490D4C@AdobeOrg

wird dann als Referer an nahezu alle weiteren Anfragen angehängt bzw. übermittelt.

[5] Nach dem Start der App wird noch ein weiterer Verbindungsaufbau zu Google initiiert [app-measurement.com]:

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

[...]

Es handelt sich hierbei um den Google-Tracker »Google Firebase Analytics«, der den Google-Cloud-Messaging- (GCM) Nachfolger Firebase Cloud Messaging (FCM) standardmäßig mit Daten beliefert, sofern die Entwickler dies nicht aktiv deaktivieren. Leider können wir die übermittelten Daten nicht einsehen, da Google eine zusätzliche Verschlüsselung darüber legt.

[6] Und zu guter Letzt nochmal eine Verbindung zu Google [content-autofill.googleapis.com]:

GET /v1/pages/ChNDaHJvbWUvOTMuMC40NTc3LjgyEhcJ6koNYZanZEISBQ3y3eG2EgUNiHVJaBIQCTxSpUGmiSG8EgUNbr4WbhIQCeuQcuZa7T6REgUN8t3htg==?alt=proto HTTP/1.1
Host: content-autofill.googleapis.com
X-Goog-Encode-Response-If-Executable: base64
X-Goog-Api-Key: dummytoken
Sec-Fetch-Site: none
Sec-Fetch-Mode: no-cors
Sec-Fetch-Dest: empty
User-Agent: Mozilla/5.0 (Linux; Android 10; Mi A1 Build/QQ3A.200805.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/93.0.4577.82 Mobile Safari/537.36
Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
Connection: close

Weshalb einne Verbindung zum (Google-)Autofill-Service für Formulare erfolgt, erschließt sich mir an dieser Stelle nicht. Es sind keine Eingabefelder verfügbar.

Vor der App-Nutzung (Cookie-Consent-Banner)

Bevor die Post & DHL App genutzt werden kann, erscheint auf dem Bildschirm ein Cookie-Consent-Banner. Zum Hintergrund: Vor der Einbindung Elemente Dritter, wie zum Beispiel Tools zur Reichweitenmessung, Nutzungsanalyse (Tracking) oder Social-Media-Plugins, muss der App-Betreiber vom Nutzer (Betroffener) eine Einwilligung in die konkrete Datenverarbeitung einholen. Eine solche Einwilligung muss ausdrücklich, informiert, freiwillig, aktiv und vor der eigentlichen Übermittlung der Daten erfolgen. Die nachfolgende Einwilligung erfüllt diese Anforderungen nach meinem Verständnis nicht. Das hat vor allem drei Gründe:

  • Datenübermittlung: Eine Datenübermittlung bzw. Anfrage an Google (Firebase|Analytics) und Adobe (Analytics) erfolgt bereits vor der Einwilligung.
  • Nudging: Es wird zwar die Möglichkeit angeboten, die »Auswahl zu bestätigen«, allerdings ist die Auswahlmöglichkeit als weißer Button dargestellt. Der rote Button mit der Aufschrift Alle akzeptieren sticht hervor. Aufgrund des rot hervorgehobenen Buttons werden die meisten Nutzer darauf tippen – das ist Nudging, also eine Form der Beeinflussung, um den Nutzer in seiner Entscheidung/Verhalten zu manipulieren.
  • Informiertheit: Auch in der Kategorie Informierheit erfüllt der Consent-Banner nicht meine Anforderungen. Unter anderem ist nicht auf einen Blick ersichtlich, mit welchen (Dritt-)Anbietern zusammengearbeitet wird.

DHL Consent Banner

Während der Nutzung

Insgesamt besteht beim Cookie-Consent-Banner noch Nachholbedarf. Schauen wir nun, was passiert, wenn ich Nur Auswahl bestätigen auswähle.

[1] Es wird erneut eine Verbindung zu Adobe Inc. initiiert, um ein Zip-File zu laden [assets.adobedtm.com]:

GET /7877162daa45/33d03dabe980/launch-9a2bbcdf1571-rules.zip HTTP/1.1
If-Range: Thu, 14 May 2020 10:59:28 GMT
User-Agent: Mozilla/5.0 (Linux; U; Android 10; de-DE; Mi A1 Build/QQ3A.200805.001)
If-Modified-Since: Thu, 14 May 2020 10:59:28 GMT
Accept-Language: de-DE
Range: bytes=160-
Host: assets.adobedtm.com
Connection: close
Accept-Encoding: gzip, deflate

[2] Erneut werden auch Ressourcen wie JSON-Dateien, CSS-Stylesheets, JavaScript, Bilder etc. von den Servern der Deutschen Post geladen und auch weiterhin mit einem Adobe Identifier verknüpft [www.dhl.de]:

GET /int-erkennen/deviceid HTTP/1.1
Host: www.dhl.de
Cookie: bm_sz=73E351FD7FDE982AD5B029415466D7BC~YAAQhV5swVXomol8AQAALpk9lw2dBvd2KckadIoy5CvGqDOP0Ojtv1O/u45cl6m/XF3okzdR29rNObNI+R+BQbIkqV00HmLDo1ozw7JQ1XmNNuP5h04JVQieM/KAplJVyPL+0CcVFe06ZTL4FU2rQXYpya7eoW6EIWaxtFFB9DoDXmt6aWV2ERcZB+Xk/Fc4yd4dH4AI9M8lijeujrHMJJoVHSkf1UhVCoVXnEYGM8RPF7sPyRj5cW7r4bQ9CturxDXJZ0tLCnJP/c40rJTwvKOF0LJ60p41Jz6zlp6UfxRIdV/p2v0cPP51SfjRR4nJOeSiZUw3fAu0cbou6SLuMse3WWDPuowHDnzzzDt888ATttneZXYdPPXac+iqThVSHjAV2eM=~4535621~3225411; at_check=true; verfolgen-affinity=1634624973.07.38.197208|1b7ba29007c56ac574758fa7c8b30439; bm_mi=DF70D2A4B4D5A675243005CD7FA7C189~bAg2s9qcFWFTFiEGzuGdRpePzzSrSDNVFqoSblCdlRrrzaVV7KkxcpGsGPzy7n4RG5bSj0tSO4PwhCX/+8c/cyTAqfjHX6PwxN5nl2ti2jEJMO/1qwGgeByYAlGrJTKBPpEsoQKEweDidoC/73I0qeXgrE9E9H1AatkKMiLbwmX4cOcl4RIwllRHGq5A/AvDc689xnkYu3GR93CnWXFKGAHjbCPpxzoufjM5TLA5M/y3u9kWqpYy8VHAhuLMGIp+; eDeviceID=e6e31424-d653-4083-a250-f5454e24df31; akaalb_wwwdhldealb=~op=www_dhl_de_alb_erkennen_only:erkennen|www_dhl_de_alb_verfolgen_only_azure:verfolgen_azure|www_dhl_de_alb:wwwdhlde|www_dhl_de_static_prod_only:StaticINTprod|www_dhl_de_alb_webapp_only:webapp|~rv=52~m=erkennen:0|verfolgen_azure:0|wwwdhlde:0|StaticINTprod:0|webapp:0|~os=06f548fb0da0a4ee62020bebc018f01f~id=4222ca555ddadda4bb7ff5bf76ff35bd; ak_bmsc=669FD02997F19E8CD017296E80EED15F~000000000000000000000000000000~YAAQmV5swQVfD4l8AQAAWbc9lw2IaBvhNTraTsW1Gr/IyHoWGuXNPCjlZAapVrUKgJvHY3F7Rv1KY60jdN6WI8IXD+hGDKyKn2/oI4loGWUpymDvkrpKBjch4WEDi7ZWV8xIehirxVLI5JF+dyl3qj7iGGLxhEBSJYDoQ/VCeFvhpAB1ntQlJyc9p8EHnZouTOMJUMtvockjHEBe4uR3bPPE6b4LhuNDoJnUneL15QH3z3x/OyhzyLxOlPxMADC5+niNo+xcmI5twtuoUKpVnbbpwxS1LkHshtEx+2qvck9gOB6OdtJ5g6ZZphPt3adZQzccx7SxaCypwxohJQtlmE03n0g4uAO3ZdxZDtwxeUNDxDlgbgvKewaCWmk4EjoedWIGumPnzsvdT4k4Q7hn+5XaHxmS6A7V9vXk0rkSmqkmUufkj5kfooxu7wsaJoUfu2+z/n/1AC554gMpKkxxvsAu8vxWkMTgPr5u+aegnXsc8OulWqgFZC4rPfc8F5CKw58=; _abck=8F806F3E2F9FC0A87E1F6E9B19A0634A~0~YAAQmV5swRFfD4l8AQAAnrg9lwbmwqvG4xZwu3s9Cv1/WnQB/RIztppR5htNe1n9ZtzxQBuMsg5GYX0c4eKKOk0YMoh/w6JYp4XVsefXuJbgc2czImSFcYyzk0uutqdDsvfziIzURerZhMYEYSMF9fPUbp+WfKMrJC3reCOkI684hCO5jkbz1f/actntaKQtOPW6pU8k09GhFS08N8L5s6EGRed44Z6tty7KlF9VMjedT/BR+JlK5ldhsqRnNafKwVUXjICHco0ucURzdaifqEGizvCnxBMDMSA8Pmj7ZTk7CceN9XSk+GecU4y6R3pIVDJqwramO5knjAxdflOaY4djgBp4RJCovHKq5EDqJfGtSu3llo0a9QkKr6Cf83YZWan75gr3FBm9HBW8QDU+cAoHwyZ23Ulcg0ri6NLe0BXNncw=~-1~||-1||~-1; bm_sv=B46A7F73DCAF8DC0417CD046644620FC~U/4+UfPKEerz9y6bXoipdfyXcpdhMbD8jJ7yTuzqONn7zJlSd3FQfoLDR1DKMU27q97qlGhqwlCKYMBNvslMQdhSXpVF0izZ8rfVdL2V6WKSyDRtq6+0JaW7wTNllbDmsC9pRyCrlnBXPIvwfF8hTJs0TIBIgwuTMFavsYsHD7A=
Accept: */*
User-Agent: Mozilla/5.0 (Linux; Android 10; Mi A1 Build/QQ3A.200805.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/93.0.4577.82 Mobile Safari/537.36 [DHL Paket Android App/7.0.54 (206)]
X-Requested-With: XMLHttpRequest
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://www.dhl.de/int-webapp/spa/prod/v6-SPA-VERFOLGEN.html?adobe_mc=TS%3D1634624964%7CMCMID%3D90235291813869832237804924272112602014%7CMCORGID%3D3505782352FCE66F0A490D4C%40AdobeOrg
Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
Connection: close

Den Adobe Identifier

  • adobe_mc=TS=1634623174|
  • MCMID=60320804828751944894792287326376314504|
  • MCORGID=3505782352FCE66F0A490D4C@AdobeOrg

kennen wir bereits vom App-Start.

[3] Und zu guter Letzt nochmal eine Verbindung zu Google [content-autofill.googleapis.com]:

GET /v1/pages/ChNDaHJvbWUvOTMuMC40NTc3LjgyEhAJE8FA0pkZ56kSBQ0b-JSY?alt=proto HTTP/1.1
Host: content-autofill.googleapis.com
X-Goog-Encode-Response-If-Executable: base64
X-Goog-Api-Key: dummytoken
Sec-Fetch-Site: none
Sec-Fetch-Mode: no-cors
Sec-Fetch-Dest: empty
User-Agent: Mozilla/5.0 (Linux; Android 10; Mi A1 Build/QQ3A.200805.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/93.0.4577.82 Mobile Safari/537.36
Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
Connection: close

Sobald die Möglichkeit einer Eingabe besteht, wird eine Verbindung zu content-autofill.googleapis.com initiiert. Die Verbindung wird also noch oft während der aktiven App-Nutzung aufgebaut.

[4] Im Hauptscreen tippe ich das Hinweisfenster Einfach Sendungscode scannen oder eingeben, um den Brief- oder Paketstatus zu verfolgen weg. Im Hintergrund wird dann eine Verbindung zu Adobe initiiert [dpm.demdex.net]:

GET /optOutStatus?d_visid_ver=5.2.0&d_rtbd=json&d_ver=2&d_orgid=3505782352FCE66F0A490D4C%40AdobeOrg&d_nsid=0&ts=1634626150637 HTTP/1.1
Host: dpm.demdex.net
User-Agent: Mozilla/5.0 (Linux; Android 10; Mi A1 Build/QQ3A.200805.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/93.0.4577.82 Mobile Safari/537.36 [DHL Paket Android App/7.0.54 (206)]
Content-Type: application/x-www-form-urlencoded
Accept: */*
Origin: https://www.dhl.de
X-Requested-With: de.dhl.paket
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
Connection: close

Eigentlich hatte ich keinem Tracking zugestimmt – dennoch wird nun erneut eine Verbindung zu Adobe initiiert und ein OptOutStatus übermittelt. Dieser Vorgang wiederholt sich dann mehrmals bei der Nutzung der App, wenn man sich durch die diversen Menüs und Funktionen klickt. Muss Adobe nun ständig informiert werden, dass ich ein Opt-Out vorgenommen habe bzw. der Datenübermittlung an Analyse- und Tracking-Dienste nicht zugestimmt habe?

[5] Die Kartenfunktion beim Menüpunkt Standorte basiert auf Bing Maps und erfordert die »Datenfreigabe« an Bing Maps. Auch hier fehlt es klar an Informiertheit [www.bing.com / dev.virtualearth.net / *.virtualearth.net]:

GET /REST/V1/Imagery/Copyright/de-DE/RoadOnDemand/13/49.01519986378189/8.35512135214843/49.07809544740253/8.416919447851555?output=json&dir=0&jsonp=Microsoft.Maps.NetworkCallbacks.normal&jsonso=778697&key=AjFULuHZjKkDeZzeM8K8hUlztccOyFZ0InL_SjgV5rowTlfm5nKOOgq6-WeN5hY7&ml=B,BX&ur=de&c=de-DE HTTP/1.1
Host: dev.virtualearth.net
User-Agent: Mozilla/5.0 (Linux; Android 10; Mi A1 Build/QQ3A.200805.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/93.0.4577.82 Mobile Safari/537.36 [DHL Paket Android App/7.0.54 (206)]
Accept: */*
X-Requested-With: de.dhl.paket
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: no-cors
Sec-Fetch-Dest: script
Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
Connection: close

Mitunter werden die GPS-Daten einer Suche (49.01519986378189/8.35512135214843) an Microsoft übermittelt. Datenschutzfreundlicher wäre die Einbindung von OpenStreetMap.

[6] Sobald eine Funktion innerhalb der App getriggert wird, die bspw. eine Anmeldung mit einem DHL-Konto erfordert oder einen Bestellvorgang auslöst (bspw. Brief- oder Paketmarke), wird von der App die Webseite von DHL bzw. der Deutschen Post eingebunden. Dieser Vorgang löst wiederum diverse Verbindungen aus und auch die erneute Einbindung/Einblendung eines Cookie-Consent-Banners:

Post Consent-Banner

Es werden dann unter anderem Verbindungen zu:

  • shop.deutschepost.de (Deutsche Post)
  • cdn.cookielaw.org (CookieLaw)
  • geolocation.onetrust.com (OneTrust)
  • assets.adobedtm.com (Adobe Inc.)
  • content-autofill.googleapis.com (Google)
  • privacyportal-de.onetrust.com (OneTrust)

geöffnet. Tippt man beim Cookie-Consent-Banner auf Nur Auswahl bestätigen, werden anschließend weiterhin Verbindungen zu Adobe Inc. initiiert [assets.adobedtm.com]:

GET /extensions/EPbde2f7ca14e540399dcc1f8208860b7b/AppMeasurement_Module_ActivityMap.min.js HTTP/1.1
Host: assets.adobedtm.com
If-Modified-Since: Wed, 12 Aug 2020 22:09:52 GMT
User-Agent: Mozilla/5.0 (Linux; Android 10; Mi A1 Build/QQ3A.200805.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/93.0.4577.82 Mobile Safari/537.36
If-None-Match: "5dedcda2c8a6c3a51fd419d306427010:1597270192.857753"
Accept: */*
X-Requested-With: de.dhl.paket
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: no-cors
Sec-Fetch-Dest: script
Referer: https://shop.deutschepost.de/
Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
Connection: close

Die Registrierung eine DHL-Kontos nehme ich nicht vor und belasse die Analyse hierbei.

Datenschutzerklärung

Die über den Google PlayStore verlinkte Datenschutzerklärung ist speziell für die Post & DHL App. Insgesamt ist die Datenschutzerklärung transparent, nennt allerdings nicht alle Dienstabieter, die im Rahmen der App verwendet werden. Unter anderem wird die Adobe Inc. mit keiner Silbe erwähnt, obwohl auch während der App-Nutzung und ohne Zustimmung Daten übermittelt werden. Und auch den Dienstleister OneTrust oder CookieLaw sucht man vergebens.

Auch weitere Angaben fehlen oder sind leider nicht korrekt. Unter Ziffer »Nutzung von Google Analytics und Firebase Crashlytics« steht:

Rechtsgrundlage ist Ihre Einwilligung nach Art. 6 Abs. 1 S. 1 lit. a DSGVO. Die Einwilligung erteilen Sie innerhalb der App.

Wie aufgezeigt fließen auch ohne Zustimmung/Einwilligung Daten an Google Analytics und Firebase Crashlytics ab. Insofern dürfte eine rechtswidrige Datenverarbeitung vorliegen.

Fazit

Insgesamt hinterlässt die Post & DHL App keinen datenschutzfreundlichen Eindruck. Das liegt insbesondere an technischen Mängeln, bei dem Daten an Tracking- und Analyse-Dienste schon vor der eigentlichen Einwilligung nach Art. 6 Abs. 1 S. 1 lit. a DSGVO übermittelt werden. Und auch wenn beim Tracking nicht eingewilligt wird, wird die Adobe Inc. praktisch dauerhaft über den Opt-Out-Status des Nutzers informiert – wohlgemerkt ist dieses Unternehmen bzw. Dienstleister allerdings gar nicht in der Datenschutzerklärung aufgeführt. Dazu kommen dann noch Mängel bei den (Cookie-)Consent-Bannern, die den Anforderungen einer ausdrücklichen, informierten, freiwilligen, aktiven und vor der eigentlichen Übermittlung Einwilligung nicht genügen.

Da die App demnächst die einzige Möglichkeit sein wird, um Pakete an der Packstation abzuholen, sollte die Deutsche Post hier dringend nachbessern.

Hilf mit die Spendenziele zu erreichen! Mitmachen ➡