В ходе мониторинга цепочки поставок npm выявлен новый образец вредоносного ПО семейства Mini Shai-Hulud, связанного с группировкой TeamPcp. Этот вариант стал очередной итерацией давно известной кампании, направленной на разработчиков. Уже в июне 2026 года публиковались сведения о предыдущих версиях этого вредоноса, однако свежий образец демонстрирует несколько существенных изменений.
Описание
Основное отличие от более ранних модификаций заключается в способе запуска вредоносного кода. Вместо привычного использования скриптов preinstall или postinstall в файле package.json новая версия применяет механизм автоматической сборки нативных модулей npm - node-gyp rebuild. Для этого в пакет помещается файл binding.gyp, который при выполнении команды установки пакета запускает вредоносный код. Кроме того, расширен перечень интегрированных сред разработки (IDE), в которые может внедряться вредоносный код - теперь под угрозой находятся популярные AI-ассистенты, включая Claude Code, VS Code, Cursor и Gemini. Также добавлен механизм закрепления в системе через создание задач по расписанию (systemd на Linux или LaunchAgent на macOS), что позволяет вредоносу оставаться активным после перезагрузки и периодически обновлять свою нагрузку.
Распространение нового варианта идёт по нескольким каналам. Во-первых, через публичный реестр npm: злоумышленники публикуют пакеты, маскирующиеся под легитимные инструменты, или модифицируют уже существующие, добавляя вредоносную зависимость. Во-вторых, через среду разработки: вредонос способен изменять конфигурационные файлы IDE, такие как settings.json или tasks.json, чтобы запускать код при старте сессии AI-помощника или открытии проекта. В-третьих, через открытые репозитории на GitHub: если в открытый проект включена вредоносная npm-зависимость, все пользователи, которые клонируют такой репозиторий, также заражаются. По данным лаборатории Huorong, основными каналами распространения являются именно эти три вектора, что позволяет атаке распространяться по цепочке поставок.
Последствия заражения могут быть серьёзными. Вредоносное ПО собирает с заражённой машины широкий спектр конфиденциальных данных: учётные записи, ключи SSH, токены доступа к GitHub и другим облачным сервисам, файлы конфигураций, исходный код проектов. Собранные данные шифруются с использованием комбинации современных алгоритмов и передаются на командно-контрольный сервер (C2-сервер). Кроме того, вредонос активно ищет действительные токены GitHub и, при их обнаружении, использует их для автоматического создания вредоносных коммитов в репозитории жертвы или для захвата runner-ов GitHub Actions. Это позволяет атаке распространяться дальше - как на другие проекты на GitHub, так и на серверы сборки. Закрепление в системе через задачи по расписанию обеспечивает долгосрочную активность, даже если разработчик переустанавливает окружение.
Злоумышленники также реализовали несколько механизмов обхода защиты. Вредонос проверяет, не запущен ли он в изолированной среде (песочнице) или на машине с признаками исследовательской деятельности, а также избегает атак на системы, использующие русский язык. Если он обнаруживает, что работает в среде непрерывной интеграции (CI), он может выполнять дополнительные действия, включая извлечение секретов из памяти runner-ов GitHub Actions. Всё это делает новый вариант очень опасным для разработчиков и DevOps-инженеров.
Разработчикам, использующим npm и GitHub, рекомендуется принять ряд мер. Следует регулярно проверять зависимости своих проектов на наличие подозрительных пакетов, особенно тех, которые недавно появились или резко изменили версию. Обращать внимание на файлы binding.gyp в пакетах, если они не являются частью предполагаемой функциональности. Рекомендуется ротировать все токены доступа, ключи SSH и пароли от облачных сервисов, если есть подозрение на заражение. Также необходимо проверить конфигурационные файлы IDE (например, .claude.json, .vscode/tasks.json) на предмет несанкционированных записей, а также проверить наличие необычных задач в cron или systemd. Использование инструментов сканирования безопасности для кода и зависимостей может помочь выявить подобные угрозы.
Угроза остаётся актуальной: опубликованные вредоносные версии пакетов могут всё ещё находиться в lock-файлах и кэше npm, а механизмы закрепления способны сохраниться на заражённых машинах даже после удаления пакета. Разработчикам стоит сохранять бдительность и своевременно обновлять инструменты безопасности.
Индикаторы компрометации
MD5
- e04f13d057ee6258df140b20aa6ae77d
URL
- api.github.com/search/commits?q=firedalazer
- api.github.com/search/commits?q=thebeautifulmarchoftime
- api.github.com/search/commits?q=thebeautifulsnadsoftime