В июле 2025 года экосистема NPM подверглась одной из самых масштабных и изощренных атак на цепочку поставок - вредоносный червь под названием Shai-Hulud поразил свыше 500 пакетов, включая популярный пакет @ctrl/tinycolor, который еженедельно скачивается более двух миллионов раз. Такой инцидент ознаменовал новую эру угроз для open-source, где злоумышленники применяют сложные методы для автоматического распространения вредоносного кода, перехвата учетных данных облачных сервисов и создания устойчивых бэкдоров в репозиториях разработчиков.Shai-Hulud представляет собой тщательно укрытую, масштабируемую и саморазмножающуюся вредоносную платформу, скрытую внутри скомпилированного Webpack-бандла, запускаемого при установке зараженного пакета. Этот 3.6-мегабайтный JavaScript-объект через хитроумные сценарии postinstall начинает работу почти незаметно, что делает его крайне привлекательным для злоумышленников.
Одной из ключевых целей данного червя становится сбор учетных данных пользователей, которые имеют ключевое значение для разработки и развертывания приложений. Механизм сбора затрагивает основные облачные платформы - такие как AWS, Google Cloud и Azure - а также GitHub. Вредоносный код использует TruffleHog, популярный инструмент для поиска высокоэнтропийных секретов, и анализирует переменные окружения процесса Node.js, чтобы обнаружить такие редкие данные, как AWS_ACCESS_KEY_ID, GITHUB_TOKEN, а также различные переменные авторизации. Это позволяет воровать как постоянные, так и временные токены, ключи и пароли, давая возможность атакующим неограниченный доступ к критичным ресурсам.
Особое внимание заслуживает механизм устойчивости и распространения: вредоносная программа посредством API взаимодействует с NPM-реестром, определяя до 20 пакетов, контролируемых тем же разработчиком, а затем публикует вредоносные патчи, заражая таким образом цепочку зависимостей. Это делает заражение вдвойне опасным, поскольку повреждение одного пакета приводит к заражению множества связанных проектов, что распространяет вредоносный код экспоненциально в рамках экосистемы.Кроме того, вредоносный код создает бэкдор в GitHub-репозиториях посредством добавления собственных workflow-файлов GitHub Actions. Эти файлы внедряются через special bash-скрипт, который создаёт новую ветку с названием shai-hulud и настраивает систему автоматической отправки собранных секретов на контролируемый злоумышленниками публичный репозиторий. Такой подход используется для сбора конфиденциальных данных и обеспечения постоянной возможности контроля над репозиториями, причем весь процесс происходит автоматически при получении прав на репозиторий.
Из-за сложной природы атаки и применения различных средств маскировки злоумышленникам удается запускать процесс практически без заметных действий пользователя. Ошибки игнорируются, вывод в консоль отсутствует, а выполнение команд выглядит как части обычного процесса установки или проверки безопасности. При этом все действия выполняются на системах Linux или macOS, так как атака специально исключает Windows-платформы.Ключевой угрозой остается компрометация управленческих токенов и ключей, что открывает дверь к дальнейшему только усугубляющемуся ущербу. В момент публикации зараженных версий пакетов было зафиксировано появление сотен публичных репозиториев с именем Shai-Hulud, содержащих выведенные из системы данные, что свидетельствует о масштабности и успешности атак.
Для тех, кто сталкивается с подозрением на заражение, важным шагом становится проверка наличия пакета @ctrl/tinycolor и других подтвержденных зараженных библиотек во внутренних проектах и удаление их. Дополнительно необходимо искать в файловой системе вредоносные скрипты, используя контрольные суммы зараженного бандла.Отдельное внимание уделяется очистке репозиториев от вредоносных рабочих процессов GitHub Actions и удалению созданных вредоносных веток. Важным шагом является немедленная ротация всех обязательно затронутых облачных и системных учетных данных, включая токены, ключи и секреты, а также полный аудит активности в облачных системах, чтобы выявить потенциальный несанкционированный доступ или новые угрозы.В контексте предотвращения подобных атак рекомендуется усиление контроля за безопасностью на уровне CI/CD, включая использование современных инструментов, таких как StepSecurity Harden-Runner, обеспечивающих раннее обнаружение нежелательной активности на этапе сборки и развертывания.
Применение механизмов замедления публикаций новых версий, ожидания подтверждения безопасности и мониторинга необычного API-трафика также помогает значительно снизить риски.Совокупность всех представленных в атаке приемов демонстрирует, насколько далеко зашла эволюция supply chain атак в экосистеме open-source. Тем более что злоумышленники активно используют легитимные инструменты и API, что затрудняет своевременное обнаружение и реагирование на инциденты.В заключение нельзя недооценивать роль сообщества и служб безопасности вместе с усилиями разработчиков для оперативного выявления и удаления зараженных пакетов, а также для повышения общей осведомленности о новых методиках атак. Важно интегрировать многослойные методы защиты, проводить регулярный аудит и ротацию ключей, а также активно пользоваться современными средствами мониторинга и автоматической защиты.
Текущая атака Shai-Hulud открывает глаза на необходимость комплексного подхода к безопасности в мире современных разработок и подчеркивает, что доверие к цепочке поставок должно подкрепляться реальными техническими и организационными мерами. Только так можно эффективно противостоять сложным угрозам и минимизировать риски, связанные с использованием открытых библиотек и пакетов в рабочих процессах. .