Wohin verbindet sich die ToxFox App?

6 min


Loading

Im Rahmen eines Berichts der Sendung WDR Marktcheck zum Thema flüssiges Mikroplastik in Kosmetik stieß ich auf die App ToxFox. Diese ermöglicht es Produkte wie Creme oder Deo zu scannen um deren Zutaten auf schädliche Inhaltsstoffe zu prüfen. Das hatten wir in der Familie auch gemacht doch als Tech-YouTuber kam in mir die Frage hoch, was dabei hinter den Kulissen vorgeht und genau darum geht es in diesem Beitrag.

Und damit herzlich willkommen. Es klingt ja wirklich zu einfach. Ein Deo oder eine Sonnencreme mal schnell scannen und die Inhaltsstoffe analysieren lassen. Alles kostenfrei wohlgemerkt. Oder wie ist das? Wie funktioniert die App? Wohin verbindet sie sich eigentlich, wenn Du z.B. Dein Deo prüfst?

Genau diese Fragen hatte ich mir auch gestellt und ich habe es überprüft. Das Ergebnis ist durchwachsen, das kann ich schon jetzt sagen.

Der Herausgeber der App ist der Bund für Umwelt und Naturschutz Deutschland e.V., kurz BUND. So weit so gut. Die besagte App ToxFox könnt Ihr kostenlos im Google Play Store für Android und in Apples App Store für iOS und iPadOS herunterladen. Ist die App auf dem Smartphone, benötigt Ihr nur noch ein zu prüfendes Produkt. Habt ihr dieses, schaut Ihr ob darauf ein Strichcode abgebildet ist. Falls ja, scannt diesen in ToxFox und ihr seht schnell ob Schadstoffe wie Weichmacher oder Microplastik enthalten sind.

Wir müssen an der Stelle diesen Beitrag in zwei Aspekte trennen.

Der eine Aspekt ist der inhaltliche der App. Diesen Ansatz finde ich nämlich sehr gut eine Möglichkeit zu bieten Produkte auf Schadstoffe zu prüfen. Wer das Thema Nachhaltigkeit selbst lebt, prüft sein eigenes Leben. Feste Bestandteile auf den Prüfstand stellen ist dann eine gute Sache. So kam es, dass auch wir in der Familie verschiedene Produkte wie Deo, Creme, Kindercremes, Kindersonnencreme usw. gescannt und geprüft hatten. Zum Teil mit erschreckendem Ergebnis. Natürlich sollte man nicht alles pauschal verteufeln. Manche Inhaltsstoffe frühen ja auch genau zu dem Resultat, weswegen man das Produkt eigentlich kauft. Einfaches Beispiel: Wenn Du Dir ein Antitranspirant Deo gegen feuchte Achseln kaufst, dann solltest Du Dich nicht wundern, wenn darin Aluminiumsalz enthalten ist. Das ist jetzt kein direktes Beispiel für ToxFox, sondern noch plakativer. Aber ich denke es zeigt perfekt, wohin die Reise geht. Also dieser Aspekt der App ist grandios. Man kann schnell prüfen was enthalten ist und auch weiterführende Infos zu den bedenklichen Inhaltsstoffen nachlesen. Auch Beschwerdemails an die Hersteller können versendet werden.

Der andere Aspekt ist der technische unterhalb der Oberfläche. Wohin verbindet sich die App, wenn man sie nutzt und Produkte scannt. Stecken gar Tracker oder nutzerdatenerfassende Bestandteile von Software Development Kits (SDKs) darin, die evtl. Rückschlüsse auf Euch geben könnten?

Um das herauszufinden, benötigt man einen DNS-Server, über den man den Datenverkehr des Geräts mit ToxFox schleußt. Ich hatte in einer virtuellen Maschine Ubuntu installiert und darauf einen Bind9 DNS-Server. Die IP der Ubuntu VM hatte ich an einem iPhone als DNS-Server eingetragen. Auf diese Weise hat das iPhone für alle Anfragen ins Internet die Ubuntu VM als DNS angesteuert. Als Resultat floss der gesamte Datenverkehr über den Ubuntu DNS. Auf diese Weise konnte ich in einem fest definierten Zeitraum den Netzwerkverkehr von ToxFox beobachten und analysieren.

Ich startete zwei Scan. Ein Deo und danach eine Body-Lotion aber das ist nicht von Relevanz für die Verbindungen. Es dient nur darum, damit Ihr Euch etwas darunter vorstellen könnt.

