Уязвимость в обработчике GitHub Actions, позволявшая скомпрометировать пакеты в Nixpkgs

Раскрыты сведения об уязвимостях в обработчиках GitHub Actions, автоматически вызываемых при отправке pull-запросов в репозиторий пакетов Nixpkgs, применяемый в дистрибутиве NixOS и в экосистеме, связанной с пакетным менеджером Nix. Уязвимость позволяла постороннему извлечь токен, предоставляющий доступ на запись и чтение к исходному коду всех пакетов, размещённых в Nixpkgs. Данный токен позволял напрямую вносить изменения в любой пакет через Git-репозиторий проекта, в обход процессов проверки и рецензирования изменений.

Возможность компрометации Nixpkgs и подстановки своего кода в любой пакет была продемонстрирована исследователями безопасности в октябре прошлого года на конференции NixCon и сразу была устранена в инфраструктуре проекта. Тем не менее, подробности о проведённой атаке раскрыты только спустя год. Проблема была связана с использованием в GitHub-репозитории Nixpkgs обработчиков GitHub Actions, привязанных к событию «pull_request_target» и выполняющих автоматизированные проверки при поступлении новых pull-запросов.

В отличие от события «pull_request» в «pull_request_target» обработчикам предоставялется доступ на запись и чтение к сборочному окружению, что требует особого внимания при работе с данными, передаваемыми в pull-запросе. В одном из привязанных к «pull_request_target» обработчиков производилась проверка приведённого в pull-запросе файла «OWNERS», для чего собиралась и вызывалась утитита codeowners-validator: steps: — uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf with: ref: refs/pull/$/merge path: pr — run: nix-build base/ci -A codeownersValidator — run: result/bin/codeowners-validator env: OWNERS_FILE: pr/ci/OWNERS

Проблема была в том, что в случае ошибки оформления файла OWNERS утилита codeowners-validator выводила содержимое некорректно оформленной строки в стандартный лог, доступный публично. Атака свелась к размещению в pull-запросе символической ссылки с именем OWNERS, ссылающейся на файл «.credentials», в котором в сборочном окружении размещаются учётные данные. Соответственно, обработка данного файла привела к ошибке и выводу в публичный лог первой строки, содержащей токен доступа к репозиторию.

Уязвимость в обработчике GitHub Actions, позволявшая скомпрометировать пакеты в Nixpkgs

Кроме того, была найдена ещё одна уязвимость в обработчике, выполняющем проверку правил editorconfig. steps: — name: Get list of changed files from PR run: gh api […] | jq [ … ] > «$HOME/changed_files» — uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 with: ref: refs/pull/$/merge — name: Checking EditorConfig run: cat «$HOME/changed_files» | xargs -r editorconfig-checker

В данном случае проблема была в использовании утилиты «xargs» для запуска программы editorconfig-checker с каждым файлом из pull-запроса. Так как имена файлов не проверялись на корректность, атакующий мог разместить в pull-запросе файл со спецсимволами, которые были бы обработаны при запуске утилиты editorconfig-checker как аргументы командной строки. Например, при создании файла «—help» утилита editorconfig-checker вывела бы подсказку об имеющихся опциях.

Источник: opennet.ru

Գնել հուսալի հոստինգ կայքերի համար, DDoS պաշտպանությամբ, VPS VDS սերվերներ 🔥 Գնել հուսալի հոստինգ կայքերի համար, DDoS պաշտպանությամբ, VPS VDS սերվերներ | ProHoster