Уязвимост в обработчика на 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“, се извършваше проверка на файла „OWNERS”, предоставен в pull-заявката, за което се събираше и извикваше утилитата 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. стъпки: — име: Вземете списък на променените файлове от PR run: gh api […] | jq [ … ] > «$HOME/changed_files» — uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 with: ref: refs/pull/$/merge — име: Проверка на 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