Info: Ausschlaggeben war die Marktcheckfolge vom 21.6.22. Sie ist hier auf YouTube einsehbar.

DNS Log inkl. Auswertung

  • 21-Jul-2022 21:28:43.958 client @0x7f2590087bd8 192.168.1.71#51369 (time.apple.com): query: time.apple.com IN A + (192.168.1.65)
  • 21-Jul-2022 21:28:43.958 client @0x7f25980acc28 192.168.1.71#54046 (time.apple.com): query: time.apple.com IN AAAA + (192.168.1.65)
  • 21-Jul-2022 21:28:44.022 client @0x7f2590087bd8 192.168.1.71#57475 (www.google.com): query: www.google.com IN AAAA + (192.168.1.65)
  • 21-Jul-2022 21:28:44.022 client @0x7f2590020d68 192.168.1.71#63670 (www.google.com): query: www.google.com IN A + (192.168.1.65)
  • 21-Jul-2022 21:28:44.058 client @0x7f25980acc28 192.168.1.71#57932 (device-provisioning.googleapis.com): query: device-provisioning.googleapis.com IN HTTPS + (192.168.1.65)
  • 21-Jul-2022 21:28:44.058 client @0x7f25981f5008 192.168.1.71#57756 (device-provisioning.googleapis.com): query: device-provisioning.googleapis.com IN AAAA + (192.168.1.65)
  • 21-Jul-2022 21:28:44.058 client @0x7f2598085b58 192.168.1.71#62841 (toxcheck.info): query: toxcheck.info IN HTTPS + (192.168.1.65)
  • 21-Jul-2022 21:28:44.058 client @0x7f259005b5c8 192.168.1.71#56306 (device-provisioning.googleapis.com): query: device-provisioning.googleapis.com IN A + (192.168.1.65)
  • 21-Jul-2022 21:28:44.058 client @0x7f259008d168 192.168.1.71#49986 (toxcheck.info): query: toxcheck.info IN AAAA + (192.168.1.65)
  • 21-Jul-2022 21:28:44.058 client @0x7f2598176628 192.168.1.71#50406 (toxcheck.info): query: toxcheck.info IN A + (192.168.1.65)
  • 21-Jul-2022 21:28:44.122 client @0x7f25980acc28 192.168.1.71#53097 (firebaseinstallations.googleapis.com): query: firebaseinstallations.googleapis.com IN HTTPS + (192.168.1.65)
  • 21-Jul-2022 21:28:44.126 client @0x7f25981f5008 192.168.1.71#61945 (firebaseinstallations.googleapis.com): query: firebaseinstallations.googleapis.com IN AAAA + (192.168.1.65)
  • 21-Jul-2022 21:28:44.126 client @0x7f259005b5c8 192.168.1.71#64116 (firebaseinstallations.googleapis.com): query: firebaseinstallations.googleapis.com IN A + (192.168.1.65)
  • 21-Jul-2022 21:28:44.282 client @0x7f2598085b58 192.168.1.71#51890 (r3.o.lencr.org): query: r3.o.lencr.org IN HTTPS + (192.168.1.65)
  • 21-Jul-2022 21:28:44.282 client @0x7f259008d168 192.168.1.71#51753 (r3.o.lencr.org): query: r3.o.lencr.org IN AAAA + (192.168.1.65)
  • 21-Jul-2022 21:28:44.282 client @0x7f259005b5c8 192.168.1.71#51095 (r3.o.lencr.org): query: r3.o.lencr.org IN A + (192.168.1.65)
  • 21-Jul-2022 21:28:44.406 client @0x7f259005b5c8 192.168.1.71#61535 (a1887.dscq.akamai.net): query: a1887.dscq.akamai.net IN HTTPS + (192.168.1.65)
  • 21-Jul-2022 21:28:44.539 client @0x7f2598085b58 192.168.1.71#55316 (fcmtoken.googleapis.com): query: fcmtoken.googleapis.com IN HTTPS + (192.168.1.65)
  • 21-Jul-2022 21:28:44.539 client @0x7f2598176628 192.168.1.71#55656 (fcmtoken.googleapis.com): query: fcmtoken.googleapis.com IN AAAA + (192.168.1.65)
  • 21-Jul-2022 21:28:44.539 client @0x7f25981f5008 192.168.1.71#64729 (fcmtoken.googleapis.com): query: fcmtoken.googleapis.com IN A + (192.168.1.65)
  • 21-Jul-2022 21:28:55.612 client @0x7f259008d168 192.168.1.71#60169 (scandk1.scandit.com): query: scandk1.scandit.com IN A + (192.168.1.65)
  • 21-Jul-2022 21:28:57.441 client @0x7f259008d168 192.168.1.71#54538 (sdk-api.scandit.com): query: sdk-api.scandit.com IN AAAA + (192.168.1.65)
  • 21-Jul-2022 21:28:57.441 client @0x7f25981f5008 192.168.1.71#57942 (sdk-api.scandit.com): query: sdk-api.scandit.com IN HTTPS + (192.168.1.65)
  • 21-Jul-2022 21:28:57.441 client @0x7f2598176628 192.168.1.71#51580 (sdk-api.scandit.com): query: sdk-api.scandit.com IN A + (192.168.1.65)
  • 21-Jul-2022 21:28:57.569 client @0x7f25981f5008 192.168.1.71#51955 (d-ipd597f5kc.execute-api.eu-west-1.amazonaws.com): query: d-ipd597f5kc.execute-api.eu-west-1.amazonaws.com IN AAAA + (192.168.1.65)
  • 21-Jul-2022 21:28:57.569 client @0x7f259008d168 192.168.1.71#61373 (d-ipd597f5kc.execute-api.eu-west-1.amazonaws.com): query: d-ipd597f5kc.execute-api.eu-west-1.amazonaws.com IN HTTPS + (192.168.1.65)
  • 21-Jul-2022 21:28:58.778 client @0x7f259008d168 192.168.1.71#60879 (www.codecheck.info): query: www.codecheck.info IN HTTPS + (192.168.1.65)
  • 21-Jul-2022 21:28:58.778 client @0x7f259005b5c8 192.168.1.71#61266 (www.codecheck.info): query: www.codecheck.info IN AAAA + (192.168.1.65)
  • 21-Jul-2022 21:28:58.778 client @0x7f2590020d68 192.168.1.71#59801 (www.codecheck.info): query: www.codecheck.info IN A + (192.168.1.65)
  • 21-Jul-2022 21:28:59.062 client @0x7f25981f5008 192.168.1.71#59471 (cdn.codecheck.info): query: cdn.codecheck.info IN HTTPS + (192.168.1.65)
  • 21-Jul-2022 21:28:59.062 client @0x7f259005b5c8 192.168.1.71#59533 (cdn.codecheck.info): query: cdn.codecheck.info IN AAAA + (192.168.1.65)
  • 21-Jul-2022 21:28:59.062 client @0x7f2598176628 192.168.1.71#63624 (cdn.codecheck.info): query: cdn.codecheck.info IN A + (192.168.1.65)

