Программное обеспечение сегодня собирается из тысяч готовых компонентов. Каждый из них потенциально может стать точкой входа для злоумышленников. Новый инцидент, получивший название Miasma, показал, как атаки на цепочку поставок переходят на уровень построения самой инфраструктуры разработки. Под ударом оказались десятки пакетов, относящихся к экосистеме Red Hat, что поставило под угрозу широкий круг потребителей корпоративного кода.
Описание
Речь идёт о масштабной кампании, нацеленной на репозитории GitHub, конвейеры непрерывной интеграции и доставки и реестры пакетов с открытым исходным кодом. Исследователи выявили компрометацию минимум 32 пакетов и более 90 их вредоносных версий, опубликованных под пространством имён @redhat-cloud-services в менеджере пакетов npm. Совокупная еженедельная загрузка затронутых библиотек до момента обнаружения составляла порядка 80 тысяч. Самое примечательное заключается в том, что атакующие смогли опубликовать вредоносные артефакты, имеющие валидные криптографические подписи и аттестации происхождения.
Главный вектор атаки - злоупотребление механизмом доверенной публикации через OpenID Connect в GitHub Actions. Злоумышленники, получив доступ к среде разработки Red Hat, внедрили вредоносные коммиты в легитимные репозитории, например, такие как frontend-components и javascript-clients. После этого запущенные рабочие процессы GitHub Actions запрашивали у провайдера OIDC временные токены для публикации пакетов. Таким образом, выпуск вредоносных версий проходил через стандартный конвейер, и все метаданные о происхождении оставались формально корректными.
Вредоносная нагрузка, которую специалисты связывают с публично доступным семейством вредоносных программ Mini Shai-Hulud, нацелена не на конечного пользователя, а на саму среду разработчика. После установки скомпрометированного пакета Miasma начинает сбор широкого спектра учётных данных. Это и токены GitHub, и секреты GitHub Actions, и учётные записи для облачных платформ (AWS, Azure, Google Cloud), и ключи SSH, и криптографические токены HashiCorp Vault. Особое внимание уделяется scraping-у памяти раннеров GitHub Actions для извлечения временных секретов. Отчёт исследователей подчёркивает, что такой сбор данных позволяет атакующим не просто скомпрометировать один пакет, а получить ключи к другим репозиториям и системам непрерывной интеграции.
Техническая реализация атаки претерпела эволюцию. Первые волны Miasma полагались на стандартные скрипты жизненного цикла npm, такие как preinstall. Однако в более поздних вариантах была замечена эксплуатация механизмов сборки через файлы binding.gyp и Node.js. Этот обходной манёвр делает вредоносный код менее заметным для инструментов, проверяющих наличие посторонних действий при установке пакета.
Для корпоративного сектора этот инцидент означает несколько тревожных сигналов. Прежде всего, он демонстрирует, что проверка подписей и аттестаций происхождения (SLSA) перестала быть гарантией безопасности пакета. Если скомпрометирована инфраструктура, которая выдаёт эти аттестации, то доверять цифровой подписи больше нельзя. Во-вторых, атака показала, что современные угрозы нацелены не на отдельные уязвимости, а на идентификационные данные и права доступа в среде разработки. Кража облачного токена может привести к проникновению в основные системы хранения кода и к дальнейшему распространению заражения.
Последствия Miasma не ограничиваются экосистемой Red Hat. Аналогичная активность была позже зафиксирована в отношении 73 репозиториев Microsoft, которые были отключены после обнаружения вредоносных модификаций. Это говорит о том, что кампания носит системный характер и её операторы способны адаптировать инструментарий для атак на разные цели. Организациям, занимающимся разработкой, следует пересмотреть свои представления о безопасности цепочки поставок, смещая фокус с проверки конечного продукта на защиту среды, в которой этот продукт создаётся.
Индикаторы компрометации
SHA256
- 0d1e742c4f94d592d6b824cf7cb9dfebd8c2a323345080a6524d0352d1cd479c
- 1259284706ec9ffbcccbede1e8055c1a4fa5fd69885dfb982ccd06df2fb83d0a