Компания Яндекс, как сообщается, использовала свои Android-приложения для идентификации пользовательских сеансов в браузерах, даже если пользователи применяли режимы инкогнито или очищали файлы cookie. Эта практика затрагивала пользователей, посещавших сайты с интегрированной системой веб-аналитики Яндекс.Метрика.
Согласно опубликованной информации, мобильные приложения Яндекса для Android, включая Яндекс.Карты, Яндекс.Навигатор, Яндекс.Поиск, Яндекс Go и Яндекс.Браузер, создавали локальный сетевой интерфейс на устройстве пользователя (127.0.0.1). Этот интерфейс принимал запросы по различным протоколам от JavaScript-кода, встроенного в сайты с Яндекс.Метрикой.
При открытии такого сайта в браузере, скрипты Яндекс.Метрики отправляли запросы с метаданными и cookie на локальные порты, открытые мобильными приложениями. В приложениях эти браузерные сеансы затем связывались с идентификаторами пользователя и устройства, доступными приложениям, такими как учетные записи Яндекса или рекламные идентификаторы Android (AAID). Таким образом, компания могла идентифицировать пользователя даже при использовании мер по обеспечению конфиденциальности.
Отмечается, что данный метод идентификации мог представлять угрозу не только из-за сбора данных Яндексом, но и из-за потенциальной возможности использования открытых локальных портов вредоносными приложениями для отслеживания активности пользователей.
Утверждается, что Яндекс применял подобный метод с 2017 года. JavaScript-код Яндекс.Метрики устанавливал HTTP- или HTTPS-соединение с localhost по сетевым портам 29009, 29010, 30102 и 30103. Обращения отправлялись на сайт yandexmetrica.com, доменное имя которого резолвилось в IP-адрес 127.0.0.1. Информация о сетевых портах, на которых мобильные приложения Яндекса должны были открыть слушающие сокеты, подгружалась динамически через запрос к хосту startup.mobile.yandex.net. Сервер также передавал параметр first_delay_seconds, содержащий задержку перед запуском сетевых сервисов (приложения начинали принимать соединения не сразу после установки, а примерно через три дня). В ответ на HTTP-запрос мобильное приложение возвращало набор данных, включающий идентификаторы в сервисах Яндекса, системные UUID и AAID. JavaScript-код Яндекс.Метрики переправлял полученные идентификаторы на сервер mc.yango.com.
Данные методы, по имеющимся сведениям, работали в Chrome и Edge для Android, а также в Firefox. В браузерах DuckDuckGo и Brave отправка запросов к localhost блокировалась или требовала ручного подтверждения операции. Сообщается, что в Chrome 137, выпущенном в конце мая, была добавлена защита от некоторых техник, использовавшихся в этом методе.
Для борьбы с подобными практиками разрабатывается спецификация PNA (Private Network Access), а также ее вторая версия LNA (Local Network Access), направленные на ограничение доступа сайтов к ресурсам во внутренней сети.