Современный мир программного обеспечения опирается на огромные экосистемы открытого кода, где npm-пакеты играют ключевую роль в разработке веб-приложений и сервисов. К сожалению, широкое распространение и популярность этих пакетов также делают их привлекательной целью для киберпреступников, которые через атаки на цепочки поставок пытаются внедрить вредоносный код и получить контроль над инфраструктурой пострадавших организаций. Одной из последних масштабных кампаний стала и продолжающаяся атака на npm-пакеты, выпущенные под аккаунтом crowdstrike-publisher, связанная с известной вредоносной кампанией под названием "Shai-Hulud". Угрозу впервые обнаружил исследовательский коллектив Socket, который выявил множество зараженных пакетов и проследил методы работы вредоносного ПО. Атака направлена на модификацию популярных npm-пакетов, что позволяет внедрить вредоносный скрипт bundle.
js прямо в артефакт пакета. Помимо этого, угоняется механизм установки, добавляя в package.json скрипт postinstall, гарантирующий запуск вредоносного кода при каждом выполнении команды npm install. Таким образом, при установке зараженного пакета на систему пользователя автоматически запускается вредоносный функционал без дополнительного участия и подозрений. По своим функциям вредоносный скрипт довольно продвинут.
Он сочетается с легитимным инструментом TruffleHog, который используется для сканирования системы на наличие секретных ключей и конфиденциальных токенов. Полученные данные проходят валидацию, чтобы выявить действительные и имеющие права доступа токены для npm, GitHub, AWS и других сервисов. В случае обнаружения валидных токенов вредоносный код создает неконтролируемые GitHub Actions внутри репозиториев, через которые организуется вывод украденной информации на внешние серверы, конкретно на заранее прописанный вебхук. Во внешней среде действия вируса распространяются не только на локальной машине зараженного пользователя, но и могут оставаться устойчивыми благодаря интеграции с системой непрерывной интеграции и доставки (CI/CD), что значительно осложняет устранение угрозы и мониторинг. Каждое срабатывание пайплайна CI может повторно запускать процесс сбора и передачи конфиденциальных данных, что делает атаку глубоко проникающей и долгоиграющей.
По состояния исследований, атака "Shai-Hulud" сообщает о семи версиях вредоносной программы, которые эволюционируют в сторону повышения скрытности и эффективности. В новых версиях разработчиками атакующих устранены баги и снижена вероятность обнаружения, добавлены проверки валидности токенов до выполнения запросов, расширены возможности по сбору как AWS, так и Google Cloud Secrets. Интересно, что в последней версии убраны некоторые более заметные и шумные методы, такие как прямое вмешательство в файловую систему репозитория, для минимизации цифрового следа. Не менее тревожным является тот факт, что атака имеет самовоспроизводящийся характер. Злоумышленники используют украденные учётные данные для публикации зараженного кода в других npm-пакетах, создавая цепочку заражений.
Однако при этом самовоспроизведение зависит от наличия у злоумышленника свежих токенов с правами публикации, что в конечном счете может ограничить масштаб атаки, если удалить или отсечь скомпрометированные ключи в средах, где использовались взломанные пакеты. Вспышки активности вредоносного кода происходили с определенной периодичностью: наблюдались масштабные волны публикации зараженных пакетов с множественными версиями, что свидетельствует про организованность и автоматизацию атаки. Время публикаций и виды ключей, которые искала шпионская программа, позволяют предположить высокую квалификацию хакеров и глубокое знание процессов разработки и деплоя в экосистеме npm и GitHub. Для разработчиков и организаций, использующих npm-пакеты, особенно от CrowdStrike, крайне важно внимательно проверить свои зависимости. Необходимо выявить и удалить зараженные версии, если есть подозрение на использование инфицированных артефактов.
Более надежным решением станет фиксация используемых пакетов на конкретных проверенных версиях и обновление их только после официального подтверждения безопасности от разработчиков и проверяющих. Также следует провести аудит и ротацию всех токенов, ключей и секретов, которые могли быть скомпрометированы в результате воздействия вредоносного ПО, а также тщательно проанализировать логи CI/CD систем и npm publish событий, чтобы выявить несанкционированные публикации или активность. Кроме того, крайне желательно использовать средства мониторинга и реагирования, которые способны быстро оповещать о подозрительных изменениях в репозиториях и пакетах, блокировать установки с подозрительных источников и проводить постоянные сканирования внутренних артефактов. Поскольку вредоносный код ориентируется на использование GitHub Actions для сохранения устойчивости и сбора данных, рекомендуется ограничивать права на создание и модификацию рабочих процессов CI/CD, внедрять двухфакторную аутентификацию и применять лучшие практики по управлению секретами, включая использование безопасных хранилищ и регулярную ревизию прав доступа. Важно понимать, что атака на цепочку поставок npm-пакетов стала системной проблемой, с которой сталкивается не только CrowdStrike, но и множество других разработчиков.
Именно поэтому существует потребность в более строгих методах проверки и валидации исходного кода и пакетов, распространении практик подписей кода, а также формировании культуры безопасности среди разработчиков и операторов инфраструктуры. Кроме технических мер, стоит уделять внимание политике взаимодействия с сообществом и репозиториями, своевременному выявлению фишинговых и социальных атак, которые часто предшествуют компрометации учётных данных. Регулярные тренинги и повышение осведомленности персонала помогут избежать многих распространенных ошибок, ведущих к утечке данных и проникновению вредоносного кода. Ситуация с атакой класса "Shai-Hulud" демонстрирует, насколько уязвимой может быть даже казалось бы надежная экосистема инструментов и пакетов с открытым исходным кодом, если безопасности не уделять должного внимания на всех этапах жизненного цикла ПО. Комплексный подход, включающий мониторинг, аудит, автоматизацию защитных мер и обучение, становится залогом устойчивости и безопасной работы с npm-реестром.
В заключение, важным остается постоянное обновление информации о новых версиях вредоносных кампаний, анализ их поведения и активное применение рекомендаций по противодействию угрозам. Поддержка со стороны облачных сервисов, операторов npm и специалистов по безопасности помогает минимизировать потенциальный ущерб и защитить экосистему разработки программного обеспечения от дальнейшего распространения вредоносных цепочек. Оставаясь бдительными и своевременно реагируя на такие инциденты, разработчики и организации смогут снизить риски, повысить уровень доверия к своим продуктам и сохранить конфиденциальность критичных данных даже в условиях современных сложных киберугроз. .