Разкрити са подробности за атака срещу инфраструктурата, използвана за разработване на рамката за машинно обучение PyTorch. Тази атака позволи извличането на ключове за достъп, достатъчни за поставяне на произволни данни в хранилищата за издания на проекта в GitHub и AWS, както и за инжектиране на код в главния клон на хранилището и вмъкване на задна вратичка чрез зависимости. Подправянето на издания на PyTorch може да е било използвано за атака срещу големи компании като Google, Meta, Boeing и Lockheed Martin, които използват PyTorch в своите проекти. Meta е платила на изследователи 16 250 долара чрез своята програма за откриване на грешки за информация относно проблема.
Същността на атаката е възможността да се изпълни вашият код на сървъри непрекъсната интеграция, която преизгражда и изпълнява задачи за тестване на нови промени, изпратени в хранилището. Проблемът засяга проекти, които използват свои собствени външни манипулатори „Self-Hosted Runner“ с GitHub Actions. За разлика от традиционните GitHub Actions, Self-Hosted манипулаторите се изпълняват самостоятелно, а не в инфраструктурата на GitHub. сървъри или виртуални машини, поддържани от разработчиците.
Изпълнението на задачи за изграждане на вашите собствени сървъри ви позволява да изпълнявате код, който може да сканира вътрешната мрежа на компанията, да търси в локалната файлова система ключове за криптиране и токени за достъп, както и да анализира променливи на средата с параметри за достъп до външно хранилище или облачни услуги. Без правилна изолация на средата за изграждане, откритите поверителни данни могат да бъдат изпратени на нападателите външно, например чрез извиквания към външни API. Gato, инструмент, който анализира публично достъпни файлове на работни процеси и регистрационни файлове за изпълнение на CI задачи, може да се използва за определяне дали проектите използват Self-Hosted Runner.
В PyTorch и много други проекти, използващи Self-Hosted Runner, само разработчици, чиито промени са били предварително прегледани и включени в кодовата база на проекта, имат право да изпълняват задачи за изграждане. Наличието на статус „сътрудник“ при използване на настройките по подразбиране на хранилището ви позволява да изпълнявате манипулатори на GitHub Actions при подаване на заявки за изтегляне и следователно да изпълнявате кода си във всяка среда на GitHub Actions Runner, свързана с хранилището или хостващата организация на проекта.
Връзката към статуса „сътрудник“ се оказа лесна за заобикаляне: просто изпратете малка промяна и изчакайте тя да бъде приета в кодовата база. След това разработчикът автоматично получаваше статус на активен сътрудник, което позволяваше тестването на заявките за изтегляне (pull requests) в CI инфраструктурата без отделен преглед. За да се получи статус на активен разработчик по време на експеримента, бяха направени малки козметични промени за коригиране на печатни грешки в документацията. За да получи достъп до хранилището на PyTorch и да освободи място за съхранение, атаката, докато изпълняваше код в „Self-Hosted Runner“, прихвана токена на GitHub, използван за достъп до хранилището от процесите на изграждане, както и ключовете на AWS, използвани за запазване на резултатите от изграждането.
Проблемът не е специфичен за PyTorch и засяга много други големи проекти, които използват настройките по подразбиране „Self-Hosted Runner“ в GitHub Actions. Например, съобщени са подобни атаки, включително инсталиране на задна врата в няколко големи портфейла с криптовалута и блокчейн проекта с пазарна капитализация от милиарди долари, модифициране на версиите на Microsoft Deepspeed и TensorFlow, компрометиране на едно от приложенията на CloudFlare и изпълнение на код на компютър в мрежата на Microsoft. Подробности за тези инциденти все още не са разкрити. Изследователите са подали над 20 заявки за награда на обща стойност няколкостотин хиляди долара чрез съществуващите програми за награда за грешки.
Източник: opennet.ru
