Project Zero опубликовал подробности серьезного нарушения безопасности на GitHub и они сообщают, что ошибка влияет на команды рабочего процесса действий из GitHub и имеет высокую степень серьезности. (Эта ошибка была обнаружена в июле, но в рамках стандартного 90-дневного периода раскрытия информации подробности были опубликованы только сейчас.)
Этот недостаток стал одной из немногих уязвимостей, которые не были исправлены. должным образом до истечения стандартного 90-дневного срока, предоставленного Google Project Zero.
По словам Феликса Вильгельма (кто его обнаружил), член команды Project Zero, ошибка влияет на функцию действий GitHub, инструмента для автоматизации работы разработчиков. Это связано с тем, что команды рабочего процесса Actions "уязвимы для атак путем внедрения":
«Действия Github поддерживает функцию, называемую командами рабочего процесса, в качестве канала связи между брокером действий и выполняемым действием. Команды рабочего процесса реализованы в / src / Runner.Worker / ActionCommandManager.cs, и он работает, анализируя STDOUT всех действий, выполняемых путем поиска одного из двух маркеров команд.
Упомяните, что Большая проблема этой функции в том, что она очень уязвима для атак путем инъекций. Поскольку процесс выполнения сканирует каждую строку, напечатанную в STDOUT для команд рабочего процесса, каждое действие GitHub, которое содержит ненадежный контент как часть его выполнения, уязвимо.
В большинстве случаев возможность устанавливать произвольные переменные среды приводит к удаленному выполнению кода, как только запускается другой рабочий процесс. Я потратил некоторое время на изучение популярных репозиториев GitHub, и почти любой проект, в котором используются немного сложные действия GitHub, уязвим для такого рода ошибок.
Posteriormente, привел несколько примеров того, как можно использовать ошибку а также предложил решение:
«Я действительно не знаю, как лучше это исправить. Я считаю, что способ реализации команд рабочего процесса в корне небезопасен. Упразднение синтаксиса команды v1 и усилениеet-env списком разрешений, вероятно, сработают против прямых векторов RCE.
«Однако даже возможности переопределить« нормальные »переменные среды, используемые на более поздних этапах, вероятно, достаточно для использования более сложных действий. Я также не анализировал влияние на безопасность других элементов управления в рабочей области.
Более того, отметьте, что хорошее долгосрочное решение Команды рабочего процесса можно было бы переместить в отдельный канал (например, новый дескриптор файла), чтобы избежать синтаксического анализа с помощью STDOUT, но это приведет к поломке большого количества существующего кода действия.
Что касается GitHub, то его разработчики 1 октября опубликовали информационное сообщение и исключили уязвимые команды, но утверждали, что то, что обнаружил Вильгельм, на самом деле было «умеренной уязвимостью безопасности». GitHub присвоил идентификатор ошибки CVE-2020-15228:
«В среде выполнения GitHub Actions была обнаружена умеренная уязвимость безопасности, которая может допускать внедрение путей и переменных среды в рабочие процессы, которые регистрируют ненадежные данные в STDOUT. Это может привести к введению или изменению переменных среды без намерения автора рабочего процесса.
«Чтобы помочь нам решить эту проблему и позволить вам динамически устанавливать переменные среды, мы представили новый набор файлов для обработки обновлений среды и пути в рабочих процессах.
«Если вы используете локальных брокеров, убедитесь, что они обновлены до версии 2.273.1 или выше.
По словам Вильгельма, 12 октября Project Zero связался с GitHub и заранее предложил им 14-дневный крайний срок, если GitHub захочет больше времени для отключения уязвимых команд. Конечно, предложение было принято, и GitHub надеялся отключить уязвимые команды после 19 октября. Затем Project Zero установил новую дату раскрытия информации на 2 ноября.
источник: https://bugs.chromium.org