AliExpress usa WebAudio per il fingerprinting e disturba il Bluetooth?

Una ricerca indipendente richiama l'attenzione sull'utilizzo di Web Audio silenziosi compatibili con tecniche di fingerprinting da parte di un noto sito di e-commerce. Su alcune cuffie Bluetooth multipoint l'attività può impedire il passaggio dell'audio dal PC allo smartphone.

Un ricercatore indipendente ha scoperto un’anomalia che merita un approfondimento. Un paio di cuffie Bluetooth multipoint può essere contemporaneamente collegato al PC così come allo smartphone. Normalmente il PC ha la priorità nella riproduzione audio, mentre il telefono può riprodurre l’audio quando non è in riproduzione nulla sul PC.

Di solito ascolto la musica sul mio telefono, ma con le notifiche o YouTube in riproduzione tramite il PC; questo funziona senza problemi finché non apro una pagina di AliExpress su Firefox oppure con Chrome“, scrive l’autore dell’indagine. Poco dopo aver caricato la homepage di AliExpress, l’audio del telefono smette di essere riprodotto; chiudendo la scheda di AliExpress il problema si risolve immediatamente. Curioso!

La spiegazione arriva soltanto osservando l’uso delle Web Audio API, interfaccia JavaScript che consente a una pagina di creare sorgenti sonore, filtri, analizzatori, mixer ed elaborazioni DSP senza passare necessariamente da un elemento multimediale HTML. Cos’ha a che fare tutto questo con AliExpress? Seguiteci.

AliExpress crea due AudioContext anche se la pagina non riproduce audio

Il ricercatore ha iniziato a controllare che cosa accadesse realmente nel browser durante l’apertura di AliExpress.

La prima sorpresa è che il problema non dipende da un video nascosto o da un normale elemento HTML <audio>: nella pagina entrano invece in funzione due istanze di AudioContext, l’oggetto principale attraverso cui JavaScript accede alle Web Audio API.

Per individuarle, l’autore ha intercettato la creazione degli AudioContext e le chiamate usate per collegare tra loro i vari nodi audio. In questo modo è riuscito anche a risalire agli script responsabili. Il primo AudioContext nasce da collina.js; il secondo da fireyejs.js, anch’esso distribuito attraverso l’infrastruttura AWSC di Alibaba.

I file in questione sono fortemente offuscati, ma l’osservazione a runtime permette di vedere ciò che fanno senza dover necessariamente ricostruire ogni funzione del sorgente.

Entrambi creano un grafo Web Audio e, dettaglio decisivo per spiegare il problema delle cuffie, lo collegano a AudioContext.destination: il punto che rappresenta l’uscita audio usata dal browser.

Generazione di un segnale e successiva analisi, ma l’utente non sente nulla

Uno degli script crea un OscillatorNode, cioè un generatore di forme d’onda sintetiche. Non c’è quindi nessun file audio da scaricare: il browser produce autonomamente il segnale attraverso calcoli matematici.

Il segnale passa poi attraverso nodi destinati alla sua elaborazione e analisi: tra questi compare un AnalyserNode, che permette a JavaScript di leggere informazioni sulla forma d’onda e sul suo contenuto in frequenza, e uno ScriptProcessorNode, vecchia interfaccia Web Audio oggi accantonata ma ancora supportata dai browser per ragioni di compatibilità.

Alla fine del percorso compare un GainNode con guadagno impostato a zero: il segnale viene creato ed elaborato ma non deve diventare udibile. Per chi sta davanti al PC la pagina resta perfettamente silenziosa.

È proprio questo dettaglio a fornire una spiegazione del comportamento osservato con le cuffie multipoint: il PC può continuare a mantenere aperto il proprio percorso di riproduzione anche se, materialmente, alle cuffie non arriva alcun suono percepibile.

Perché AliExpress genera un segnale audio che nessuno deve ascoltare?

Resta la domanda più importante. Se il sito non deve riprodurre alcun suono, perché creare un oscillatore, elaborarne l’uscita e analizzarne i risultati?

Una possibile risposta arriva dal browser fingerprinting: Web Audio può infatti essere usato per ricavare caratteristiche del browser e del dispositivo attraverso piccole differenze nel modo in cui un segnale sintetico viene elaborato. Implementazioni DSP, precisione dei calcoli in virgola mobile, resampling e altri dettagli interni possono produrre valori leggermente differenti da una macchina all’altra.

