Skupina výzkumníků z Technické univerzity Graz (Rakousko), dříve známá vývojem metod útoků , a , informace o nové technice analýzy prostřednictvím bočních kanálů, která umožňuje určit přesnou verzi prohlížeče, použitý operační systém, architekturu CPU a použití doplňků pro boj se skrytou identifikací.
Pro určení uvedených parametrů stačí provést v prohlížeči připravený JavaScript kód od výzkumníků. V praxi může být metoda využívána nejen jako dodatečný zdroj pro nepřímou identifikaci uživatele, ale také pro určení parametrů systémového prostředí pro cílené použití exploitů s ohledem na OS, architekturu a prohlížeč. Metoda je efektivní i při použití prohlížečů s implementací mechanismů blokování skryté identifikace, jako je Tor Browser. Zdrojové kódy prototypu kódu s implementací metody je licencován pod MIT licencí.
Určení se provádí na základě vyčlenění vzorů stavu vlastností charakteristických pro různé prohlížeče v JavaScriptu a charakteristik doby provádění operací, které závisí na specifikách fungování JIT, CPU a mechanismů alokace paměti. Určení vlastností se provádí generováním seznamu všech objektů dostupných z JavaScriptu. Jak se ukázalo, počet objektů přímo koreluje s prohlížečovým enginem a jeho verzí.
function getProperties(o) {
var result = [];
while (o !== null) {
result = result.concat(Reflect.ownKeys(o));
o = Object.getPrototypeOf(o);
}
return result;
}
Například pro Firefox je v dokumentaci uvedena podpora 2247 vlastností, zatímco skutečný počet určených vlastností včetně nedokumentovaných činí 15709 (v Tor Browser — 15639), pro Chrome je uvedeno 2698 vlastností, zatímco skutečně nabízeno je 13570 (v Chrome pro Android — 13119). Počet a hodnoty vlastností se mění z verze na verzi prohlížeče a při použití různých operačních systémů.
Hodnoty a dostupnost určitých vlastností lze využít k určení typu operačního systému. Například v Kubuntu je vlastnost window.innerWidth nastavena na hodnotu 1000, zatímco ve Windows 10 na 1001. Ve Windows je dostupná vlastnost window.navigator.activeVRDisplays, v Linuxu nikoli. Pro Android je poskytováno mnoho specifických volání, ale ne existuje window.SharedWorker. Pro identifikaci operačního systému se rovněž doporučuje použít analýzu parametrů WebGL, jejichž stav závisí na ovladačích. Kromě toho umožňuje volání WEBGL_debug_renderer_infoextension získat informace o renderovacím enginu OpenGL, který je pro každý operační systém jiný.
Pro určení CPU se aplikuje hodnocení rozdílů v čase běhu různých typových bloků kódu, jehož zpracování závisí na architektuře instrukční sady s ohledem na chování JIT (určuje se, kolik registrů CPU bude zapojeno a v jakých případech JIT vygeneruje efektivní kód s optimalizacemi a zapojením rozšířených instrukcí, a kdy nikoli). Pro určení typu systému distribuce paměti a operačního systému se rovněž měří rozdíly v čase alokace paměti pro různé struktury, podle kterých lze usuzovat na velikost bloků paměti.
Parametry stanovené během provádění skriptu se porovnávají s referenčními hodnotami charakteristickými pro předem otestované prostředí. Během kontroly vyvinutá technika umožnila přesně určit 40 různých testovacích prostředí, určit verze používaných prohlížečů, výrobce CPU, použitý operační systém a skutečnost spuštění na reálném hardwaru nebo ve virtuálním stroji.
Samostatně je zdůrazněna možnost určení prohlížečových doplňků a dokonce i jednotlivých nastavení doplňků, včetně doplňků určených k blokování metod skryté identifikace nebo aktivit v soukromém režimu prohlížení. V kontextu navržené metody se podobné doplňky stávají dalším zdrojem dat pro identifikaci. Doplňky jsou určovány prostřednictvím hodnocení deformací parametrů původního prostředí, které doplňky způsobují.
Mezi dalšími metodami identifikace lze zmínit zohlednění takových nepřímých dat, jako je , seznam podporovaných MIME typů, specifické parametry v hlavičkách ( a ), analýza nainstalovaných , dostupnost určitého Web API specifického pro grafické karty vykreslování pomocí WebGL a , s CSS, analýza charakteristik práce s a .
Zdroj: opennet.ru
