CHAINDROP: червь Shai-Hulud заразил более 400 пакетов npm
Исследователи Elastic Security Labs раскрыли детали новой вредоносной кампании, которая ознаменовала возвращение группировки Shai-Hulud. В ходе атаки злоумышленники развернули самораспространяющегося червя CHAINDROP, скомпрометировав более 400 пакетов в реестре npm. Суммарно затронутые библиотеки насчитывают свыше 1,3 миллиарда загрузок в месяц, что делает инцидент одной из самых масштабных угроз цепочке поставок за последнее время.
Масштаб и вектор заражения
Кампания началась с компрометации учётной записи разработчика, поддерживающего широко распространённую библиотеку хранилища «ключ-значение» keyv. Получив доступ, злоумышленники внедрили вредоносный код непосредственно в monorepo проекта, после чего червь автоматически распространился на все пакеты, доступные скомпрометированному мейнтейнеру. Среди заражённых библиотек:
keyvflat-cachecacheable-requestcacheablecache-manager
Каждый из этих пакетов обладает миллионами ежемесячных загрузок, что радикально расширяет потенциальную поверхность атаки.
Устройство самораспространяющегося червя
Техническая архитектура CHAINDROP базируется на скрипте-дроппере setup.mjs. Он способен внедрять бэкдор во все подпакеты репозитория keyv и одновременно доставлять основную вредоносную нагрузку. Червь спроектирован как кроссплатформенный и успешно заражает системы под управлением Linux, macOS и Windows.
Payload представлен двумя файлами с разными именами, но идентичным содержимым: Math_Symbol.js и math_init.js. Оба имеют одинаковый SHA-256-хеш, что служит надёжным индикатором компрометации. При запуске дроппер проверяет наличие среды выполнения JavaScript bun и при необходимости загружает её с официального сайта релизов.
Распространение через среду разработки
Механизм распространения червя завязан на популярные инструменты разработчиков. CHAINDROP создаёт коммиты в GitHub от имени автора claude с сообщением chore: update config.. Дальнейшее продвижение происходит через определённые действия пользователей при работе с Claude Code или Visual Studio Code. В файле настроек settings.json прописываются хуки, которые запускают дроппер при старте этих приложений. Если среди похищенных данных обнаруживаются учётные данные GitHub, червь способен коммитить вредоносные нагрузки сразу в несколько веток репозитория.
Сбор конфиденциальных данных
Основная функция payload — работа в качестве сборщика учётных данных. Код сильно запутан с помощью техник выравнивания потока управления и кодирования строк, чтобы затруднить анализ. Сборщик нацелен на широкий спектр конфиденциальной информации, уделяя особое внимание:
- API-ключам и токенам сервисов искусственного интеллекта (OpenAI, Anthropic);
- учётным данным облачных провайдеров;
- GitHub-токенам.
Динамическая C2-инфраструктура через Ethereum
Для получения конечной точки эксфильтрации CHAINDROP обращается к смарт-контракту Ethereum. Это позволяет операторам менять командный сервер простым обновлением контракта, не модифицируя сам payload. Реализован и резервный механизм: если контракт не может быть разрешён, червь сканирует историю коммитов GitHub в поисках специфического криптографического маркера, который указывает на легитимные домены управления.
Заражение цепочки поставок npm
Операционный фреймворк CHAINDROP включает прямое взаимодействие с реестром npm. Процесс заражения выглядит следующим образом: червь загружает последний архив пакета, встраивает в него вредоносные компоненты, изменяет файл package.json и заново упаковывает пакет для последующей публикации обратно в npm. Таким образом, компрометация непрерывно распространяется на новые жертвы через доверенные каналы обновления.
Обнаружение и защита
Elastic Defend уже развернул правила, нацеленные на выявление и смягчение подобных угроз в цепочке поставок. Инцидент подчёркивает критическую важность непрерывного мониторинга экосистемы npm, аудита прав мейнтейнеров и проверки целостности загружаемых пакетов. Разработчикам рекомендуется внимательно отслеживать подозрительную активность в репозиториях, особенно автоматические коммиты и непредвиденные хуки в конфигурациях IDE.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.



