Уязвимость в 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 поддерживаемых команд остаются незаблокированными.

Источники

править
 
 
Creative Commons
Эта статья содержит материалы из статьи «Уязвимость в GitHub Actions, допускающая подстановку команд», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.