Разработчики, использовавшие популярную библиотеку Baileys для работы с WhatsApp, столкнулись с кампанией PhantomSub. Под видом форков этой открытой библиотеки распространялись 101 вредоносный пакет, которые использовали авторизованные сессии для скрытой подписки на выбранные каналы без согласия владельца. Общее число загрузок превысило 490 тысяч, в последние 30 дней загрузили 116 тысяч копий.
Baileys — это неофициальная реализация API WhatsApp, которую используют для создания ботов, систем поддержки, менеджеров чатов и прочих сервисов, требующих программного доступа к мессенджеру. Вредоносные пакеты маскировались под её форки, и после подключения аккаунта автоматически добавляли владельца на заранее определённые каналы. Некоторые варианты отключали уведомления от добавленных каналов, чтобы подписка дольше осталась незамеченной.
Исследователи выделили три основных варианта реализации вредоноса. 19 пакетов загружали список целевых каналов с внешних серверов — обычно из файлов на GitHub. Это позволяло организаторам менять направления атаки после публикации пакета. 60 пакетов хранили идентификаторы каналов в исходном коде, а 14 скрывали их с помощью Base64 и простых методов обфускации. Например, @rixxcodex/baileys получал удалённый файл со списком 23 активных каналов, а spencer-baileys запускал подписку через 90 секунд после инициализации.
Связи между пакетами указывают на скоординированную операцию. Исследователи нашли 32 канала, на которые одновременно подписывали аккаунты несколько разных пакетов. Один канал фигурировал в десяти различных npm-пакетах, а отдельные удалённые списки обслуживали сразу несколько библиотек под разными названиями.
Целевые каналы вели на индонезийские площадки, торговавшие аккаунтами TikTok, учётными записями Mobile Legends: Bang Bang, ботовскими скриптами, платными APK-файлами и услугами накрутки в соцсетях. Искусственно раздутая аудитория служила первым этапом воронки: привлечённых пользователей затем переводили в закрытые группы и личные чаты.
PhantomSub отличается от типичных атак на цепочку поставок. Здесь не было кражи токенов, криптовалюты или файлов. Целью стала эксплуатация уже авторизованного аккаунта WhatsApp для накрутки подписчиков и продвижения сомнительных площадок. Отсутствие традиционных признаков вредоноса — краж секретов, загрузки дополнительного кода, сложной обфускации — позволило пакетам дольше оставаться незамеченными. Код выглядел как обычная функция библиотеки для работы с мессенджером.
По состоянию на 28 сентября из npm удалили только 16 из 101 пакета. Среди наиболее популярных оставались ourin-baileys (свыше 130 тысяч загрузок), @nexustechpro/baileys (62 тысячи), @badzz88/baileys (52 тысячи) и @ostyado/baileys (почти 49 тысяч). Большинство пакетов появилось в августе и сентябре, исследователи продолжали фиксировать новые публикации.
Пользователям затронутых библиотек рекомендуют проверить подписки в WhatsApp, покинуть незнакомые каналы и пожаловаться на подозрительные площадки. Разработчикам нужно удалить вредоносные зависимости, пересмотреть используемые форки Baileys и отказаться от библиотек, требующих подключения личного аккаунта без явной необходимости. PhantomSub ещё раз демонстрирует уязвимость публичных зависимостей: обычная установка npm-пакета способна передать стороннему коду полный доступ авторизованного пользователя.
