What's new
Runion

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Атака на инфраструктуру PyTorch, компрометирующая репозиторий и релизы

INC.

Midle Weight
Депозит
$0
Раскрыты детали атаки на инфраструктуру, используемую при разработке фреймворка машинного обучения PyTorch, позволившую извлечь ключи доступа, достаточные для размещения произвольных данных в репозитории с релизами проекта в GitHub и AWS, а также для подстановки кода в основную ветку репозитория и добавления бэкдора через зависимости. Подмена релизов PyTorch могла использоваться для осуществления атаки на крупные компании, такие как Google, Meta, Boeing и Lockheed Martin, использующие PyTorch в своих проектах. В рамках программы Bug Bounty компания Meta выплатила исследователям $16250 за информацию о проблеме.

Суть атаки в возможности выполнения своего кода на серверах непрерывной интеграции, выполняющих пересборку и выполнение заданий для тестирования новых изменений, отправляемых в репозиторий. Проблема затрагивает проекты, которые используют собственные внешние обработчики "Self-Hosted Runner" с GitHub Actions. В отличие от традиционных GitHub Actions обработчики Self-Hosted выполняются не в инфраструктуре GitHub, а на своих серверах или в виртуальных машинах, поддерживаемых разработчиками.

Выполнение сборочных заданий на своих серверах позволяет организовать запуск кода, который может осуществить сканирование внутренней сети предприятия, поиск в локальной ФС ключей шифрования и токенов доступа, анализ переменных окружения с параметрами обращения к внешним хранилищам или облачным сервисам. При отсутствии должной изоляции сборочного окружения найденные конфиденциальные данные могут быть отправлены атакующим вовне, например, через обращение к внешним API. Для определения использования проектами "Self-Hosted Runner" может использоваться инструментарий Gato, анализирующий общедоступные workflow-файлы и логи запуска CI-заданий.

В PyTorch и многих других проектах, использующих "Self-Hosted Runner", запуск сборочных заданий разрешён только разработчикам, изменения которых ранее проходили рецензирование и включались в кодовую базу проекта. Наличие статуса "contributor" при использовании в репозитории настроек по умолчанию даёт возможность запускать обработчики GitHub Actions при передаче pull-запросов и, соответственно, выполнять свой код в любом окружении GitHub Actions Runner, привязанном к репозиторию или курирующей проект организации.

Привязку к статусу "contributor" оказалось легко обойти - достаточно предварительно отправить незначительное изменение и дождаться его принятия в кодовую базу, после чего разработчик автоматически получал статус активного участника, pull-запросы которого разрешено тестировать в CI-инфраструктуре без отдельной проверки. Для получения статуса активного разработчика в ходе эксперимента использовались незначительные косметические изменения, связанные с устранением опечаток в документации. Для получения доступа к репозиторию и хранилищу релизов PyTorch в ходе атаки при выполнении кода в "Self-Hosted Runner" был осуществлён перехват токена GitHub, применявшегося для доступа к репозиторию из сборочных процессов, а также ключей AWS, задействованных для сохранения результатов сборки.

Проблема не специфична для PyTorch и затрагивает многие другие крупные проекты, которые используют настройки по умолчанию для "Self-Hosted Runner" в GitHub Actions. Например, упомянуто осуществление похожих атак для подстановки бэкдора в некоторые крупные кошельки криптовалют и блокчейн-проекты с миллиардной капитализацией, внесения изменений в релизы Microsoft Deepspeed и проекта TensorFlow, компрометации приложения компании CloudFlare, а также выполнения кода на одном из компьютеров в сети Microsoft. Детали по данным инцидентам пока не раскрываются. В рамках действующих программ Bug Bounty исследователи отправили более 20 заявок для получения вознаграждений на сумму несколько сотен тысяч долларов.
 
Top