Открытая вкладка AliExpress может занять аудиоканал компьютера, даже если на странице царит полная тишина. Разработчик обнаружил на маркетплейсе скрытые WebAudio-механизмы, которые генерируют сигнал с нулевой громкостью, анализируют результат обработки, который становится одним из параметров цифрового отпечатка браузера и устройства. О работе системы никто бы не узнал, если бы странная активность не начала мешать Bluetooth-наушникам. На находку также обратили внимание зарубежные СМИ.
На необычное поведение обратил внимание автор расследования под ником m-c-tech. Bluetooth-наушники с поддержкой multipoint были одновременно подключены к компьютеру и смартфону. Гарнитура обычно без проблем переключалась между устройствами, однако через несколько секунд после открытия AliExpress музыка со смартфона переставала играть в наушниках. Стоило закрыть страницу AliExpress, как звук сразу возвращался. При этом отключение звука на сайте, в Firefox или во всей Windows ничего не меняло.
Никакого скрытого ролика или музыкального плеера разработчик не нашёл. На странице отсутствовали активные элементы <audio> и <video>, вызовы воспроизведения и работающая Media Session. Проверка Web Audio API дала другой результат: AliExpress создавал сразу два объекта AudioContext, переводил оба в рабочее состояние и подключал к системному аудиовыходу. Запускали механизм сильно обфусцированные скрипты collina.js и fireyejs.js, размещённые в каталоге AWSC инфраструктуры Alibaba. Автор связывает AWSC с браузерными средствами безопасности и противодействия злоупотреблениям.
Оба скрипта строят похожую цепочку обработки. Генератор создаёт пилообразный сигнал, анализатор измеряет результат, затем данные проходят через дополнительный обработчик и узел GainNode с громкостью, установленной в ноль. Пользователь ничего не слышит, но браузер продолжает обрабатывать поток, поскольку цепочка остаётся подключённой к AudioContext.destination. В конфигурации исследователя подобная активность удерживала аудиоканал ПК и не давала multipoint-наушникам нормально переключиться обратно на смартфон.
Скрытая обработка звука не означает прослушивание через микрофон. WebAudio-фингерпринтинг работает по другому принципу: сайт создаёт заранее известный сигнал и измеряет числовой результат после обработки средствами браузера и компьютера. Небольшие различия между процессорами, операционными системами, браузерами и аудиобиблиотеками способны давать разные значения. Сам по себе аудиоотпечаток не обязательно позволяет узнать конкретное устройство, но в сочетании с другими характеристиками повышает точность идентификации браузера.
AliExpress собирает гораздо больше параметров. Анализ collina.js и fireyejs.js выявил обращения к Canvas и WebGL, сведения о размере экрана и окна браузера, плотности пикселей, количестве процессорных потоков, доступной памяти, браузерных плагинах и поддерживаемых аудио- и видеоформатах. Код также изучает поведение WebRTC, производительность браузера, движения мыши, касания, прокрутку, фокус страницы, движение и ориентацию устройства, а также признаки браузерной автоматизации. В скриптах присутствуют функции сериализации и шифрования результатов, а также отправки данных в телеметрические сервисы Alibaba через fetch() и sendBeacon().
Подобный набор параметров подходит как для фингерпринтинга, так и для антифрод-систем. Маркетплейсам приходится бороться с ботами, автоматическими покупками, массовым созданием аккаунтов, парсингом, мошенничеством с платежами, отзывами, купонами и акциями для новых покупателей. При этом назначение конкретного отпечатка AliExpress остаётся неизвестным. Автор исследования не смог определить, сколько времени Alibaba хранит полученные сведения, связывает ли набор характеристик с учётной записью и применяет ли результат для отслеживания одного посетителя между сессиями или другими сервисами компании. Клиентский код подтверждает сбор и передачу данных, но не раскрывает дальнейшую обработку на серверах.
Разработчик Firefox Том Риттер после публикации провёл отдельный разбор аудиомеханизма и пришёл к важному уточнению. Современный Firefox значительно снизил эффективность WebAudio-фингерпринтинга ещё в версии 118. По телеметрии Mozilla, 99,24% пользователей получили один из трёх основных результатов, причём оставшиеся различия в основном зависели от архитектуры процессора. Риттер называет WebAudio почти бесполезным самостоятельным способом идентификации в Firefox, хотя комплексный отпечаток из множества других параметров по-прежнему способен различать пользователей значительно лучше. Mozilla также отдельно описывает встроенную в Firefox защиту от фингерпринтинга.
Brave тоже развивает защиту от подобных методов. В августе разработчики браузера усилили защиту от фингерпринтинга через WebGL и WebGPU: браузер скрывает реальные сведения о производителе и модели графики и вносит случайные изменения в список поддерживаемых расширений. Поэтому утверждать, что все браузеры кроме Firefox и Brave полностью беззащитны перед механизмом AliExpress, нельзя. Риттер предполагает наличие защиты WebAudio также в Chrome и Safari, хотя отдельно не проверял современные реализации.
Автор первоначального расследования попробовал заблокировать collina.js и fireyejs.js через uBlock Origin. Главная страница AliExpress продолжила работать, скрытые AudioContext перестали появляться, а Bluetooth-наушники снова нормально переключались между устройствами. Исследователь предупреждает, что скрипты могут участвовать в антифрод-проверках, поэтому блокировка способна вызвать дополнительные CAPTCHA или проблемы при входе и оплате.
Самой любопытной частью истории стал способ обнаружения скрытого механизма. Беззвучная обработка не показывала привычный медиаплеер и никак не выдавала себя на странице. След цифрового отпечатка проявился совершенно в другом месте: код достаточно активно использовал аудиосистему, чтобы изменить поведение физических Bluetooth-наушников. Странный сбой гарнитуры в итоге раскрыл гораздо более широкую систему сбора характеристик браузера и устройства.