Уязвимость в npm: злоумышленники внедрили многоступенчатого вора данных в популярные пакеты React Native

information security

Инцидент, произошедший 16 марта 2026 года, наглядно демонстрирует, насколько хрупкой может быть безопасность цепочки поставок программного обеспечения (software supply chain). В этот день в два популярных пакета для платформы React Native, распространяемые через реестр npm, была внедрена сложная многоступенчатая вредоносная программа. Атака напрямую затронула разработчиков, системы непрерывной интеграции и сборки, поскольку для активации угрозы было достаточно выполнить стандартную команду установки пакета. Между тем, конечная цель злоумышленников оказалась гораздо шире простого тестирования среды - восстановленный код представляет собой полноценного вора учетных данных и криптокошельков для Windows с функциями закрепления в системе.

Описание

Под удар попали пакеты "react-native-country-select@0.3.91" и "react-native-international-phone-number@0.11.8", опубликованные под аккаунтом AstrOOnauta. Согласно данным npm, совокупное количество их загрузок за неделю достигло почти 30 тысяч, а за месяц - около 135 тысяч, что указывает на значительный потенциальный масштаб инцидента. Зловредный код был добавлен в релизы, вышедшие 16 марта с разницей в несколько минут, в то время как предыдущие версии от 13 марта оставались чистыми. Этот паттерн указывает на скоординированное компрометирование нескольких проектов одного издателя в течение одного дня.

Механизм атаки был построен на использовании стандартных возможностей npm. Злоумышленники добавили в файл "package.json" хуки предустановки (preinstall), которые автоматически запускают скрипт "install.js" еще до завершения обычного процесса установки. Таким образом, вредоносный код выполнялся немедленно при добавлении пакета в проект, будь то локальная машина разработчика или сервер сборки. Исходный скрипт "install.js" был обфусцирован, однако его логика последовательна. Интересно, что код содержал явную проверку локали системы, пропуская выполнение, если язык или временная зона указывали на Россию. Подобная географическая фильтрация характерна для криминального вредоносного ПО, происходящего из русскоязычного сегмента.

Первая стадия атаки заключалась в обращении из скрипта к RPC-узлу блокчейна Solana для получения следующей команды. Исследователи, повторившие путь вредоносной программы, обнаружили, что в транзакции содержалась ссылка на внешний сервер, с которого загружался второй этап. Этот этап, в свою очередь, представлял собой дешифратор, который с использованием алгоритма AES-256-CBC и предоставленных ключей извлекал третью, основную стадию атаки. Именно здесь угроза переходила от разведки к активным действиям на Windows-системах.

Восстановленная третья стадия - это полнофункциональный вор данных с расширенными возможностями. Во-первых, программа обеспечивала себе устойчивое присутствие в системе, создавая запланированную задачу в Планировщике задач Windows и добавляя свой запуск в раздел реестра "Run". Во-вторых, она демонстрировала сложную логику сбора информации: крала файлы криптокошельков (включая MetaMask, Exodus, Atomic и другие), извлекала токены аутентификации npm и учетные данные Git, а также сканировала профили браузеров в поисках данных расширений. Для надежности исполнения вредоносная программа даже загружала и распаковывала полноценную среду выполнения Node.js с официального сайта, создавая независимую среду в папке "%APPDATA%".

Особенностью атаки стало использование публичных сервисов для маскировки командного трафика. После установки третья стадия обращалась к Google Calendar для получения зашифрованной ссылки, которая затем использовалась для загрузки дополнительных компонентов с контролируемого злоумышленниками IP-адреса. Этот метод индикации команд и управления (command and control, C2) усложняет обнаружение, так как трафик к доменам Google обычно не вызывает подозрений у систем мониторинга. Финальным аккордом была отправка собранных архивов с конфиденциальной информацией на сервер злоумышленников.

Главный вывод для сообщества разработчиков и отделов информационной безопасности заключается в необходимости ужесточения контроля за зависимостями. Инцидент подчеркивает важность использования инструментов для анализа состава программного обеспечения (Software Composition Analysis, SCA), проверки цифровых подписей пакетов и строгого соблюдения политик использования доверенных реестров. Для митигации подобных угроз специалистам рекомендуется блокировать выполнение скриптов жизненного цикла пакетов в средах сборки, использовать изолированные окружения для установки зависимостей и регулярно проводить аудит "package.json"-файлов на предмет подозрительных хуков. Кроме того, мониторинг сетевого трафика на предмет неожиданных обращений к блокчейн-нодам или публичным сервисам вроде Google Calendar может помочь в раннем обнаружении подобных сложных цепочек атак на цепочку поставок.

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

IPv4

  • 217.69.3.152
  • 45.32.150.251

Domains

  • n.xyz
  • p.link
  • socket.network

SHA256

  • 59221aa9623d86c930357dba7e3f54138c7ccbd0daa9c483d766cd8ce1b6ad26

Malicious packages

  • react-native-country-select@0.3.91
  • react-native-international-phone-number@0.11.8
Комментарии: 0