Dezvoltatorii bibliotecii fingerprintjs, care permite generarea de identificatori de browser în mod pasiv pe baza unor semne indirecte, cum ar fi rezoluția ecranului, caracteristicile WebGL, listele pluginurilor și fonturilor instalate, au prezentat o nouă metodă de identificare, bazată pe evaluarea aplicațiilor standard instalate la utilizator și funcționează prin verificarea suportului în browser pentru procese suplimentare de protocol. Codul scriptului cu implementarea metodei a fost publicat sub licența MIT.
Verificarea se realizează pe baza analizei legării proceselor la 32 de aplicații populare. De exemplu, determinând existența în browser a proceselor pentru schemele URL telegram://, slack:// și skype://, se poate concluziona despre prezența aplicațiilor telegram, slack și skype în sistem, utilizând aceste informații ca semn în generarea identificatorului sistemului. Deoarece lista proceselor este identică pentru toate browserele din sistem, identificatorul nu se schimbă atunci când se schimbă browserul și poate fi folosit în Chrome, Firefox, Safari, Brave, Yandex Browser, Edge și chiar în Tor Browser.
Metoda permite generarea de identificatori de 32 de biți, adică, individual, nu permite obținerea unei precizii mari, dar are sens ca un semn suplimentar în combinație cu alte parametrii. Un dezavantaj semnificativ al metodei este vizibilitatea încercării de identificare pentru utilizator — la generarea identificatorului pe pagina de demonstrație propusă, în colțul din dreapta jos se deschide o fereastră mică, dar evident vizibilă în care sunt enumerate procesele pentru o perioadă considerabilă. Acest dezavantaj nu se manifestă în Tor Browser, unde identificatorul poate fi calculat discret.
Pentru a determina existența aplicației, scriptul încearcă să deschidă într-o fereastră pop-up un link asociat unui proces extern, după care browserul afișează un dialog cu propunerea de a deschide conținutul în aplicația asociată, dacă aplicația verificată este prezentă, sau afișează o pagină de eroare, dacă aplicația nu este în sistem. Prin iterarea secvențială a proceselor externe standard și analiza erorilor de returnare, se poate concluziona despre existența programelor verificate în sistem.
În Chrome 90 pentru Linux, metoda nu a funcționat și browserul a afișat un dialog standard de confirmare a operațiunii la toate încercările de a verifica handler-ul (în Chrome pentru Windows și macOS, metoda funcționează). În Firefox 88 pentru Linux, atât în modul normal, cât și în modul incognito, scriptul a identificat prezența aplicațiilor suplimentare instalate din listă, iar acuratețea identificării a fost evaluată la 99.87% (35 de corelații similare din 26 de mii de teste efectuate). În Tor Browser, lansat pe aceeași sistem, a fost generat un identificator care coincide cu testul din Firefox.
Interesant este că protecția suplimentară din Tor Browser a avut o întorsătură nefericită și s-a transformat într-o oportunitate de a efectua identificarea fără ca utilizatorul să observe. Din cauza dezactivării dialogurilor de confirmare pentru utilizarea handler-elor externe în Tor Browser, cererile de verificare s-au putut deschide în iframe, nu în fereastră popup (pentru a separa prezența și absența handler-elor, se folosește faptul că regulile same-origin blochează accesul la paginile cu erori și permit accesul la paginile about:blank). Din cauza protecției împotriva flood-ului, verificarea în Tor Browser durează semnificativ mai mult timp (10 secunde pentru aplicație).
Sursa: opennet.ro
