Пользователь устанавливал бесплатный VPN, нажимал «Подключиться» и видел стандартное уведомление о защите. За сотнями разных названий скрывалась единая инфраструктура, через которую проходил весь браузерный трафик. Исследователи связали 737 расширений Chrome с одной сетью, ориентированной на русскоязычных пользователей.
Расширения распространялись минимум через 40 аккаунтов разработчиков и в сумме получили 75 486 установок. Chrome Web Store показывает установки округленными диапазонами, поэтому это сумма отображаемых значений, а не точное число пользователей. Из найденных дополнений 274 выдавали себя за известные VPN-сервисы и системы приватности: Proton VPN, NordVPN, Surfshark, AdGuard VPN, ExpressVPN, Windscribe, TunnelBear, Cloudflare 1.1.1.1, AmneziaVPN и AntiZapret.
Русскоязычная направленность прослеживалась во всей сети. Из 734 расширений начальной выборки 690 содержали кириллицу в названии или описании либо упоминали сервисы, заблокированные в России. Среди 522 пакетов, которые исследователи разобрали подробно, русскоязычные описания присутствовали в 520 случаях.
Основная функция большинства расширений — переадресация соединений Chrome. Из 522 изученных пакетов 520 настраивали фиксированный SOCKS5-прокси на порту 1082 через встроенный chrome.proxy. Список исключений содержал только локальные адреса вроде localhost и 127.0.0.1, поэтому через прокси отправлялись запросы со всех вкладок. Раздельной маршрутизации для отдельных сайтов не было.
SOCKS5 сам по себе не делает расширение вредоносным. Браузерные VPN и прокси обычно используют такой механизм для маршрутизации. Проблема была в комплексе других признаков: массовом копировании известных брендов, общей инфраструктуре, скрытых способах поиска серверов, неработающих платных локациях и идентичных технических шаблонах у разных издателей.
Прокси-сервер в такой конфигурации получает привилегированный обзор соединений. Оператор видит IP-адрес пользователя, адреса назначения, доступные серверу метаданные TLS-соединений и полное содержимое HTTP-запросов. SOCKS5 дополнительного шифрования не обеспечивал. Исследование не выявило расшифровку HTTPS-трафика, поэтому утверждать о чтении защищённых страниц оснований нет.
Часть расширений избегала оставлять домен прокси в обычных DNS-запросах. В 104 пакетах адрес сначала разрешался через DNS-over-HTTPS Google или Cloudflare, затем Chrome получал готовый IP. В одном опубликованном пакете обнаружилась внутренняя инструкция на русском, где разработчикам велели не передавать домен напрямую в chrome.proxy.settings и использовать только IP после разрешения имени.
Ещё 66 расширений меняли связанную инфраструктуру без выпуска новой версии. Код отправлял запрос на заданный адрес, отслеживал HTTP-перенаправление и загружал конфигурацию с нового домена. Это позволяло переводить установленные копии на другую площадку без обновления через магазин.
Следы внутри пакетов помогли связать множество внешне независимых дополнений. В 360 из 522 изученных расширений поставщиком премиального доступа назывался Myxa VPN или «Муха VPN». В 43 пакетах сохранился одинаковый путь сборки Windows с каталогом myxa-work. Общие счётчики «Яндекс Метрики», массовая регистрация доменов, идентичные фрагменты кода и совпадения в инфраструктуре дополнили картину. Обнаружено не менее 102 связанных доменов.
Платные функции добавили несоответствий. Расширения предлагали премиум-серверы в Японии, Сингапуре, Канаде, Австралии и Турции, однако проверка всех 200 соответствующих имён на 40 доменах не обнаружила ни одной A-записи. В некоторых пакетах проверка лицензии принимала любую непустую строку, а в десяти расширениях секрет для формирования токена находился прямо в коде.
Расширение Burёnka VPN рекламировало серверы в семи странах, хотя 15 записей внутри пакета ссылались на адрес 0.0.0.0. Обработчик подключения был запрограммирован возвращать ошибку при любой попытке. Пользователь видел полноценный интерфейс, а рабочей возможности подключиться к заявленным серверам в коде не существовало.
Исследователи нашли признаки попыток пройти проверку Chrome Web Store с более простой версией кода и добавить дополнительные механизмы позже. В одном расширении разработчики случайно оставили архив предыдущей версии, что позволило напрямую сравнить сборки. Механизм удалённой конфигурации появился после первоначального одобрения при сохранении прежнего набора разрешений. Постпроверочные обновления обнаружены у 49 расширений из 18 аккаунтов с 8076 установками.
Десять пакетов содержали документы для обоснования разрешений перед проверяющими Chrome Web Store. Девять файлов оказались идентичными, хотя принадлежали разным издателям. В них утверждалось, что данные не отправляются внешним серверам и удалённый код не используется. Это противоречит правилам магазина, запрещающим выдавать продукт за другую компанию и скрывать реальную функциональность.
К моменту сбора данных Google удалил 221 из 737 найденных дополнений. 516 оставались опубликованными с суммарным показателем 58 318 установок. Анализ охватывал клиентский код и открытую инфраструктуру, поэтому доказательств сохранения или передачи пользовательского трафика нет. Подтверждены иная схема маршрутизации, копирование известных брендов, несуществующие премиум-серверы, общая инфраструктура и изменения кода после первоначальной проверки.
