Кибербезопасность в сфере разработки вновь оказалась под ударом: группа, действующая под именем Shai Hulud, инициировала вторую волну supply-chain‑атаки, нацеленную на несколько известных платформ — включая Zapier, ENS, AsyncAPI, PostHog и Postman. Атака произошла незадолго до запланированного отзыва npm‑токенов classic, что позволило злоумышленникам воспользоваться уязвимым окном миграции и поразить многочисленные пакеты, ещё не перешедшие на более безопасные методы публикации.
Краткая суть инцидента
Shai Hulud — это самовоспроизводящийся червь для npm, разработанный для быстрого проникновения в среду разработчиков. Механика атаки сочетает в себе эксфильтрацию секретов и автоматическое размножение через реестр пакетов: после заражения вредоносное ПО использует TruffleHog для поиска открытых секретов (API‑ключи, токены и т.п.), публикует найденные данные в общедоступный репозиторий на GitHub и пытается отправить новые версии себя в реестр npm, обеспечивая дальнейшее распространение.
Злоумышленник назвал эту волну угроз «Вторым пришествием» — соответствуя собственному драматическому брендингу.
Масштабы и последствия
- Скомпрометировано 425 пакетов.
- Совокупная аудитория этих пакетов — около 132 миллиона ежемесячных загрузок.
- Вредонос публикует украденные секреты в публичный репозиторий GitHub под случайными именами и описаниями, что затрудняет обнаружение и повышает риск дальнейшей эксплуатации.
Технический анализ: как работает червь
Исследование заражённых пакетов показывает двухуровневую структуру вредоносного кода. В некоторых пакетах обнаружен исходный промежуточный скрипт: setup_bun.js, однако ключевой исполняемый код червя находится в файле bun_environment.js. Именно этот файл реализует логику поиска секретов, загрузки результатов на GitHub и попыток повторной публикации в реестр npm.
Ключевые элементы механизма:
- Использование TruffleHog для автоматического поиска секретов в кодовой базе и конфигурациях.
- Автоматическая публикация обнаруженных секретов в публичном репозитории с случайными метаданными, чтобы усложнить отслеживание и сокрытие следов.
- Самовоспроизводимость — червь пытается создать новые пакеты/версии в npm, что делает его угрозой для всей экосистемы.
Почему это сработало
Инцидент выявил несколько системных проблем в цепочке поставок ПО и практиках безопасности разработчиков:
- «Уязвимое окно» миграции от токенов classic позволило сохранить работоспособность устаревших практик публикации у большого числа пакетов.
- Широкое использование открытых секретов в репозиториях и недостаточная ротация ключей.
- Отсутствие строгой проверки целостности пакетов и слабая защита CI/CD‑конвейеров.
- Публикация исходного промежуточного кода в некоторых пакетах, что облегчило анализ и модификацию вредоносного поведения.
Индикаторы компрометации (IoC)
- Файлы с именами setup_bun.js и bun_environment.js в пакетах — повод для срочной проверки.
- Необычная активность публикаций в реестре npm от ранее известных пакетов или новых версий без явных изменений в функциональности.
- Появление новых публичных репозиториев на GitHub с файлами, содержащими API‑ключи или токены, особенно если метаданные репозитория выглядят случайными.
Рекомендации для разработчиков и организаций
Чтобы снизить риски дальнейшего распространения подобных атак, экспертная практика предполагает следующие меры:
- Немедленно провести аудит зависимостей и проверить наличность setup_bun.js, bun_environment.js и иных подозрительных файлов в пакетах и сборках.
- Ротировать и отзывать любые ключи и токены, которые могли быть скомпрометированы; при возможности перейти на более безопасные методы аутентификации вместо classic токенов.
- Удалить секреты из репозиториев и использовать секрет‑менеджеры (Vault, cloud secret managers) и переменные окружения CI вместо хранений в коде.
- Внедрить сканирование исходного кода и репозиториев на утечки чувствительных данных (TruffleHog, git-secrets и т.п.) — как локально, так и в CI.
- Ограничить права публикации в реестре и включить дополнительные проверки целостности пакетов (signing, provenance), а также multi‑factor authentication для критичных учётных записей.
- Мониторить публичные репозитории на GitHub на предмет публикаций с известными паттернами утечек и репортить подозрительные репозитории.
Вывод
Кампания Shai Hulud снова продемонстрировала, насколько уязвима цепочка поставок программного обеспечения — особенно в момент перехода от устаревших практик к новым политикам безопасности. Комбинация автоматизированного поиска секретов, публичной публикации украденных данных и способности к самовоспроизведению делает такую угрозу чрезвычайно опасной. Организациям и разработчикам необходимо действовать быстро: аудит, ротация ключей, улучшение контроля публикаций и внедрение инструментов для предотвращения утечек — единственные эффективные ответы на подобные атаки.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.
Оригинал публикации на сайте CISOCLUB: "Shai Hulud: npm‑червь атакует цепочку поставок и эксфильтрирует секреты".
Смотреть публикации по категориям: Новости | Мероприятия | Статьи | Обзоры | Отчеты | Интервью | Видео | Обучение | Вакансии | Утечки | Уязвимости | Сравнения | Дайджесты | Прочее.
Подписывайтесь на нас: VK | Rutube | Telegram | Дзен | YouTube.