Lo script genera un segnale di cui conosce esattamente le caratteristiche, lo fa elaborare dal browser e poi misura il risultato. Non serve che l’utente ascolti qualcosa: l’interesse sta proprio nei numeri prodotti durante l’elaborazione.

L’analisi mostra infatti che l’audio rappresenta soltanto una parte delle informazioni prese in considerazione: nei due script compaiono controlli su Canvas e WebGL, dimensioni dello schermo, viewport, devicePixelRatio, numero di processori logici, memoria dichiarata dal dispositivo, codec supportati e varie proprietà del browser.

Ci sono inoltre verifiche riconducibili al rilevamento dell’automazione e dei bot, insieme a segnali derivati dall’interazione dell’utente: mouse, touch, focus e scorrimento della pagina. Presi singolarmente, molti di questi dati dicono poco. Combinati tra loro possono invece costruire un profilo tecnico piuttosto dettagliato del client.

Il test con uBlock Origin conferma il ruolo dei due script

L’autore ha fatto infine una prova molto semplice: ha impedito a Firefox di caricare collina.js e fireyejs.js utilizzando filtri specifici di uBlock Origin.

Con i due script bloccati, gli AudioContext osservati in precedenza non compaiono più e, sulla configurazione utilizzata per l’esperimento, scompare anche l’anomalia delle cuffie Bluetooth multipoint. È un’indicazione importante perché collega direttamente il problema non alla homepage di AliExpress in senso generico, ma al codice eseguito dai due moduli JavaScript tirati in ballo dal ricercatore.

Bloccarli in modo permanente non è però necessariamente privo di conseguenze. Se fanno parte dei sistemi di valutazione del rischio di Alibaba, il sito potrebbe reagire con CAPTCHA aggiuntivi, richieste di verifica o problemi durante operazioni sensibili come login e pagamento.

La parte più curiosa della vicenda è proprio questa. Le tecniche di fingerprinting lavorano normalmente senza produrre alcun segnale percepibile dall’utente: qualche funzione JavaScript raccoglie valori, li combina e li invia al server. Qui, invece, l’uso delle Web Audio API porta a un effetto collaterale concreto, impattando negativamente sul funzionamento di un apparato acquistato e utilizzato dall’utente.

Fingerprinting, antifrode e privacy: il nodo GDPR

Perché un sito di commercio elettronico dovrebbe raccogliere un numero così elevato di caratteristiche del browser e del dispositivo? Una spiegazione plausibile riguarda i sistemi antifrode e anti-bot: combinando Web Audio, Canvas, WebGL, caratteristiche hardware e modalità d’interazione, una piattaforma può cercare di distinguere un browser reale da un ambiente automatizzato, individuare sessioni anomale oppure associare più richieste allo stesso dispositivo anche quando altri identificatori sono assenti.

Il problema nasce quando tecniche del genere diventano abbastanza precise da consentire l’identificazione o la riconoscibilità di un utente o del suo terminale: in quel caso entrano pienamente in gioco le regole europee sulla protezione dei dati.

Il fingerprinting, infatti, non è una scappatoia che permette di aggirare gli obblighi previsti per cookie e tecnologie analoghe. L’EDPB (Comitato europeo per la protezione dei dati) ha chiarito che l’articolo 5(3) della direttiva ePrivacy non riguarda soltanto i cookie e che il device fingerprinting rientra nel suo ambito tecnico quando comporta l’accesso a informazioni presenti nel terminale dell’utente; in assenza di una delle specifiche eccezioni previste, la regola generale è quella del consenso.

Se poi i dati raccolti permettono di distinguere o seguire una persona fisica, trova applicazione anche il GDPR: il titolare deve individuare una base giuridica, informare adeguatamente l’interessato, rispettare i principi di necessità, proporzionalità e minimizzazione e spiegare finalità e modalità del trattamento.

Nel caso di AliExpress, il solo esame del JavaScript dimostra la raccolta di numerosi segnali tecnici, ma non basta da solo per stabilire quale base giuridica invochi, quanto a lungo conservi il fingerprint o come lo utilizzi lato server.

Nel frattempo, segnalazioni simili a quella descritta cominciano a rincorrersi anche su Hacker News.

Ti consigliamo anche

Link copiato negli appunti