Security Week 2540: подробности supply-chain-атаки Shai-Hulud

Security Week 2540: подробности supply-chain-атаки Shai-Hulud

Важным событием позапрошлой недели стало масштабное заражение npm-пакетов червем Shai-Hulud. Эта вредоносная программа нацелена на разработчиков открытого ПО. Она ставит под угрозу данные для доступа к облачным сервисам, выкладывает в общий доступ приватные репозитории. Данная вредоносная операция может быть квалифицирована как атака на цепочку поставок: взлом популярного npm-пакета приводит к компрометации множества других программных решений. На прошлой неделе специалисты «Лаборатории Касперского» подробно разобрали схему работы зловреда Shai-Hulud. Также с высокой вероятностью был определен «нулевой пациент» — первый зараженный пакет в репозитории npm.

Атака начинается с загрузки зараженного пакета из репозитория npm. После установки автоматически запускается вредоносный скрипт размером более 3 мегабайт с названием bundle.js. Он содержит набор легитимных модулей для работы с облачными сервисами Amazon и Google Cloud Platform, инструменты для взаимодействия с GitHub API, а также имеет функциональность для работы с TruffleHog, свободно распространяемой утилитой для поиска ссылок на конфиденциальные источники данных.

Далее собирается информация об операционной системе, проверяется наличие npm-токена и токена аутентификации в GitHub. Особенностью червя является то, что большая часть функциональности нацелена на работу в Linux и macOS. Во всех репозиториях GitHub, к которым у жертвы имеется доступ, создается новая ветка под названием shai-hulud, куда загружается скрипт для сервиса GitHub Actions. Этот скрипт, в свою очередь, будет активизироваться каждый раз, когда выполняется команда push. Он собирает секреты из репозиториев и отправляет их на сервер злоумышленников.

Следующий этап может нанести еще больше ущерба: запрашивается список всех организаций в GitHub, относящихся к жертве, и для каждой из них выполняется функция migration. Таким образом все приватные и корпоративные репозитории, к которым у жертвы есть доступ, копируются в учетную запись пользователя и становятся публичными. По предположению авторов исследования, так делается для последующей автоматизированной кражи исходного кода из приватных репозиториев.

Одной из жертв такого подхода стала компания CrowdStrike: у нее оказались заражены девять библиотек. Такая деятельность представляет угрозу для компаний, так как возникает риск раскрытия проприетарного исходного кода и других чувствительных данных. К слову, результат работы легитимной утилиты TruffleHog со всеми ключами доступа к облачным системам также публикуется в учетке жертвы на GitHub в открытом виде. Наконец, представляет интерес процесс саморепликации червя. Shai-Hulud определяет npm-пакеты, к которым у жертвы имеется доступ, пытается скачать tarball-версию каждого из них. Скачанный пакет распаковывается, к нему добавляется тот же самый вредоносный bundle.js, а для его запуска в файл package.json добавляется команда на этапе постинсталляции. Версия пакета увеличивается на единицу, после чего он заново упаковывается и загружается обратно в репозиторий.

Именно запуск вредоносного пакета на этапе postinstall позволил выявить вероятного кандидата на звание «нулевого пациента» данной вредоносной кампании. В одном из зараженных пакетов вредоносный код выполнялся перед установкой — это был пакет ngx-bootstrap версии 18.1.4. Авторы отчета предполагают, что именно он стал отправной точкой для всех последующих заражений. В ряде случаев также было отмечено наличие нескольких копий вредоносного скрипта в одном и том же пакете. Скорее всего, это стало возможным из-за того, что были одновременно скомпрометированы сразу несколько мейнтейнеров одного и того же программного обеспечения.

В списке зараженных пакетов в статье «Лаборатории Касперского» присутствуют 190 наименований, а по некоторым источникам общее число зараженных npm-пакетов превышает 500. Скорее всего, имеют место особенности подсчета: в одном случае считается общее число зараженных пакетов, в другом — количество опубликованных версий, причем на один пакет может приходиться несколько зараженных релизов. Наиболее серьезной жертвой стал пакет ctrl/tinycolor с двумя миллионами загрузок еженедельно. В качестве мер реагирования авторы статьи рекомендуют провести аудит репозиториев на GitHub, проверить логи на GitHub Actions. И в том и в другом случае искать нужно наличие строк, содержащих shai-hulud. В случае компрометации рекомендован перевыпуск токенов npm и GitHub, ключей доступа к облачным системам и ротация других секретов.

Меры противодействия атаке приняли и в GitHub: там принудительно удалили зараженные версии кода с упоминаниями shai-hulud, а также пообещали усилить безопасность экосистемы npm путем внедрения более строгих правил публикации обновлений: только с использованием двухфакторной аутентификации, с применением токенов, валидных в течение недели, а также с использованием принципа Trusted publishing.

Что еще произошло

Еще одна публикация экспертов «Лаборатории Касперского» разбирает приемы работы группы BO Team, которая недавно предприняла новую вредоносную рассылку с использованием запароленных RAR-архивов.

В компании Microsoft исследуют новый вариант вредоносного ПО XCSSET, нацеленного на разработчиков, работающих в среде Xcode.

Разработчики менеджера паролей LastPass предупреждают о распространении фейков, которые маскируются и под LastPass, и под другие популярные программы, включая Dropbox и Confluence. Для этого были созданы десятки репозиториев на GitHub, каждый из которых содержит кнопку «скачать программу». Нажатие этой кнопки уводит жертву на сторонний сайт, где по технологии ClickFix предлагается скопировать и запустить вредоносный код в терминале. Вредоносный код рекламируется в результатах поиска Google и нацелен на пользователей компьютеров Apple.

иб npm github
Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.

Конференция по защите данных «Гарда: Сохранить всё»

Вас ждет день, насыщенный дискуссиями о будущем кибербеза и цифровой экономики. В этом году в фокусе внимания — защита персональных данных и искусственный интеллект.

При поддержке ФСТЭК и Минцифры. Москва, 16.10.2025.

Присоединяйтесь!

Реклама. 16+ ООО «Гарда Технологии», ИНН 5260443081