Weitere Domains eines zweiten Scans

  • 21-Jul-2022 16:00:53.951 client @0x7f259000d218 192.168.1.71#61080 (scandk1.mirasense.com): query: scandk1.mirasense.com IN A + (192.168.1.65)

Diese Domains finden sich im Log:

firebaseinstallations.googleapis.com

Siehe:

https://firebase.google.com/docs/reference/android/com/google/firebase/installations/FirebaseInstallations

Viele Apps nutzen Google Firebase Analytics und stellen eine Verbindung zu “firebaseinstallations.googleapis.com” her, um mich (bzw. meine Installation einer betreffenden App) eindeutig zu identifizieren und deren Nutzung zu verfolgen.

toxcheck.info

Siehe toxcheck.info

ToxFox Datenbank

device-provisioning.googleapis.com

Siehe:

https://developers.google.com/zero-touch/reference/customer/rest

Ist Bestandteil von Firebase

r3.o.lencr.org

Siehe https://letsencrypt.org/docs/lencr.org/

Es wird ein Seitenaurfuf initiiert, der durch ein Let´s Encrypt Zertifikat verifiziert werden soll. Dies ist dann der Verifizierungsprozess ob das Zertifikat valide ist.

fcmtoken.googleapis.com

Siehe https://firebase.google.com/docs/cloud-messaging/auth-server

Um Push Nachrichten an iOS Geräte zu versenden, wird der Push Versand über Firebase Cloud Messaging (FCM) realisiert.

scandk1.scandit.com

Siehe https://www.scandit.com/de/

Funktion zum Scannen von Produkten zur Bewertung in Toxfox

sdk-api.scandit.com

Siehe https://www.scandit.com/de/developers/

https://docs.scandit.com/data-capture-sdk/ios/index.html

Funktion zum Scannen von Produkten zur Bewertung in Toxfox

d-ipd597f5kc.execute-api.eu-west-1.amazonaws.com

