Новый вариант npm-червя Shai-Hulud отравил сотни пакетов, добавив методы распространения, которые практически не оставляют следов в соответствующих репозиториях исходного кода.
В «Дюне» Фрэнка Герберта Шаи-Хулуд было именем гигантских самоподдерживающихся песчаных червей пустыни, которые бесшумно перемещались под поверхностью планеты Арракис. Поэтому вполне логично, что когда в сентябре 2025 года появилось новое самореплицирующееся вредоносное ПО, ведущее себя как компьютерный червь, исследователи безопасности назвали его в честь вымышленных созданий Герберта.
Последний вариант Shai-Hulud, названный «ChainDrop» компанией Microsoft и другими, однако, не является простым продолжением. Теперь сообщество npm обнаруживает вариант Shai-Hulud, распространяющийся с новыми скрытными сверхспособностями, которые обходят обычные механизмы защиты репозиториев с открытым исходным кодом.
4 августа несколько исследователей безопасности выявили масштабную атаку на цепочку поставок npm с использованием этого варианта Shai-Hulud, которая заразила 444 пакета от нескольких издателей, которые в совокупности загружаются около 2 миллиардов раз в месяц. Операция была нацелена на широко используемые глубинные инфраструктурные зависимости, такие как keyv, flat-cache и cache-manager.
Эбби Кирнс, генеральный директор компании по безопасности корпоративного открытого кода ActiveState, отметила в посте на Medium, что уникальность этой конкретной атаки заключается в том, что она не использует типичные методы взлома защиты репозиториев с открытым исходным кодом.
Даже если вы никогда не устанавливали зараженный пакет («npm install» на жаргоне npm), вы все равно можете получить заразу — хотя это один из возможных путей заражения. После активации ChainDrop также размещает хуки запуска в самих файлах конфигурации репозитория: простое открытие зараженной ветки Git в VS Code или Claude Code может передать ваш репозиторий под контроль ChainDrop.
Проверка самого кода может не выявить следов вмешательства. ChainDrop распространяется не через коммиты исходного кода в репозиторий, а через tarball’ы — архивный формат для загрузки файловых пакетов.
ChainDrop путешествует через tarball
При выполнении программа прочесывает рабочее пространство пользователя в поисках npm-токенов с полными правами на запись, а также других учетных данных, таких как облачные ключи и секреты. Она ищет в конфигурациях оболочки, переменных окружения и даже в оперативной памяти. Любые украденные данные шифруются и отправляются на конечные точки, контролируемые атакующими.
Если она находит npm-токен, то затем загружает tarball’ы всех пакетов, к которым этот токен имеет полный доступ, минуя сами репозитории.
В этом и заключается гениальность: ChainDrop самовоспроизводится, пересобирая tarball, включая в него собственную полезную нагрузку. Проверка репозитория исходного кода не выявит никаких следов махинаций.
Атака ChainDrop ведется с двух сторон. Он также ищет учетные данные GitHub. Если он их находит, то запрашивает GitHub API для получения списка всех доступных репозиториев и веток, а затем фиксирует свой вредоносный код конфигурации непосредственно в этих ветках.
Поэтому, когда другие разработчики открывают эти репозитории с помощью Claude или VS Code, запускается фоновая задача, собирающая учетные данные, и весь цикл начинается заново.
Что может сделать разработчик
Эта атака особенно опасна, поскольку npm широко интегрирован в автоматизированные CI/CD-пайплайны, которые могут автоматически подтягивать патчи для зависимостей во время пересборки — давая червю путь для проникновения в новые сборки.
Если вы считаете, что заразились, первым делом проверьте наличие файлов .claude/settings.json и .vscode/tasks.json, которые вы не добавляли сами, советует Кирнс из ActiveState. И проверяйте не только главную ветку, но и все остальные.
Все зараженные пакеты были быстро удалены из npm. Компания по безопасности открытого кода SafeDep предоставляет список всех скомпрометированных пакетов с номерами версий, поэтому сверьте их с тем, что у вас сейчас запущено.
Помимо устранения последствий, разработчикам и командам безопасности следует переосмыслить, как их системы могут быть взломаны в свете ChainDrop.
Для начала следует пересмотреть доверенные инструменты публикации, такие как GitHub Actions. Начните «относиться к конфигурации, поставляемой из репозитория, как к исполняемому содержимому, потому что именно так оно теперь и выглядит», написала Кирнс.
«Что эта кампания действительно обнаружила, так это путь выполнения, который инструменты сканирования зависимостей не были настроены проверять, находящийся прямо внутри тех инструментов, которые инженерные организации последние два года внедряли с максимальной скоростью, — написала Кирнс. — Это первая кампания, заметившая этот пробел и использующая его в масштабе. Она не будет последней». ®
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Joab Jackson




