Geschrieben von

Firefox 85 gegen Supercookies

Data Analytics

Nach der Einführung von ETP hat Firefox bei der Version 72 noch Mechanismen eingebaut, um gegen Fingerprinting vorzugehen. Mit Version 85 geht Firefox weiter gegen Tracker vor.

TLTR

Ab Firefox 85 sollen Caches und Netzwerkverbindungen nach dem Besuche einer Website partitioniert werden. Heißt: Ressourcen werden nicht mehr zwischen Websites geteilt. Wird das gleiche Bild auf Website A und Website B eingesetzt und hat der Nutzer zuerst Website A besucht, dann wird dieses Bild nicht aus dem Browser-Cache für Website B zur Verfügung gestellt. Damit verhindert Firefox, dass Caches für Tracking-Zwecke missbraucht werden. Caches und Netzwerkverbindungen werden somit nur auf die Website beschränkt, auf der sie erstellt wurden.

Was sind Supercookies?

Supercookies kommen als Alternative zu Cookies zum Einsatz. Dabei wird die Wiedererkennung des Nutzers nicht über die “normalen Cookies” erstellt, sondern es werden andere Techniken und Browser-Teile benutzt, um die Wiedererkennung zu ermöglichen. Meist ist das nicht transparent, weshalb es auch sehr schwer für den Nutzer möglich ist Supercookies zu löschen. Auf Basis von Supercookies wurden im Laufe der Jahre verschiedene Tracking-Möglichkeiten entwickelt, gegen die nun Firefox vorgeht.

Bekannte Techniken, worauf Supercookies aufgebaut werden können, sind:

  • Web Storage bzw. DOM Storage ermöglicht das Speichern von Schlüssel-Werte-Paaren über localStorage (über Sessions hinweg) oder sessionStorage (Session-basiert).
  • Flash-Cookies (auch Local Shared Object, kurz LSO, genannt) sind am Flash-Player gebunden und werden über diesen gesetzt. Firefox 85 entfernt auch das Flash-Plugin aus dem Browser.
  • Über ETags, einer Angabe beim HTTP-Caching.
  • Über HSTS-Tags, gegen die auch ITP vorgeht.
  • Auf Basis von Favicons.

Mit Firefox 85 soll die Tracking-fähig von cachebasierten Supercookies stark reduziert werden. Wie? Über Partitionierung von Caches und Netzwerkverbindungen.

Partitionierung von Caches und Netzwerkverbindungen

Firefox nennt hier als Beispiel den Bild-Cache, um die Funktionsweise der Partitionierung zu erklären:

  • Ein Nutzer kommt auf Website A. Dabei wird ein Bild geladen.
  • Das Bild wird zuerst aus dem Netzwerk geladen.
  • Das Bild wird dann im Bild-Cache abgelegt.
  • Der selbe Nutzer surft nun weiter und geht auf Website B.
  • Auf Website B ist das gleiche Bild eingebunden.
  • Nun wird das Bild nicht mehr aus dem Netzwerk geladen.
  • Stattdessen wird es aus dem lokalen Bild-Cache des Browsers geladen.

Großer Vorteil davon ist, dass Seiten für den Nutzer schneller laden und es wird an Bandbreite gespart. Es gibt jedoch Tracker, die darüber Nutzer im Web verfolgen können. Im oben genannten Beispiel könnte ein Tracker ein Supercookie erstellen. Wie? Beim erstmaligen Abspeichern des Bildes im Cache wird eine Kennung mit abgespeichert. Beim erneuten Zugriff auf dieses Bild, aber auf einer anderen Website, kann diese Kennung wieder abgerufen werden. Dadurch ist ein Tracking über mehrere Websites hinweg möglich.

Firefox möchte nun diese Tracker eliminieren, aber gleichzeitig die Vorteile des Caches genießen. Dabei wird nun partitioniert. Sprich: Für jede Website benutzt Firefox ab Version 85 einen eigenen Bild-Cache. Besucht der Nutzer nochmal Website A, dann wird das Bild aus dem Cache geladen. Auf diesen Cache kann aber Website B nicht zugreifen. Besucht der Nutzer Website B, dann wird das gleiche Bild nochmal über das Netzwerk zunächst geladen, um es dann beim erneuten Besuch von Website B aus dem Website-B-Bild-Cache zu laden.

Neben dem Bild-Cache nennt Firefox aber weitere Caches, die für Tracking-Zwecke benutzt werden können. Deshalb wird auch hier partitioniert:

  • Bild-Cache
  • HTTP-Cache
  • Favicon-Cache
  • HSTS-Cache
  • OCSP-Cache
  • Style-Sheet-Cache
  • Font-Cache
  • DNS-Cache
  • HTTP-Authentifizierungs-Cache
  • Alt-Svc-Cache
  • TLS-Zertifikat-Cache

Neben Caches werden aber auch Netzwerkverbindungen partitioniert, “um Nutzer darüber hinaus vor verbindungsbasiertem Tracking zu schützen”. Dazu gehören:

  • Gepoolte Verbindungen
  • Prefetch-Verbindungen
  • Preconnect-Verbindungen
  • Spekulative Verbindungen
  • TLS-Sitzungskennungen