Эксперты описали новый способ атаки отравления артефактов.
Исследователи компании ИБ-компании Legit Security обнаружили , что злоумышленник отправляет изменения в репозитории с открытым исходным кодом на GitHub. Это может привести к тому, что программные проекты, включающие последнюю версию компонента, будут компилировать обновления с вредоносным кодом.
По словам экспертов, эта уязвимость «отравления артефактов» может повлиять на программные проекты, использующие GitHub Actions (сервис для автоматизации конвейеров разработки), путем запуска процесса сборки в тот момент, когда изменение обнаружено в программной зависимости.
Legit Security смоделировала атаку на проект, на котором основан язык Rust, в результате чего проект был перекомпилирован с использованием вредоносной версии популярной программной библиотеки GCC.
Атака использует автоматизированный процесс сборки через GitHub Actions. Уязвимый шаблон мог позволить злоумышленнику выполнять код привилегированным образом в рамках конвейера разработки, похищая секреты репозитория и подделывая код.
Другими словами, в уязвимом рабочем процессе любой пользователь GitHub может создать форк, который создаст артефакт. Затем нужно внедрить этот артефакт в исходный процесс сборки репозитория и изменить его выходные данные.
После эксплуатации злоумышленник может изменить ветки репозитория, запросы на вытягивание (pull requests), эксплуатировать ошибки, выпуски и все объекты, доступные для разрешений токена рабочего процесса. Поскольку Rust не ограничивал токен рабочего процесса для определенных областей, то хакеру доступны следующие разрешения:
Разрешения, которые получает злоумышленник
В зависимости от конкретной конфигурации Rust киберпреступник может использовать эти разрешения для расширения атаки за пределы уязвимого репозитория на дополнительные активы Rust и бокового перемещения внутри организации.
Схема атаки на GitHub Actions
Технический директор Legit Security Лиав Каспи сказал, что проблема затрагивает большое количество проектов с открытым исходным кодом, потому что сопровождающие обычно сначала тестируют предоставленный код, а уже после тестов анализируют его.
GitHub подтвердил проблему и заплатил вознаграждение за информацию, а Rust уже исправил уязвимость.
Живой, мертвый или в суперпозиции? Узнайте в нашем канале