Группа исследователей из Mozilla, Айовского университета и Калифорнийского университета
опубликовала итоги изучения применения на сайтах кода для скрытой идентификации пользователей. Под скрытой идентификации понимается генерация идентификаторов на основе косвенных данных о работе браузера, таких как
разрешение экрана, список поддерживаемых MIME-типов, специфичные параметры в заголовках (
HTTP/2 и
HTTPS), анализ установленных
плагинов и шрифтов, доступность определённых Web API, специфичные для видеокарт
особенности отрисовки при помощи WebGL и
Canvas,
манипуляции с CSS,
учёт значений по умолчанию,
сканирование сетевых портов, анализ особенностей работы с
мышью и
клавиатурой.
Изучение 100 тысяч самых популярных сайтов по рейтингу Alexa показало, что на 9040 из них (10.18%) применяется код для скрытой идентификации посетителей. При этом, если рассматривать тысячу самых популярных сайтов, то подобный код был выявлен в 30.60% случаев (266 сайтов), а среди сайтов, занимающих в рейтинге места с тысячного по десятитысячное, в 24.45% случаев (2010 сайтов). В основном скрытая идентификация применяется в скриптах, предоставляемых внешними сервисами для
борьбы с мошенничеством и отсеиванием ботов, а также рекламными сетями и системами отслеживания перемещения пользователей.
https://www.opennet.ru/opennews/pics...1598507269.png
Для выявления кода, осуществляющего скрытую идентификацию, был разработан инструментарий
FP-Inspector, код которого
предложен под лицензией MIT. В инструментарии используются методы машинного обучения в сочетании со статическим и динамическим анализом кода JavaScript. Утверждается, что применение машинного обучения позволило заметно повысить точность выявления кода для скрытой идентификации и выявить на 26% больше проблемных скриптов по сравнению с заданной вручную эвристикой.
Многие из выявленных скриптов идентификации отсутствовали в типовых списках блокировки
Disconnect,
Adsafe, DuckDuckGo,
Justuno и
EasyPrivacy. После отправки
уведомления разработчиками списка блокировки EasyPrivacy был
создан отдельный раздел для скриптов скрытой идентификации. Кроме того, FP-Inspector позволил выявить некоторые новые способы использования Web API для идентификации, которые ранее не встречались на практике.
Например, было выявлено использование для идентификации информации о раскладке клавиатуры (getLayoutMap), остаточных данных в кэше (при помощи API Performance анализируются задержки при отдаче данных, что позволяет определить обращался ли пользователь к определённому домену или нет, а также открывалась ли ранее страница), выставленных в браузере полномочий (информация о доступе к Notification, Geolocation и Camera API), наличии специализированных периферийных устройств и редких датчиков (геймпады, шлемы виртуальной реальности, сенсоры приближения). Кроме того, зафиксирован учёт при идентификации наличия специализированных для определённых браузеров API и различий поведения API (AudioWorklet, setTimeout, mozRTCSessionDescription), а также использование API AudioContext для определения особенностей звуковой системы.
В ходе исследования также был изучен вопрос нарушения штатной функциональности сайтов в случае применения методов защиты от скрытой идентификации, приводящих к блокированию сетевых запросов или ограничению доступа к API. Было показано, что выборочное ограничение API только для скриптов, выявленных FP-Inspector, приводит к меньшим нарушениям в работе, чем при использовании в Brave и Tor Browser более жёстких общих ограничений вызовов API, потенциально приводящих к утечке данных.