Ein einziger Rechenbefehl im Browser genügt inzwischen, um das Betriebssystem hinter einem gefälschten User-Agent zu enttarnen. Seit Chromium 148 liefert die JavaScript-Funktion Math.tanh je nach System minimal verschiedene Ergebnisse. Für die Bot-Abwehr ist das ein Geschenk, für den Datenschutz ein neues Problem.

drweb.de als bevorzugte Quelle auf Google hinzufügenQualitätsgeprüfte Inhalte direkt in Google News & DiscoverJetzt hinzufügen

Browser-Fingerprinting kommt seit Version 148 der Chromium-Engine ohne Cookies und ohne Tracking-Skripte aus: Der Browser muss nur eine einzige Zahl ausrechnen. Der Wert von Math.tanh(0.8) fällt auf Windows, macOS und Linux jeweils anders aus, und schon die Abweichung in der letzten Nachkommastelle verrät das echte System.

Das Wichtigste in Kürze

  • Seit Chromium 148 greift Math.tanh auf die Mathematik-Bibliothek des Betriebssystems zu, statt einen eigenen, einheitlichen Wert zu berechnen.
  • Windows (UCRT), macOS (libsystem_m) und Linux (glibc) erzeugen dabei minimal verschiedene Ergebnisse, meist um eine Einheit in der letzten Stelle.
  • Ein als macOS getarnter Client, der Linux-Mathematik liefert, widerspricht damit seinem eigenen User-Agent.
  • Betroffen sind auch sieben CSS-Trigonometrie-Funktionen und Teile der Web-Audio-Schnittstelle.

Warum rechnet ein Browser auf jedem System anders?

Weiße Maske mit „macOS“-Schild und orangefarbenem Notizzettel „in Wahrheit: Linux“
Chrome 148 ersetzt V8s Math.tanh-Berechnung durch std::tanh der Systembibliothek, was zu unterschiedlichen Ergebnissen je Betriebssystem führt

Bis Chrome 147 hat die V8-Engine Math.tanh selbst berechnet und auf jedem Betriebssystem bitgenau denselben Wert geliefert. Mit Chromium 148 hat ein einzelner Commit diese Eigenimplementierung durch den Aufruf std::tanh ersetzt, der die Mathematik-Bibliothek des Wirtssystems anzapft.

Der Grund für die Abweichung steckt im Standard IEEE 754. Dieser schreibt zwar vor, wie Fließkommazahlen gespeichert werden, verlangt aber für transzendente Funktionen wie den Tangens hyperbolicus keine exakt gerundeten Ergebnisse. Diese Toleranz nutzt jede Bibliothek anders, mit eigenen Näherungspolynomen, die Genauigkeit gegen Tempo tauschen.

Der Anti-Bot-Dienstleister Scrapfly hat die Werte gemessen[1]: glibc, Apples libsystem_m und Windows‘ UCRT weichen bei rund einem Viertel aller Eingaben voneinander ab, meist um eine Einheit in der letzten Stelle. Aus dieser Winzigkeit wird eine verlässliche Betriebssystem-Signatur, weil Mathematik deterministisch und kaum zu fälschen ist.

Vom Canvas zur Mathematik: eine alte Angriffsklasse

Neu ist der Fundort, nicht das Prinzip. Schon 2012 hat Canvas-Fingerprinting winzige Rendering-Unterschiede zwischen Grafikkarten und Treibern ausgenutzt, später sind WebGL und die AudioContext-Schnittstelle dazugekommen. Math.tanh reiht sich in diese Klasse ein: ein Merkmal, das allein aus Rechenunterschieden entsteht und sich passiv auslesen lässt, während Plattformen ohnehin darum ringen, automatisierte Konten von echten zu unterscheiden.

Das Wettrüsten dahinter wiederholt sich mit fataler Regelmäßigkeit: Eine Funktion wird aus gutem Grund verändert, hier für schnellere und sauberer gerundete Mathematik, und schafft nebenbei ein neues Erkennungsmerkmal. Während sich Scraper hinter Millionen privater IP-Adressen verstecken, suchen Schutzdienste nach Signalen, die niemand fälschen kann, und sperren verdächtige Clients rigoros aus.

Ein gefälschter User-Agent schützt niemanden mehr, wenn schon eine einzige Rechenoperation die Wahrheit über das System ausplaudert. Betreiber gewinnen ein starkes Signal gegen Bots und handeln sich zugleich eine Einwilligungsfrage nach dem TDDDG ein.

— Markus Seyfferth, Chefredakteur Dr. Web
Ein Rechenbefehl verrät das Betriebssystem
Wie Chromium 148 aus Math.tanh einen Fingerabdruck macht
Bis Chrome 147
Eigene Bibliothek in der V8-Engine, bitgenau identisch auf jedem System. Kein OS-Signal.
Ab Chromium 148
Aufruf von std::tanh greift auf die Mathematik-Bibliothek des Systems zu. OS-abhängig.
148
ab dieser Chromium-Version tritt der Effekt auf
~25 %
der Eingaben liefern je System andere Werte
1 ULP
typische Differenz, nur in der letzten Stelle
Math.tanh(0.8) je Betriebssystem
Linux
glibc
0.6640367702678491
macOS
libsystem_m
0.664036770267849
Windows
UCRT (ucrtbase.dll)
0.6640367702678489

Was bedeutet das für deutsche Website-Betreiber?

Für Betreiber in Deutschland ist die Technik zweischneidig. Browser-Fingerprinting gilt aufsichtsrechtlich als Zugriff auf Informationen im Endgerät und fällt damit unter § 25 des TDDDG, das dafür grundsätzlich eine Einwilligung verlangt, ganz wie beim Cookie.

Ob die reine Bot-Abwehr unter die enge Ausnahme für zwingend erforderliche Funktionen fällt, ist juristisch umstritten. Schon eine frühere Stellungnahme der EU-Datenschutzaufsichten von 2014 behandelt Geräte-Fingerprinting wie Cookies, unabhängig vom Sicherheitszweck.

Konkret heißt das für die Praxis: Klären Sie mit Ihrem WAF- oder Bot-Management-Anbieter, ob dessen Erkennung Merkmale wie Math.tanh auswertet, und halten Sie das Verfahren im Verzeichnis der Verarbeitungstätigkeiten fest. Für maximale Rechtssicherheit gehört die Einwilligungsfrage auf den Tisch der Rechtsabteilung, bevor die Technik stillschweigend mitläuft.

Für Nutzer, die Tracking meiden wollen, bleibt wenig Handhabe, weil der Fingerabdruck ohne Skript und ohne Cookie entsteht und sich selbst datensparsame Browser aus unserem Browser-Vergleich so noch auseinanderhalten lassen. Anti-Fingerprinting-Härtung greift hier nur bedingt, solange die Engine überhaupt auf die System-Mathematik zugreift.

Quelle

[1] Scrapfly: „Your Browser Does Math Differently on Every OS, and Anti-Bot Systems Read the Bits“

Mehr Newshunger?

4,5 19 Bewertungen

Wie hat Ihnen dieser Artikel gefallen?