Группа исследователей из Mozilla, Айовского университета и Калифорнийского университета опубликовала итоги изучения применения на сайтах кода для скрытой идентификации пользователей. Под скрытой идентификации понимается генерация идентификаторов на основе косвенных данных о работе браузера, таких как разрешение экрана, список поддерживаемых MIME-типов, специфичные параметры в заголовках (HTTP/2 и HTTPS), анализ установленных плагинов и шрифтов, доступность определённых Web API, специфичные для видеокарт особенности отрисовки при помощи WebGL и Canvas, манипуляции с CSS, учёт значений по умолчанию, сканирование сетевых портов, анализ особенностей работы с мышью и клавиатурой.
Изучение 100 тысяч самых популярных сайтов по рейтингу Alexa показало, что на 9040 из них (10.18%) применяется код для скрытой идентификации посетителей. При этом если рассматривать тысячу самых популярных сайтов, то подобный код был выявлен в 30.60% случаев (266 сайтов), а среди сайтов, занимающих в рейтинге места с тысячного по десятитысячное, в 24.45% случаев (2010 сайтов). В основном скрытая идентификация применяется в скриптах, предоставляемых внешними сервисами для борьбы с мошенничеством и отсеиванием ботов, а также рекламными сетями и системами отслеживания перемещения пользователей.
Для выявления кода, осуществляющего скрытую идентификацию, был разработан инструментарий FP-Inspector, код которого предложен под лицензией MIT. В инструментарии используются методы машинного обучения в сочетании со статическим и динамическим анализом кода JavaScript. Утверждается, что применение машинного обучения позволило заметно повысить точность выявления кода для скрытой идентификации и выявить на 26% больше проблемных скриптов по сравнению с заданной вручную эвристикой.
Многие из выявленных скриптов идентификации отсутствовали в типовых списках блокировки Disconnect, Adsafe, DuckDuckGo, Justuno и EasyPrivacy. После отправки уведомления разработчиками списка блокировки EasyPrivacy был создан отдельный раздел для скриптов скрытой идентификации. Кроме того, FP-Inspector позволил выявить некоторые новые способы использования Web API для идентификации, которые ранее не встречались на практике.
Например, было выявлено использование для идентификации информации о раскладке клавиатуры (getLayoutMap), проверки остаточных данных в кэше (при помощи API Performance API анализируются задержки при отдаче данных, что позволяет определить обращался ли пользователь к определённому домену или нет, а также открывалась ли ранее страница), учёт выставленных в браузере полномочий (информация о доступе к Notification, Geolocation и Camera API), оценка наличие специализированных периферийных устройств и редких датчиков (геймпады, шлемы виртуальной реальности, сенсоры приближения), проверка наличия специализированных для определённых браузеров API и различий поведения API (AudioWorklet, setTimeout, mozRTCSessionDescription), использование API AudioContext для определения особенностей звуковой системы.
В ходе исследования также был изучен вопрос нарушения штатной функциональности сайтов в случае применения методов защиты от скрытой идентификации, приводящих к блокированию сетевых запросов или ограничению доступа к API. Было показано, что выборочное ограничение API только для скриптов, выявленных FP-Inspector, приводит к меньшим нарушениям в работе, чем в случае более жёсткого общего ограничения вызовов API, потенциально приводящих к утечке данных, применяемого в Brave и Tor Browser.
• Source: https://umariqbal.com/papers/fpinspector-sp2021.pdf
• Source: https://uiowa-irl.github.io/FP-Inspector/
• Source: https://github.com/easylist/easylist/issues/created_by/UmarIqbal
• Source: https://easylist.to/easylist/easyprivacy.txt
Изучение 100 тысяч самых популярных сайтов по рейтингу Alexa показало, что на 9040 из них (10.18%) применяется код для скрытой идентификации посетителей. При этом если рассматривать тысячу самых популярных сайтов, то подобный код был выявлен в 30.60% случаев (266 сайтов), а среди сайтов, занимающих в рейтинге места с тысячного по десятитысячное, в 24.45% случаев (2010 сайтов). В основном скрытая идентификация применяется в скриптах, предоставляемых внешними сервисами для борьбы с мошенничеством и отсеиванием ботов, а также рекламными сетями и системами отслеживания перемещения пользователей.
Для выявления кода, осуществляющего скрытую идентификацию, был разработан инструментарий FP-Inspector, код которого предложен под лицензией MIT. В инструментарии используются методы машинного обучения в сочетании со статическим и динамическим анализом кода JavaScript. Утверждается, что применение машинного обучения позволило заметно повысить точность выявления кода для скрытой идентификации и выявить на 26% больше проблемных скриптов по сравнению с заданной вручную эвристикой.
Многие из выявленных скриптов идентификации отсутствовали в типовых списках блокировки Disconnect, Adsafe, DuckDuckGo, Justuno и EasyPrivacy. После отправки уведомления разработчиками списка блокировки EasyPrivacy был создан отдельный раздел для скриптов скрытой идентификации. Кроме того, FP-Inspector позволил выявить некоторые новые способы использования Web API для идентификации, которые ранее не встречались на практике.
Например, было выявлено использование для идентификации информации о раскладке клавиатуры (getLayoutMap), проверки остаточных данных в кэше (при помощи API Performance API анализируются задержки при отдаче данных, что позволяет определить обращался ли пользователь к определённому домену или нет, а также открывалась ли ранее страница), учёт выставленных в браузере полномочий (информация о доступе к Notification, Geolocation и Camera API), оценка наличие специализированных периферийных устройств и редких датчиков (геймпады, шлемы виртуальной реальности, сенсоры приближения), проверка наличия специализированных для определённых браузеров API и различий поведения API (AudioWorklet, setTimeout, mozRTCSessionDescription), использование API AudioContext для определения особенностей звуковой системы.
В ходе исследования также был изучен вопрос нарушения штатной функциональности сайтов в случае применения методов защиты от скрытой идентификации, приводящих к блокированию сетевых запросов или ограничению доступа к API. Было показано, что выборочное ограничение API только для скриптов, выявленных FP-Inspector, приводит к меньшим нарушениям в работе, чем в случае более жёсткого общего ограничения вызовов API, потенциально приводящих к утечке данных, применяемого в Brave и Tor Browser.
• Source: https://umariqbal.com/papers/fpinspector-sp2021.pdf
• Source: https://uiowa-irl.github.io/FP-Inspector/
• Source: https://github.com/easylist/easylist/issues/created_by/UmarIqbal
• Source: https://easylist.to/easylist/easyprivacy.txt