Идентификация через анализ внешних обработчиков протоколов в браузере
15 мая 2021 года
Разработчики библиотеки fingerprintjs, позволяющей генерировать идентификаторы браузера в пассивном режиме на основе косвенных признаков, таких как разрешение экрана, особенностей WebGL, списки установленных плагинов и шрифтов, представили новый метод идентификации, основанный на оценке установленных у пользователя типовых приложений и работающий через проверку поддержки в браузере дополнительных обработчиков протоколов. Код скрипта с реализацией метода опубликован под лицензий MIT.
Проверка осуществляется на основе анализа привязки обработчиков к 32 популярным приложениями. Например, определив наличие в браузере обработчиков схем URL telegram://, slack:// и skype:// можно сделать вывод о наличии в системе приложений telegram, slack и skype, и использовать данную информацию в качестве признака при генерации идентификатора системы. Так как список обработчиков одинаков для всех браузеров в системе идентификатор не меняется при смене браузера и может применяться в Chrome, Firefox, Safari, Brave, Yandex Browser, Edge и даже в Tor Browser.
Метод позволяет генерировать 32-битные идентификаторы, т.е. имеет смысл как дополнительный признак в сочетании с другими параметрами. Большим минусом также является заметность попытки идентификации для пользователя (за исключением Tor Browser) - при генерации идентификатора на предложенной демонстрационной странице в правом нижнем углу открывается небольшое, но явно заметное окно в котором достаточно долго перебираются обработчики.
Для определения наличия приложения скрипт пытается открыть во всплывающем окне ссылку, связанную с внешним обработчиком, после чего браузер выводит диалог с предложением открыть содержимое в связанном приложении, если проверяемое приложение присутствует, или выдаёт код ошибки, если приложения нет в системе. Через последовательный перебор типовых внешних обработчиков и анализ возвращения кода ошибки можно сделать вывод о наличии в системе проверяемых программ.
В Chrome 90 для Linux метод не сработал и браузер на все попытки проверки обработчика вывел типовой диалог подтверждение операции (в Chromе для Windows и macOS метод работает). В Firefox 88 для Linux, как в обычном режиме, так и в режиме инкогнито, скрипт определил наличие установленных дополнительных приложений из списка, а точность идентификации оценена в 99.87% (35 подобных совпадений из 26 тысяч проведённых тестов).
В запущенном на той же системе Tor Browser был сгенерирован идентификатор, совпадающий с тестом в Firefox. При этом из-за отключения в Tor Browser диалогов подтверждения использования внешних обработчиков проверочные запросы оказалось можно открывать в iframe, а не в popup-окне , что в отличие от Firеfox и Chrome сделало проверку незаметной для пользователя (для разделения ситуация наличия и отсутствия обработчиков использовалось то, что правила same-origin блокируют доступ к страницам с ошибкой и разрешают к страницам about:blank). Из-за защиты от флуда проверка в Tor Browser занимает заметно дольше времени (10 секунд на приложение), но из-за незаметности процесса для пользователя время генерации индентификатора не так важно как в других бразуерах.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.