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 поддерживаемых команд остаются незаблокированными. Для организации установки переменных окружения предложено использовать промежуточные файлы.