Уязвимость в GitHub Actions, допускающая подстановку команд
4 ноября 2020 года
Компания 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, что позволяет атаковать систему через создание 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 поддерживаемых команд остаются незаблокированными.
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.