Вредоносные npm-пакеты угрожают разработчикам WhatsApp механизмом удаленного уничтожения данных

information security

Команда Socket Threat Research обнаружила два опасных пакета в репозитории npm, целенаправленно атакующих разработчиков интеграций WhatsApp API. Пакеты naya-flore и nvlore-hsc, опубликованные пользователем nayflore (zzcch@gmail[.]com), маскируются под библиотеки для работы с WhatsApp, но содержат скрытый "выключатель", способный удалить все файлы в системе разработчика. За месяц пакеты собрали свыше 1 100 загрузок и остаются доступными в npm-репозитории. Исследователи направили запросы на удаление пакетов и блокировку аккаунта в службу безопасности npm.

Описание

Атака эксплуатирует рост популярности WhatsApp Business API, который используют более 200 миллионов бизнесов глобально. Разработчики часто устанавливают сторонние библиотеки вроде whatsapp-web.js или baileys для создания чат-ботов и систем автоматизации. Злоумышленники имитируют функциональность таких инструментов, внедряя разрушительный механизм в код, отвечающий за аутентификацию.

Удаленное уничтожение через проверку номеров

Ядро атаки - функция requestPairingCode, критичная для подключения к WhatsApp. При вызове она сначала декодирует замаскированную ссылку на GitHub-репозиторий (aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL25hdmFMaW5oL2RhdGFiYXNlL21haW4vc2Vza2EuanNvbg==), загружает базу номеров телефонов и проверяет, есть ли номер разработчика в "белом списке". Если номер отсутствует, система выполняет команду rm -rf *, рекурсивно удаляя все файлы в текущей директории. При этом функция возвращает корректный код аутентификации, маскируя разрушение под штатную операцию.

База номеров размещена на GitHub Pages, что придает ей видимость легитимности. Анализ показал, что в "белом списке" преобладают индонезийские номера. Параметр pairKey в сигнатуре функции служит элементом социальной инженерии - он имитирует реальные WhatsApp-библиотеки, не влияя на срабатывание "выключателя".

Спящий механизм сбора данных

Оба пакета содержат функцию generateCreeds для отправки данных устройства (номер телефона, идентификатор, статус) на сервер https://api[.]verylinh[.]my[.]id/running. Ключ передачи ZnVja19nb2Q (base64-кодировка) указывает на подготовленную инфраструктуру. Однако вызовы этой функции закомментированы, что свидетельствует о стратегическом решении злоумышленников сосредоточиться на уничтожении данных. Для номеров вне "белого списка" эксфильтрация бесполезна - система уничтожается до ее выполнения. Функциональность остается "спящей" угрозой: код можно активировать в будущих версиях.

Дополнительные риски и маскировка

В naya-flore обнаружен жестко прописанный GitHub-токен (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), предоставляющий доступ к приватным репозиториям. Хотя токен не используется в текущей вредоносной логике, его наличие требует мониторинга активности. Пакеты искусно имитируют легальные библиотеки: структура классов, функция makeSocket с параметрами noise и routingInfo копируют реализацию популярного решения baileys. Разработчики могут успешно тестировать интеграцию, не подозревая об угрозе до развертывания с "неразрешенным" номером.

Тот же автор опубликовал пакеты nouku-search, very-nay, naya-clone, node-smsk и @veryflore/disc, пока не проявляющие вредоносной активности. Эксперты рекомендуют рассматривать их как потенциально опасные.

Последствия для экосистемы

Инцидент подчеркивает уязвимость цепочки поставок open-source. npm, второй по величине репозиторий после PyPI, остается мишенью для атак на доверие разработчиков. Уникальность этой кампании - в комбинации целевого воздействия (разработчики мессенджеров), отложенного разрушения и минимального следа. По данным Socket, 82% атак на npm в 2024 году используют маскировку под легитимные пакеты.

Индикаторы компрометации

Malicious Packages

  • naya-flore
  • nvlore-hsc

Network Indicators

  • https://api.verylinh.my.id/running
  • https://raw.githubusercontent.com/navaLinh/database/main/seska.json

Threat Actor Identifiers

  • npm alias: nayflore
  • Registration email: idzzcch@gmail.com
  • GitHub PAT: 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
Комментарии: 0