È stata identificata una vulnerabilità nel motore browser Gecko (CVE-2026-6770), che consente di generare identificatori unici per il monitoraggio dell'apertura di diversi siti da un unico browser. Il problema si manifesta in tutti i browser basati su Firefox, incluso Tor Browser, e funziona anche in modalità di navigazione privata. Gli identificatori sono validi all'interno del processo corrente del browser e vengono azzerati dopo il riavvio del browser. La vulnerabilità è stata corretta nelle versioni Firefox 150/140.10.0 e Tor Browser 15.0.10.
Per generare l'identificatore è sufficiente creare, attraverso l'API IndexedDB, la stessa sequenza di database su siti diversi, dopodiché valutare l'ordine in cui questi database sono elencati a seguito della chiamata al metodo indexedDB.databases(). Per diverse istanze del browser, l'ordine di enumerazione dei database varierà, ma per una singola istanza sarà ripetitivo. Questo ordine rimane fino al riavvio del browser e si riproduce indipendentemente dal sito web aperto.
Ad esempio, dopo aver creato il database «a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,r» in un'istanza di Firefox, il metodo indexedDB.databases() restituirà sempre «g,c,p,a,l,f,n,r,d,j,b,o,h,e,m,i,k», mentre in un'altra istanza restituirà «j,b,o,h,e,m,i,k,f,n,r,d,g,c,p,a,l». Creando 16 database si possono ottenere circa 44 bit di entropia per l'identificazione. La generazione dell'identificatore non è influenzata dalla pulizia degli archivi locali del browser e primo dell'aggiornamento della catena dei nodi Tor premendo il pulsante «Nuova identità» nel Tor Browser. Il metodo può anche essere utilizzato per identificare gli utenti nella finestra di navigazione privata.
La vulnerabilità è causata da una peculiarità nell'implementazione dell'API IndexedDB, in cui l'ordine di enumerazione dei database è influenzato dalla disposizione delle strutture interne, specifica per ogni istanza del processo del browser. L'ordine degli elementi nell'elenco dei database restituito dal metodo indexedDB.databases() non dipende dai nomi dei database o dall'ordine di creazione degli stessi, ma dalla posizione nella tabella hash globale degli UUID hash interni associati ai nomi dei file in cui i database sono memorizzati sul disco.
Fonte: opennet.ru
