Gli sviluppatori della libreria fingerprintjs, che consente di generare identificatori del browser in modo passivo basandosi su segni indiretti come la risoluzione dello schermo, le peculiarità di WebGL e l'elenco dei plug-in e dei caratteri installati, hanno presentato un nuovo metodo di identificazione che si basa sulla valutazione delle applicazioni standard installate dall'utente e funziona tramite il controllo del supporto di ulteriori gestori di protocolli nel browser. Il codice del script che implementa il metodo è pubblicato con licenza MIT.
La verifica avviene attraverso l'analisi del binding dei gestori a 32 applicazioni popolari. Ad esempio, identificando la presenza nel browser di gestori di schemi URL come telegram://, slack:// e skype://, è possibile dedurre la presenza delle applicazioni telegram, slack e skype nel sistema e utilizzare queste informazioni come segno nella generazione dell'identificatore di sistema. Poiché l'elenco dei gestori è identico per tutti i browser nel sistema, l'identificatore non cambia al cambiare del browser e può essere utilizzato in Chrome, Firefox, Safari, Brave, Yandex Browser, Edge e persino nel Tor Browser.
Il metodo consente di generare identificatori a 32 bit; non offre una grande precisione se utilizzato singolarmente, ma ha senso come un attributo aggiuntivo in combinazione con altri parametri. Un notevole svantaggio di questo metodo è la visibilità del tentativo di identificazione per l'utente: nella generazione dell'identificatore sulla pagina dimostrativa proposta, appare una piccola finestra in basso a destra, in cui gli handler vengono elencati per un tempo notevole. Questo svantaggio non si manifesta nel Tor Browser, dove l'identificatore può essere calcolato in modo invisibile.
Per determinare la presenza di un'applicazione, lo script tenta di aprire in una finestra popup un link associato a un handler esterno; successivamente, il browser presenta un dialogo che offre di aprire il contenuto nell'applicazione associata, se l'applicazione controllata è presente, oppure mostra una pagina di errore se l'applicazione non è presente nel sistema. Attraverso un'analisi sequenziale dei tipici handler esterni e il ritorno di errori, si può dedurre la presenza dei programmi verificati nel sistema.
In Chrome 90 for Linux, the method did not work, and the browser displayed the standard confirmation dialog for all handler checks (the method works in Chrome for Windows and macOS). In Firefox 88 for Linux, both in normal mode and incognito mode, the script identified the presence of installed add-ons from the list, with an identification accuracy of 99.87% (35 matches out of 26,000 tests conducted). In the Tor Browser running on the same system, an identifier was generated that matched the test in Firefox.
Interestingly, the additional protection in the Tor Browser played a cruel trick and turned into a way to conduct identification without the user's notice. Due to the disabling of confirmation dialogs for using external handlers in Tor Browser, verification requests could be opened in an iframe instead of a popup window (to distinguish between the presence and absence of handlers, the same-origin policy blocks access to error pages and allows access to about:blank pages). Due to flood protection, verification in Tor Browser takes noticeably longer (10 seconds per application).
Fonte: opennet.ru
