Проверьте WhatsApp прямо сейчас. 101 npm-пакет тайно подписывал аккаунты на чужие каналы

4312
Проверьте WhatsApp прямо сейчас. 101 npm-пакет тайно подписывал аккаунты на чужие каналы

Обычный форк Baileys оказался машиной скрытой подписки.

image

Разработчики, подключавшие WhatsApp к сторонним версиям популярной библиотеки Baileys, могли незаметно стать подписчиками чужих каналов. Исследователи обнаружили 101 пакет в npm, который использовал авторизованную сессию WhatsApp для скрытой подписки без согласия владельца аккаунта. Совокупное число загрузок достигло примерно 490 тыс., причём 116 тыс. пришлись только на последние 30 дней.

Кампания получила название PhantomSub. Вредоносные пакеты маскировались под форки Baileys, открытой библиотеки с неофициальной реализацией API WhatsApp. Разработчики используют Baileys для создания ботов, систем поддержки, менеджеров чатов и других сервисов, которым требуется работа с WhatsApp через программный код.

После подключения аккаунта изменённая библиотека могла автоматически подписать владельца на заранее выбранные каналы. Часть пакетов дополнительно отключала уведомления от добавленных каналов, поэтому посторонняя подписка могла долго оставаться незамеченной. Авторы кампании получали искусственно раздутую аудиторию, а крупное число подписчиков создавало впечатление популярности и повышало доверие к сомнительным площадкам.

Исследователи нашли три основных варианта вредоносного кода. 19 пакетов загружали список нужных каналов с внешних серверов, главным образом из файлов на GitHub. Такой механизм позволял владельцам кампании менять цели уже после установки пакета, не публикуя новую версию в npm. Ещё 60 пакетов хранили идентификаторы каналов непосредственно в исходном коде, а 14 скрывали адреса и идентификаторы с помощью Base64 и других простых способов обфускации.

В одном случае пакет @rixxcodex/baileys получал удалённый файл со списком 23 активных каналов. Пакет spencer-baileys хранил закодированные приглашения и начинал подписку спустя 90 секунд после запуска. Некоторые разработчики прятали нежелательную логику в файлах, названия которых не вызывали подозрений при беглом просмотре кода.

Связи между пакетами показывают, что речь идёт не о наборе полностью независимых экспериментов. Исследователи обнаружили 32 канала, на которые подписывали аккаунты сразу несколько пакетов. Один канал использовали десять различных npm-пакетов, а отдельные удалённые списки одновременно обслуживали несколько библиотек под разными названиями.

Часть каналов вела на индонезийские площадки, где продавали аккаунты TikTok, учётные записи Mobile Legends: Bang Bang, скрипты для ботов, платные APK-файлы и услуги по накрутке социальных сетей. В некоторых случаях искусственно увеличенное число подписчиков служило первым этапом воронки, после чего потенциальных покупателей переводили в закрытые группы и личные чаты.

PhantomSub отличается от многих привычных атак на цепочку поставок. Исследователи не нашли признаков, что основная задача кампании заключалась в краже токенов, криптовалюты или файлов с компьютеров. Главной целью стала эксплуатация уже авторизованного WhatsApp-аккаунта для накрутки аудитории и продвижения сомнительных каналов.

Отсутствие типичных функций вредоносного ПО одновременно помогало пакетам дольше оставаться незамеченными. Защитные системы часто ищут кражу секретов, загрузку дополнительной нагрузки, сложную обфускацию или подозрительные сетевые соединения. Код PhantomSub мог выглядеть как обычная функция библиотеки для работы с WhatsApp, хотя фактически выполнял действия от имени владельца аккаунта.

По состоянию на 28 сентября из npm удалили только 16 из 101 обнаруженного пакета. Среди наиболее популярных оставались ourin-baileys с более чем 130 тыс. загрузок, @nexustechpro/baileys с 62 тыс., @badzz88/baileys с 52 тыс. и @ostyado/baileys почти с 49 тыс. Большинство новых вредоносных пакетов появилось в августе и сентябре, причём исследователи продолжали фиксировать новые публикации.

Пользователям затронутых библиотек рекомендуют проверить список подписок в WhatsApp, покинуть незнакомые каналы и пожаловаться на подозрительные площадки. Разработчикам стоит удалить вредоносные зависимости, проверить используемые форки Baileys и отказаться от библиотек, которые требуют подключения личного аккаунта без понятной необходимости. История PhantomSub в очередной раз показывает риск публичных зависимостей: обычная установка чужого npm-пакета способна передать стороннему коду права уже авторизованного пользователя.