The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

12.01.2024 09:20

Раскрыты детали атаки на инфраструктуру, используемую при разработке фреймворка машинного обучения 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, применявшегося для доступа к репозиторию из сборочных процессов (GITHUB_TOKEN допускал доступ на запись), а также ключей AWS, задействованных для сохранения результатов сборки.

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

Дополнение: Раскрыты детали аналогичной атаки на проект TensorFlow, позволившей скомпрометировать релизы на GitHub и PyPi через отправку pull-запроса.

  1. Главная ссылка к новости (https://johnstawinski.com/2024...)
  2. OpenNews: Выявлена подстановка вредоносной зависимости в ночные сборки PyTorch
  3. OpenNews: Атака на GitHub Actions для майнинга криптовалюты на серверах GitHub
  4. OpenNews: Уязвимость в GitHub Actions, допускающая подстановку команд
  5. OpenNews: В ходе атаки на GitHub захвачены ключи для подписи приложений GitHub Desktop и Atom
  6. OpenNews: Проект Сicada развивает систему автоматизации сборок, похожую на GitHub Actions
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60424-pytorch
Ключевые слова: pytorch, github, actions
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (14) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, AKTEON (?), 10:36, 12/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Ну-ну. И что  дальше делать будем ??  Предлагаю пускать на github только сотрудников  от компаний с уставным капиталом от 10 млн$ со справкой о политической благонадежности,хе-хе
     
     
  • 2.9, YetAnotherOnanym (ok), 14:10, 12/01/2024 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Ничего. "Языков, лёгких в освоении и использовании" быть не должно, но бизнесу нужны именно они.
     
     
  • 3.15, Аноним (15), 16:37, 12/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну точно, с кодом на крестах такого случиться не могло.
     
     
  • 4.22, YetAnotherOnanym (ok), 15:38, 13/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вот именно таких детских косяков на крестах ты много знаешь?
     

  • 1.2, Tron is Whistling (?), 10:43, 12/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Прачечная в прачечной - это мило.
     
  • 1.5, Аноним (5), 12:13, 12/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    1. Зачем токену раннера, который GH выдаёт пайплайнам, выполняющимся при PRах, вообще выданы разрешения писать в репозиторий или читать конфиденциальную информацию? Такие разрешения должны выдаваться только пайплайнам главной ветки, да и то при явном согласии владельца.
    2. pytorch не хостит релизы на GitHub, они их хостят на своём сайте.
     
     
  • 2.12, пох. (?), 15:29, 12/01/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Зачем токену раннера, который GH выдаёт пайплайнам, выполняющимся при PRах, вообще выданы
    > разрешения писать в репозиторий

    а откуда берется по твоему то что тестировать? Из него, родимого.
    И нет, это не основное дерево, разумеется, это твой васянский форк. Прикол в том что ты можешь тестировать свой васян-форк на энтер-прайсных серверах (ну правда надо исхитриться до этого прислать васян-патч который ентер-прайс радостно склюет, что в целом не так легко, но технически - возможно, код - ентер-прайсный, а значит он г-но)

    А читать ему надо потому что оно исполняется внутри закрытого контура производителя himars (например). Ну континиус же ж дезинтегрейшен - чего терять время на рассмотрение твоего багфикса если он даже не запускается (у нас, а не где-то в сферическом вакууме)

    > pytorch не хостит релизы на GitHub

    пофигу на релизы - в них никто ничего и не меняет. не пофигу на то что патчи исполняются шитхабом.
    А вот у шитхаба есть доступ в закрытые контуры очень серьезных ребят (кто бы мог опять подумать и было ли ему чем) Т.е. ты свой код внезапно взял и у них там исполнил. Уже можно не добиваться его включения в мэйнлайн, да и неудобно с (c)товарищмаёр - просто откати комит "ну не получилось чего-то".


     
     
  • 3.13, Аноним (13), 15:57, 12/01/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >а откуда берется по твоему то что тестировать? Из него, родимого.

    Не клоунадь. Код в репозитории доступен без аутентификации публично. Так же, как и часть инфы. Другая часть инфы доступна при аутентификации для записи и чтения. Напр. списки заланенных пользователей. Третья часть доступна для чтения публично, а запись - только по токену. Напр. запись в репозиторий, публикация и редактирование релизов, редактированиети публикация комментариев. Гитхаб для каждого пайплайна генерит токен с полномочиями на этот репозиторий. Как так получилось, что при запуске пайплайна для чужого PR этот пайплайн получил права, отличные от прав того пользователя, кто сделал PR?

     

  • 1.6, Аноним (6), 12:37, 12/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    >для осуществления атаки на крупные компании, такие как Google, Meta, Boeing и Lockheed Martin

    Там ещё и Tesla:
    https://www.youtube.com/watch?v=oBklltKXtDE

    p.s.:
    Ну думаю все понимают откуда ноги растут...

     
  • 1.11, Бывалый смузихлёб (?), 15:16, 12/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    где-то тут должны быть шутки вроде про лифпад, но, постойте-ка, это же богоугодный пихон и про него так нельзя, а то вдруг школьники обидятся
     
     
  • 2.16, Аноним (15), 16:38, 12/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Такими темпами и до сишкохульства недалеко.
     
  • 2.20, Аноним (20), 20:25, 12/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > тут должны быть шутки вроде про лифпад, но, постойте-ка, это же богоугодный пихон

    @ Дальше загаловка не читай.
    @ Искрометный юмор пиши. 🤡

     

  • 1.17, Аноним (17), 17:18, 12/01/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > Для получения статуса активного разработчика в ходе эксперимента использовались незначительные косметические изменения, связанные с устранением опечаток в документации.

    Бойтесь данайцев дары приносящих. Опенсорс убивают не корпорации, а вот такие инциденты, подрывающие доверие к самой модели. И никакой код ревью тут не спасёт, всего не предусмотришь, соломки везде не подстелишь.

     
     
  • 2.18, 1 (??), 17:52, 12/01/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А причём тут open source ? Качай tar-ы и проверяй хеш файла и будет тебе щастье.

    Это всё про CI/CD

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру