// HEISE ONLINE — HARDWARE & GADGET
Browser-Tracking per Web Audio: Das verborgene Tonstudio
Einem Entwickler ist aufgefallen, dass AliExpress das Web Audio API benutzt, um Geräte per unhörbarem Audiosignal zu erkennen. Fragt sich nur: Wie geht das?
Auch bei dem kürzlich bekannt gewordenen Fall, dass AliExpress Nutzer offenbar mittels einer Audio-Schnittstelle identifiziert, handelt es sich um sogenanntes Browser Fingerprinting. Bei diesem sehr weit verbreiteten Verfahren liest ein Skript technische Eigenschaften des Browsers sowie des Rechners aus. Dazu zählen die installierte Browserversion, das Betriebssystem, die Bildschirmauflösung, verfügbare Schriftarten, installierte Plug-ins, die Zeitzone, Spracheinstellungen und sogar hardwarespezifische Eigenschaften der Grafikkarte.
Aus solchen Datenpunkten lässt sich ein einzigartiger Fingerabdruck ermitteln, der mit hoher Wahrscheinlichkeit einen bestimmten Browser auf einem bestimmten Gerät und damit indirekt den Nutzer identifiziert. Auf diese Weise können Werbetreibende verfolgen, für welche Websites und Inhalte sich Nutzer interessieren und ihnen besser darauf zugeschnittene Anzeigen präsentieren.
Browser Fingerprinting kann aber zum Beispiel auch zur Betrugserkennung eingesetzt werden. Matt Callaghan, der die zwei Browser-Fingerprinting-Skripte von Alibaba gefunden hat, hält das durchaus für möglich. Tom Ritter, Security Engineer bei Mozilla, hat die zwei Skripte auf einer Website eingebaut. Dort kann jeder ihren Quellcode inspizieren und den Wert für den Fingerabdruck seines Systems ermitteln lassen.
Die Skripte von AliExpress machen sich zunutze, dass jeder Browser seit Jahren ein kleines virtuelles Tonstudio eingebaut hat, das Web Audio API. Eine Webseite kann darin per JavaScript Bausteine aufstellen und mit virtuellen Kabeln verbinden, so wie man in einem echten Studio Geräte zusammensteckt: hier ein Tongenerator, dort ein Messgerät, dahinter ein Lautstärkeregler, am Ende die Buchse zu den Boxen. Diese Zusammenschaltung nennt man den Audiographen. Gedacht ist das für Spiele, Online-Konferenzen oder Musikanwendungen – dafür braucht es keine Erlaubnis des Nutzers, sonst müsste jede zweite Seite nachfragen.
Genau so ein Studio hat AliExpress aufgebaut, und zwar gleich zweimal. Verantwortlich waren zwei JavaScript-Dateien namens collina.js und fireyejs.js. Sie waren obfuskiert, also absichtlich unleserlich gemacht: Variablennamen durch Buchstabensalat ersetzt, Code verschachtelt, damit niemand auf den ersten Blick erkennt, was da passiert.
Die Kette, die diese Skripte aufgebaut haben, besteht aus fünf Bausteinen. Den Anfang macht ein Tongenerator, der eine Sägezahnwelle erzeugt – eine schroffe, obertonreiche Wellenform, die sich als Testsignal eignet, weil sie die Rechenwege im Browser ordentlich beansprucht. Dahinter steht ein Analysebaustein, der laufend anzeigt, wie sich das Signal auf die Frequenzen verteilt, vergleichbar mit der Pegelanzeige an einer Stereoanlage.
An einem weiteren Baustein kann JavaScript die einzelnen Messwerte direkt abgreifen und in Zahlen weiterverarbeiten. Danach folgt ein Lautstärkeregler, der auf null steht – ab hier ist das Signal also nicht mehr hörbar. Was das Skript messen wollte, hatte es nach dem dritten Baustein komplett: Die Zahlen, aus denen der Fingerabdruck berechnet wird, entstehen beim Rechnen im Browser, nicht beim Abspielen.
Ganz am Ende steckt aber noch das virtuelle Kabel in der Buchse zur Soundkarte. Und das hat Folgen, obwohl kein Ton zu hören ist: Betriebssystem und Bluetooth-Stack sehen nur, dass eine Verbindung zur Tonausgabe offen ist, nicht ob dort tatsächlich etwas klingt. Für sie galt also: „Der PC spielt gerade Musik“. Multipoint-Kopfhörer, die zwischen Rechner und Handy hin- und herschalten, geben in so einem Fall dem angeblich aktiven Gerät den Vorzug – und blieben deshalb am PC hängen. Stummschalten half nicht, denn ein Mute-Knopf regelt die Lautstärke nur herunter, zieht das Kabel aber nicht heraus.
Ob Schlamperei oder Absicht: Ohne dieses überflüssige „Kabel“ hätte die Messung keinerlei Spur hin