В репозитории npm подгрузили целый ворох вредоносов. Если они не добиваются желаемого, то пытаются разрушить систему
Отмечена новая волна атак на реестр npm со стороны организаторов аналогичной сентябрьской кампании - Shai-Hulud. Нынешние атаки, правда, характеризуются особым остервенением.
Песчаный самовоспроизводящийся червь
Сразу несколько вендоров защитных средств отметили начавшуюся волну атак на основной реестр npm, в ходе которых в легитимные и популярные пакеты подгружаются троянизированные компоненты. По всей очевидности, речь идёт о продолжении кампании Shai-Hulud, выявленной в сентябре 2025 г. Новая итерация в некоторых отношениях отличается от первоначальной, поэтому её назвали Shai-Hulud. Исследователи в один голос отмечают исключительную агрессивность новой итерации.
NPM (Node Package Manager) — менеджер пакетов для программной платформы Node.js, с помощью которого можно устанавливать и управлять пакетами в Visual Studio.
Shai-Hulud (Шаи-Хулуд) - это название гигантских песчаных червей во вселенной Фрэнка Герберта «Дюна». Основной используемый вредонос действительно характеризовался червеобразным поведением. Во взломанные пакеты подгружалась функция (NpmModule.updatePackage), которая скачивала пакет в виде сжатого архива tarball, модифицировала файл package.json, внедряла локальный скрипт (bundle.js), перепаковывала архив и публиковала его заново, открывая возможность для автоматической троянизации зависимых пакетов.
Скрипт bundle.js скачивал и запускал TruffleHog, легитимный сканер скрытой информации, такой как токены GITHUB_TOKEN, NPM_TOKEN, AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY.
Исследователи компании OX Security тогда отметили, что насчитали 34 скомпрометированных аккаунтов GitHub, содержащих репозитории Shai-Hulud, где в закодированном виде хранились выведенные данные.
Прямой компрометации подверглись около 180 пакетов в npm, но всего кампания затронула не менее 500 различных пакетов в npm-реестре.
Новая волна атак
Новая волна атак отмечена в период между 21 и 23 ноября 2025 г. Как отмечается в исследовании специалистов компании Wiz, на этот раз вредоносный код запускается уже на предустановочном этапе, что расширяет потенциал для компрометации в средах компиляции и выполнения.
Говоря конкретнее, злоумышленники подгружали скрипт setup_bun.js в package.json, который скрытно устанавливал среду выполнения Bun и запускал скрипт (bun_environment.js).
Вредонос затем выполняет следующие последовательности действий: регистрирует заражённую машину как self-hosted runner с именем «SHA1HULUD» и добавляет автоматизированный процесс (workflow) .github/workflows/discussion.yaml, c уязвимостью внедрения (injection) и запускающийся исключительно в локальных средах - self-hosted runners. Это позволяет атакующему выполнять произвольные команды на заражённых машинах, запустив ветку обсуждений в репозитории GitHub.
Выводит все скрытые данные GitHub Actions м подгружает их как артефакт в файл actionsSecrets.json в репозитории для эксфильтрации. После этого файл скачивается на скомпрометированную машину, а соответствующий workflow удаляется для сокрытия деятельности.
«После запуска вредонос загружает и запускает TruffleHog для сканирования локальной машины, похищая конфиденциальную информацию, такую как NPM-токены, AWS/GCP/Azure-учётные данные и переменные окружения», - указывается в публикации Helixguard.
Автоматизированная репликация вредоносных компонентов, связанная с этой кампанией, создала огромную зону поражения: более 27 000 репозиториев примерно 350 уникальных пользователей. На протяжении последней пары часов каждые 30 минут стабильно добавлялось около 1000 новых репозиториев.
Новая итерация поддерживает платформы Linux, macOS и Windows. Любопытной особенностью оказывается то, что при выводе данных секреты одной жертвы отправляются в публичный репозиторий, принадлежащий совсем другой. Выводимые данные трижды кодируются Base64 перед отправкой.
До выполнения основной «полезной нагрузки» вредонос ищет в публичных репозиториях GitHub фразу-маяк «Sha1-Hulud: The Second Coming». Если она найдена, он читает сохранённый файл с GitHub access token, декодирует его и использует восстановленный токен как основной для вывода данных.
«Это делает вредонос самовосстанавливающимся: если жертва удаляет предыдущие вредоносные репозитории, атакующий может повторно заразить её через поиск по GitHub», - указывается в публикации команды Socket Research.
Для автоматического распространения вредонос загружает до 100 пакетов, связанных с валидным npm-токеном, и внедряет в каждый setup_bun.js и bun_environment.js. Затем модифицирует package.json, добавляя предустановочный скрипт, увеличивает версии пакетов (x.y.z → x.y.z+1) и публикует их в репозиторий.
Отдельно вредонос выполняет автоматизированный сбор учётных данных во всех метаданных GitHub Actions, ищя любые строки, начинающиеся с npm_, чтобы отравлять дополнительные пакеты.
Если не может украсть, то уничтожает
Исследователи Koi Security охарактеризовали вторую волну как значительно более агрессивную, по сравнению с первой. Вредонос пытается уничтожить весь домашний каталог жертвы, если не удаётся пройти аутентификацию или закрепиться. Это включает любой доступный для записи файл, принадлежащий текущему пользователю в его домашней директории. Однако функциональность наподобие вайпера активируется только при выполнении всех нижеперечисленных условий: - не удаётся аутентифицироваться в GitHub; не удаётся создать GitHub-репозиторий; не удаётся получить GitHub-токен; не удаётся найти npm-токен.
«Другими словами, если Shai-Hulud не может украсть учётные данные, получить токены или обеспечить канал эксфильтрации, он переходит к необратимому уничтожению данных, — заявили исследователи безопасности Юваль Ронен и Идан Дардикман. - Это серьёзная эскалация по сравнению с первой волной: актор переходит от простого похищения данных к карательному саботажу».
«Хотя это заставляет задаться вопросом относительно психиатрического состояния инициаторов кампании, определённый практический смысл в такого рода действиях считывается, - считает Никита Павлов, эксперт по информационной безопасности компании SEQ. - Речь может идти о попытках воспрепятствовать анализу вредоносных компонентов в процессе активного выполнения, - вместо того, чтобы получше скрываться вредонос устраивает «погром». Увы, пострадать от него могут отнюдь не только средства аналитики».
Исследователи выяснили также, что вредонос получает root-привилегии на Linux-машинах, выполняя Docker-команду, монтирующую корневую файловую систему хоста в привилегированный контейнер с целью копирования вредоносного файла sudoers, через который атакующему предоставляется root-доступ без пароля от имени скомпрометированного пользователя.
Чтобы уменьшить риск, организациям настоятельно рекомендуется сканировать все конечные точки на предмет заражённых пакетов, немедленно удалять скомпрометированные версии, а также ротировать все реквизиты доступа.
Кроме того, настоятельно рекомендуется проводить аудит репозиториев на предмет механизмов персистентности. В частности, проверять .github/workflows/ на наличие подозрительных файлов, таких как shai-hulud-workflow.yml или других веток, которых там не предполагалось.




