Безопасность

Новый вал атак на 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 различных пакетов в этом реестре.

Новая волна атак была отмечена в период с 21 по 23 ноября 2025 года. Как указывают эксперты компании Wiz, на этот раз вредоносный код активируется уже на этапе предустановки, что увеличивает риски компрометации как в средах сборки, так и в средах выполнения.

Если говорить детальнее, злоумышленники добавляли в файл package.json скрипт setup_bun.js, который тайно устанавливал среду выполнения Bun и запускал скрипт (bun_environment.js).

Вредоносная программа осуществляет следующий алгоритм действий: она регистрирует заражённую систему как локальный исполнитель (self-hosted runner) под именем «SHA1HULUD» и добавляет автоматизированный процесс (workflow) в файл .github/workflows/discussion.yaml, содержащий уязвимость для внедрения команд и настроенный на запуск только в локальных средах — 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, декодирует его и использует восстановленный токен в качестве основного для вывода информации.

«Это делает вредонос самовосстанавливающимся: если жертва удаляет ранее созданные вредоносные репозитории, злоумышленник может повторно заразить её через поиск на 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. — Вероятно, это попытка помешать анализу вредоносных модулей в момент их работы, — вместо того чтобы маскироваться, программа устраивает «разгром». К сожалению, от этого могут пострадать не только инструменты исследователей».

Эксперты также обнаружили, что вредоносное ПО получает права суперпользователя на компьютерах с Linux, выполняя Docker-команду. Она монтирует корневую файловую систему основного устройства в привилегированный контейнер, чтобы скопировать зловредный файл sudoers. Через него злоумышленник получает неограниченный root-доступ без ввода пароля от имени взломанного пользователя.

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

Кроме того, крайне рекомендуется выполнить аудит репозиториев на предмет скрытых механизмов выживания. В частности, следует изучить каталог .github/workflows/ на предмет подозрительных файлов, например, shai-hulud-workflow.yml или иных неожиданных веток.

Роман Георгиев

Поделиться:

0 Комментариев

Оставить комментарий

Обязательные поля помечены *
Ваш комментарий *
Категории