Бесплатно Экспресс-аудит сайта:

03.12.2022

Новая уязвимость в GitHub может повлиять на цепочку поставок ПО

Исследователи компании ИБ-компании Legit Security обнаружили , что злоумышленник отправляет изменения в репозитории с открытым исходным кодом на GitHub. Это может привести к тому, что программные проекты, включающие последнюю версию компонента, будут компилировать обновления с вредоносным кодом.

По словам экспертов, эта уязвимость «отравления артефактов» может повлиять на программные проекты, использующие GitHub Actions (сервис для автоматизации конвейеров разработки), путем запуска процесса сборки в тот момент, когда изменение обнаружено в программной зависимости.

Legit Security смоделировала атаку на проект, на котором основан язык Rust, в результате чего проект был перекомпилирован с использованием вредоносной версии популярной программной библиотеки GCC.

Атака использует автоматизированный процесс сборки через GitHub Actions. Уязвимый шаблон мог позволить злоумышленнику выполнять код привилегированным образом в рамках конвейера разработки, похищая секреты репозитория и подделывая код.

Другими словами, в уязвимом рабочем процессе любой пользователь GitHub может создать форк, который создаст артефакт. Затем нужно внедрить этот артефакт в исходный процесс сборки репозитория и изменить его выходные данные.

После эксплуатации злоумышленник может изменить ветки репозитория, запросы на вытягивание (pull requests), эксплуатировать ошибки, выпуски и все объекты, доступные для разрешений токена рабочего процесса. Поскольку Rust не ограничивал токен рабочего процесса для определенных областей, то хакеру доступны следующие разрешения:

Разрешения, которые получает злоумышленник

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

Схема атаки на GitHub Actions

Технический директор Legit Security Лиав Каспи сказал, что проблема затрагивает большое количество проектов с открытым исходным кодом, потому что сопровождающие обычно сначала тестируют предоставленный код, а уже после тестов анализируют его.

GitHub подтвердил проблему и заплатил вознаграждение за информацию, а Rust уже исправил уязвимость.