Siehe https://docs.aws.amazon.com/general/latest/gr/apigateway.html

AWS Gateway Endpoint

www.codecheck.info und cdn.codecheck.info

Siehe www.codecheck.info

CodeCheck bietet umfassende Produktinformationen und -bewertungen. Das dürfte für die Produktbeschreibung in Toxfox relevant sein.

scandk1.mirasense.com

Die Domain gehört zu Scandit

ToxFox baut anscheinend Dritt-Verbindungen auf, die Google Firebase Analytics zuzuordnen sind. Das scheint aus dem SDK heraus zu resultieren und ist eine bedauerliche Begleiterscheinung. Auch Verbindungen zu Amazon Web Services bzw. dessen Gateway Endpoint werden initiiert. Was dort ggf. gehostet wird, kann nicht gesagt werden. Die restlichen Verbindungen lassen einen betriebsmäßigen Gebrauch vermuten.

Fazit

Was man mit DNS Tracing machen kann, ist nur eine Bestandsaufnahme für einen definierten Zeitraum. Was genau zu welchem Zweck aufgerufen und initiiert wird, das können nur die Entwickler sagen, die sich dahinter eine Logik aufbauten. Habt bitte Verständnis dafür, dass ich nicht Auskunft darüber geben kann, wieso Aufrufe gegen Firebase, AWS oder Googleapis stattfinden. Einen Teil kann man sich herleiten. Ein einfaches Bespiel ist der Aufruf von toxcheck.info. Dies ist die zentrale Datenbank der App. Heißt die Produktbewertungen finden nicht auf den Geräten statt, sondern es wird von den Geräten aus von der App eine Verbindung zur Datenbank aufgebaut mit einer konkreten Anfrage. So werden die Produktdaten zentral gespeichert, werden dort vermutlich fortlaufend aktualisiert und ergänzt. Es macht keinen Sinn unzählige Datenbankbestände mit der App auszuliefern. Das macht die App Verteilung langsam und frisst vermutlich auch viel Platz auf Eurem Gerät. Also nicht alles ist unsinnig oder böse.

Das Tacking durch SDKs innerhalb von Apps ist für die Entwickler sicher interessant aber aus Sicht des Nutzers ist das eindeutig von Nachteil. Man kann es im lokalen Netzwerk z.B. mit einer Pi-hole Instanz unterbinden, indem man die aufzurufenden Domains blockiert. Das geht unter Android mit z.B. AdAway und unter iOS mit z.B. AdGuard Pro.

Ich persönlich nutze alle genannten Beispiele. Also lokal zuhause Pi-hole und für unterwegs die DNS-Filterung auf Geräteebene. Meine Privatsphäre ist ein zu schützendes Gut und das geht m.E. nach weder App Entwickler noch SDKs Anbieter an. Wie siehst Du das? Hättest Du das erwartet? Schreibt Eure Meinung dazu sehr gerne in die Kommentare rein.

Vielleicht mag der BUND sich dazu einmal äußern. Warum das nötig ist und ob das nicht ggf. komplett deaktivierbar ist. Sein müsste es nicht.

Falls Dir der Beitrag half, dann freue ich mich über ein Kanal Abo und Daumen hoch. Macht es gut und bis zum nächsten mal, wenn ihr es so wollt. Ciao.


4 Comments

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

  1. Wer hat diese App kontrolliert und abgenommen?! ;D

    Wenn ich die App öffne und dort auf “…” klicke, Nutzungsbedingungen, dann glaubt man kaum, was man dort liest.

    Das was dort steht ist in Latein geschrieben.

  2. @Jux: Kann ich unter iOS nicht bestätigen. Wenn ich auf die Nutzungsbedingungen klicke, werden diese mir in deutscher Sprache angezeigt.
    Welches Betriebssystem nutzt Du?

  3. Ein aktuelles Android 12, die App stammt aus dem PlayStore. Ich muss noch erwähnen, dass ich der App keine Berechtigung für das Internet gegeben habe, sie ist in Netguard gesperrt. So könnte es sein, dass sie ggf. noch die Nutzungsbedingungen nachlädt.

    Der Text fängt so an:
    “Delectus quibusdam rerum molestiae doloremque id aut. Doloremque numquam aperiam perferendis. Ipsum minus nisi nihil….”

  4. Wer sich ständig im Panikmodus vor allem und jedem halten lässt, hört auf, sich selbst Gedanken zu machen und Dinge zu hinterfragen. Weniger ist oft mehr.