Група изследователи от Техническия университет в Грац (Австрия), известни преди с разработването на методи за атака , и , информация за новата техника за анализ през странични канали, която позволява определяне на точната версия на браузъра, използваната операционна система, архитектурата на CPU и използването на добавки за борба със скритото идентифициране.
За определяне на посочените параметри е достатъчно изпълнението на подготвен от изследователите JavaScript код в браузъра. На практика методът може да се използва не само като допълнителен източник за косвено идентифициране на потребителя, но и за определяне на параметрите на системната среда за целево прилагане на експлоити, вземайки предвид ОС, архитектурата и браузъра. Методът е ефективен, включително при използването на браузъри с реализации на механизми за блокиране на скрито идентифициране, като Tor Browser. Изходните текстове на прототипа на кода с реализация на метода под лиценз MIT.
Определянето се извършва на базата на извличане на отличителни за различни браузъри шаблони на състоянието на свойства в JavaScript и характеристики на времето за изпълнение на операции, зависещи от особеностите на работата на JIT, CPU и механизмите за управление на паметта. Определянето на свойствата се извършва чрез генериране на списък на всички обекти, достъпни от JavaScript. Както се оказа, броят на обектите директно коррелира с браузърния двигател и неговата версия.
function getProperties(o) {
var result = [];
while (o !== null) {
result = result.concat(Reflect.ownKeys(o));
o = Object.getPrototypeOf(o);
}
return result;
}
Например, за Firefox в документацията е посочена поддръжка на 2247 свойства, докато реалният брой на определените свойства, включително недокументираните, е 15709 (в Tor Browser — 15639); за Chrome са обявени 2698 свойства, а реално предлага 13570 (в Chrome за Android — 13119). Броят и стойностите на свойствата се променят от версия на версия на браузъра и при използване на различни операционни системи.
Стойностите и наличието на определени свойства могат да се използват за определяне на типа на операционната система. Например, в Kubuntu свойството window.innerWidth е зададено на 1000, докато в Windows 10 е 1001. В Windows е достъпно свойството window.navigator.activeVRDisplays, докато в Linux го няма. За Android се предлагат множество специфични повиквания, но липсва window.SharedWorker. За идентифициране на операционната система се предлага също използването на анализа на параметрите на WebGL, чието състояние зависи от драйверите. Освен това, повикването на WEBGL_debug_renderer_infoextension позволява да се получи информация за двигателя за рендериране OpenGL, който е различен за всяка операционна система.
За определяне на CPU се прилага оценка на разликите във времето на изпълнение на различни типови кодови блокове, обработката на които зависи от архитектурата на наборите от инструкции с оглед на поведението на JIT (определя се колко регистри на CPU ще бъдат ангажирани и в кои случаи JIT ще генерира ефективен код с оптимизации и включване на разширени инструкции, а в кои не). За определяне на типа на системата за разпределение на паметта и операционната система също се измерва разликата във времето за заделяне на памет за различни структури, по които може да се съди за размера на блоковете памет.
Определените по време на изпълнение на скрипта параметри се сравняват с еталонни стойности, характерни за предварително тествани среди. По време на проверката разработената техника позволи точно да се идентифицират 40 различни тестови среди, определяйки версиите на използваните браузъри, производителя на CPU, използваната операционна система и факта на стартиране на реално оборудване или виртуална машина.
Отделно се отбелязва възможността за определяне на браузърни добавки и дори на отделни настройки на добавките, включително на добавки, предназначени за блокиране на методи за скрита идентификация или активността на режима на частно сърфиране. В контекста на предложения метод подобни добавки стават още един източник на данни за идентификация. Добавките се определят чрез оценка на изкривяванията на параметрите на изходната среда, внесени от добавките.
От другите методи за идентификация може да се отбележи вземането под внимание на такива косвени данни като , списък на поддържаните MIME типове, специфични параметри в заглавките ( и ), анализ на инсталираните , наличността на определени Web API, специфични за видео картите визуализации с WebGL и , с CSS, анализ на особеностите при работа с и .
Източник: opennet.ru
