Хабрахабр

Фингерпринтинг через рекламные баннеры? Теперь это обычное дело

Вчера на Stack Overflow задали странный вопрос: почему загрузка страницы Stack Overflow инициирует аудиоконтент? Что за звук на текстовом сайте?

Скриншот из инструментов разработчика:

Ответ оказался интереснее, чем можно было предположить.
Сам автор внимательнее изучил трафик и разобрался, что запросы связаны со скриптом:

17. https://static.adsafeprotected.com/sca. 95.js 4.

…и появляются только в том случае, если на странице присутствует определённый рекламный баннер, который поставляется через рекламную сеть Google AdSense.

Читатели сначала подумали, что это первоапрельская шутка. Но один из разработчиков не пожалел времени и внимательно разобрался, что конкретно делает вышеупомянутый скрипт.

Оказалось, что баннер пытается использовать Audio API в качестве одного из сотен фрагментов данных, которые собирает о браузере, пытаясь осуществить его фингерпринтинг. Выяснилась очень интересная вещь. Хотя браузер блокирует передачу данных конкретно по Audio API, но он не блокирует большую часть остальных данных, так что владельцы баннера успешно выполняют фингерпринтинг и, возможно, деанонимизацию пользователей. Это нужно, чтобы однозначно идентифицировать браузер на различных сайтах, независимо от настроек конфиденциальности.

Они используются только в совокупности для создания уникального «отпечатка» пользователя, который затем баннер передаёт вместе с рекламным ID при записи аналитики для рекламодателя. Обнаруженная функциональность совершенно точно не нужна для работы баннера, то есть она не используется для включения или отключения каких-то интерактивных функций.

Например, этот фрагмент определяет разрешение дисплея и параметры accessibility в системе:

function "==typeof matchMedia&&a239.a341.a77 ("
all and(min--moz - device - pixel - ratio: 0) and(min - resolution: .001 dpcm) ")},function(){return"
function "==typeof matchMedia&&a239.a341.a77 ("
all and(-moz - images - in -menus: 0) and(min - resolution: .001 dpcm) ")},function(){return"
function "==typeof matchMedia&&a239.a341.a77 ("
screen and(-ms - high - contrast: active) and(-webkit - min - device - pixel - ratio: 0), (-ms - high - contrast: none) and(-webkit - min - device - pixel - ratio: 0) ")},function(){return"
function "==typeof matchMedia&&a239.a341.a77 ("
screen and(-webkit - min - device - pixel - ratio: 0) ")},function(){return"

Проверка наличия конкретных криптографических API:

return "function" == typeof MSCredentials && a239.a341.a66(MSCredentials)
}, function() {
return "function" == typeof MSFIDOSignature && a239.a341.a66(MSFIDOSignature)
}, function() {
return "function" == typeof MSManipulationEvent && a239.a341.a66(MSManipulationEvent)
}, function() {

Получение списка установленных шрифтов:

return "object" == typeof document && a239.a341.a68("fonts", document.fonts)

Определение возможностей Audio API:

return "undefined" != typeof window && "undefined" !== window.StereoPatternNode && a239.a341.a66(window.StereoPannerNode)

Определение специфических API в мобильных браузерах:

return "function" == typeof AppBannerPromptResult && a239.a341.a66(AppBannerPromptResult)

Проверка поддержки DRM для конкретной платформы.

}, function() {
return !!a239.a341.a72() && a239.a341.a66(a239.a341.a72().webkitGenerateKeyRequest) && a239.a341.a66(a239.a341.a72().webkitCancelKeyRequest) && a239.a341.a66(a239.a341.a72().webkitSetMediaKeys) && a239.a341.a66(a239.a341.a72().webkitAddKey)
}, function() {

И сотни других параметров, которые в совокупности составляют уникальный «портрет» браузера. Ему присваивается уникальный ID, который потом используется для отслеживания действий пользователя в интернете.

Защититься от такого сканирования системы помогает блокировщик рекламы. Похоже, методы фингерпринтинга уже вышли из разряда «тёмных практик» и открыто применяются крупнейшими рекламодателями и рекламными сетями.

Это минимальное, но не достаточное требование для защиты от трекинга. В такой ситуации блокировка рекламы становится не просто удобной опцией, а обязательным требованием для нормальной работы в интернете.

На их сайте работает инструмент Panopticlick, который эмулирует действия враждебного трекера и определяет, насколько уникален отпечаток вашего браузера. Об использовании рекламодателями фингерпринтинга давно предупреждал Фонд электронных рубежей.

Это уникальный отпечаток среди всех 208 788 пользователей, которые проходили тестирование на сайте за последние 45 дней. Например, таблица вверху соответствует реальным результатам сканирования браузера с выявлением 17,67 бит идентифицирующей информации.

Такие скрипты обнаружены на многих крупных сайтах в интернете. И это десктопный браузер, а на мобильном устройстве фингерпринтинг ещё проще, потому что скрипты сканируют данные с сенсоров телефона. Сканирование сенсоров помогает блокировать ботов, а также используется для трекинга и аналитики.

Им не нравится такая ситуация и они думают, как с ней бороться. Представители Stack Overflow сказали, что они в курсе проблемы. Но факт в том, что баннеры с трекингом могут встретиться вам абсолютно на любом сайте.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть