Google опубликовала информацию об опасной уязвимости в GitHub
ИБ-подразделение Project Zero из Google раскрыло информацию о методе эксплуатации уязвимости в механизме GitHub Actions, предназначенном для автоматизации различных операций в GitHub, сообщает OpenNet.
Уязвимость (CVE-2020-15228) вызвана тем, что обмен командами между процессом запуска Action и запускаемым действием производится через стандартный поток STDOUT — Actions Runner парсит стандартный поток, формируемый в процессе выполнения действий, и выделяет в нём маркеры команд «##[command parameter1=data;]command-value…»
.
Проблема в том, что некоторые обработчики действий допускают передачу через тот же стандартный поток сторонних данных, например заголовок Issue или данные из коммитов. Злоумышленник может воспользоваться этой особенностью и осуществить подстановку своих команд, которые будут обработаны в Actions Runner. В частности, при помощи команды set-env
можно выставить любую переменную окружения, в том числе определить переменную NODE_OPTIONS
и организовать выполнение своего кода во время обработки действия в Node.js.
1 октября GitHub сообщил о переводе в разряд устаревших наиболее опасных команд set-env
и add-path
и выпустил обновление npm-пакета @actions/core, в который было добавлено предупреждение о возможных проблемах.
GitHub был уведомлён об уязвимости в июле и получил три месяца на её полное устранение, после чего — ещё 14 дополнительных дней, но всё равно не успел уложиться в срок, истекавший 2 ноября. В Project Zero отказались сместить дату ещё на 48 часов и опубликовали детали в намеченный день.
GitHub оперативно выпустил обновление Actions Runner 2.273.6, в котором заблокировал упомянутую в прототипе эксплойта команду set-env
, но другие 13 поддерживаемых команд остаются незаблокированными. Для организации установки переменных окружения предложено использовать промежуточные файлы.
Читать на dev.by