Shai Hulud 2.0: вредонос npm крадёт токены и уничтожает данные
В сентябре был зафиксирован новый вариант вредоносного ПО под названием Shai Hulud 2.0, распространяющийся через скомпрометированные пакеты npm. Эта версия примечательна ключевым нововведением — встроенной функцией «стеклоочистителя», а также расширенными возможностями по кражe учётных данных и саморепликации внутри экосистемы Node.js.
Кратко о механизме атаки
Начальная полезная нагрузка Shai Hulud 2.0 запускает скрипт setup_bun.js. По данным отчёта, этот скрипт намеренно оставлен нераскрытым и хорошо задокументированным, что служит прикрытием его истинного назначения — подготовить систему и создать среду выполнения для последующих вредоносных действий. Главные этапы поведения вредоноса:
- Установка среды: скрипт проверяет наличие легитимного runtime
Bunи при необходимости устанавливает его, создавая платформу для дальнейшего исполнения вредоносного кода. - Сбор секретов и учётных данных: Shai Hulud 2.0 активно ищет токены и ключи — сканируя переменные окружения в поисках GitHub access token и извлекая данные из конфигурации GitHub CLI. Обнаруженные токены используются для организации канала связи с общедоступным репозиторием на GitHub и эксфильтрации похищенных данных.
- Саморепликация в экосистеме npm: вредоносный код встраивается в пакеты
npm. Скрипт сканирует файлы конфигурации.npmrcв домашнем каталоге и текущем рабочем каталоге, и при нахождении токена авторизации для реестра npm использует его для распространения через публикации и обновления пакетов. - Деструктивная нагрузка (fallback): если вредоносу не удаётся получить действительные токены npm или GitHub и/или осуществить эксфильтрацию, он инициирует деструктивную полезную нагрузку — функцию очистки, систематически удаляющую пользовательские файлы, преимущественно из домашнего каталога.
Технические и практические последствия
Двойственная природа Shai Hulud 2.0 — способность одновременно красть учётные данные и стирать данные — подчёркивает несколько тревожных трендов в современной атакующей экосистеме:
- атакующие используют легитимные платформы (GitHub, npm) как транспорт для эксфильтрации и распространения;
- пониженная прозрачность постинсталляционных скриптов в пакетах остаётся серьёзной угрозой для цепочек поставок ПО;
- компрометация CI/CD и реестров пакетов может привести к быстрому масштабированию заражения среди разработчиков и автоматических сборок.
Двойственная природа Shai Hulud 2.0 — его способность красть учетные данные и стирать данные — иллюстрирует меняющийся ландшафт угроз.
Как защищаться — практические рекомендации
Разработчикам и администраторам экосистемы Node.js стоит принять следующие меры для снижения рисков:
- проверять и аудировать зависимости: контролировать postinstall-скрипты и содержимое пакетов перед установкой;
- не хранить постоянные токены в открытых переменных окружения; использовать short-lived токены и секрет-менеджеры;
- ограничить права токенов GitHub и npm по принципу least privilege, включить 2FA и использовать scoped tokens;
- следить за конфигурациями
.npmrcи исключать хранение регистрационных токенов в публичных или совместно используемых средах; - мониторить необычные коммиты и push’и в публичные репозитории, а также неожиданные публикации пакетов в реестры;
- использовать sandbox/CI-изолирование при сборке и установке сторонних пакетов;
- при подозрении на компрометацию — немедленно отозвать и сгенерировать новые токены, провести форензическую проверку и восстановление данных из резервных копий.
Вывод
Shai Hulud 2.0 демонстрирует эволюцию атак на цепочку поставок ПО: злоумышленники сочетают кражу учётных данных, использование легитимных сервисов для эксфильтрации и механизм «стеклоочистителя», чтобы причинить максимальный ущерб в случае неудачи с кражей секретов. Для разработки безопасной практики необходима комбинированная стратегия: контроль зависимостей, управление секретами, жёсткая сегментация прав и оперативный мониторинг активности в реестрах и репозиториях.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.
