Уязвимость в GitHub Actions, допускающая подстановку команд.

Kate

Administrator
Команда форума
Компания Google раскрыла информацию о методе эксплуатации уязвимости (CVE-2020-15228) в механизме GitHub Actions, предназначенном для прикрепления обработчиков для автоматизации различных операций в GitHub. Например, при помощи GitHub Actions можно выполнить определённые проверки и тесты при совершении коммитов или автоматизировать обработку новых Issues. Уязвимость вызвана тем, что обмен командами между процессом запуска Action и запускаемым действием (Action) производится через стандартный поток (STDOUT) - Actions Runner парсит стандартный поток, формируемый в процессе выполнения действий, и выделяет в нём маркеры команд "##[command parameter1=data;]command-value...".

Проблема в том, что некоторые обработчики действий допускают передачу через тот же стандартный поток сторонних данных, например, передают через стандартный поток заголовок Issue или данные из коммитов. Злоумышленник может воспользоваться этой особенностью и осуществить подстановку своих команд, которые будут обработаны в Actions Runner. В частности, при помощи команды "set-env" можно выставить любую переменную окружения, в том числе определить переменную "NODE_OPTIONS" и организовать выполнение своего кода во время обработки действия в Node.js.

Например, проект VSCode запускает действие CopyCat для копирования новых issue в другой репозиторий. CopyCat выводит содержимое issue.title в stdout, что позволяет атаковать систему, на которой выполняется Actions Runner, через создание issue c заголовком вида "##[set-env name=NODE_OPTIONS;]--experimental-modules --experimental-loader=data:text/javascript,....".

1 октября GitHub сообщил о переводе в разряд устаревших наиболее опасных команд "set-env" и "add-path" и выпустил обновление npm-пакета @actions/core, в который было добавлено предупреждение о возможных проблемах. Полное устранение уязвимости было намечено на 2 ноября, но GitHub не успел подготовить изменение и попросил у выявивших проблему исследователей сдвинуть ранее намеченную дату раскрытия информации (GitHub был уведомлен о проблеме ещё в июле). Google Project Zero отказался от смещения даты, так как до этого уже было предоставлено 14 дополнительных дней сверх срока, и опубликовал детали в изначально намеченный день.

GitHub оперативно выпустил обновление Actions Runner 2.273.6, в котором заблокировал упомянутую в прототипе эксплоита команду "set-env", но другие 13 поддерживаемых команд остаются незаблокированными (т.е. пока устранён лишь один их частных случаев, но сама проблема остаётся и потенциально для атаки могут быть использованы другие команды). Для организации установки переменных окружения предложено использовать промежуточные файлы.

Источник статьи: https://www.opennet.ru/opennews/art.shtml?num=54023
 
Сверху