Все в курсе, что GitLab CI+docker-executor создает файлы с правами на запись для всех?

Вопрос или проблема

Это вопрос для обратной связи, чтобы выяснить, имеет ли проблема широкое влияние.

Ситуация:

При использовании GitLab CI с docker-executor, ‘git clone’ используемого репозитория выполняется с umask 0000,

Это фактически делает весь клонированный контент доступным для записи любым пользователем.

Отправка этих файлов без изменений (например, в docker-образах) может потенциально создать серьезные проблемы с безопасностью, в зависимости от программного обеспечения.

По крайней мере в нашем случае, рабочий процесс
GitLab CI -> docker-executor -> сборка и загрузка docker-образа из репозитория
является преобладающим, и в итоге мы получили docker-образы, содержащие код, доступный для записи любым пользователем.

При исследовании проблемы мы обнаружили:

  • Что эта проблема существует с конца 2015 года и почти никто о ней не говорит
  • Что существует флаг функции для отключения этого (FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR) с конца 2020 года, но об этом тоже никто не говорит

Это оставляет нам 3…

Вопрос(ы):

  1. Никто не использует GitLab таким образом?
  2. Все всегда изменяют права доступа ко всему контенту из репозиториев / в выводе?
  3. Существует ли множество дистрибутивов программного обеспечения с кодом, доступным для записи любым пользователем?

Ответ или решение

Влияние использования GitLab CI с Docker-исполнителем на уровень безопасности файлов

Введение

Одним из ключевых инструментов, применяемых в современном DevOps, является GitLab CI, который позволяет автоматизировать процессы сборки и развертывания приложений. Однако, при использовании Docker-исполнителя для выполнения процессов CI/CD, существует риск образования файлов с разрешениями на запись для всех пользователей. Это может привести к серьезным проблемам безопасности, что важно обсудить более подробно.

Ситуация

Когда вы используете GitLab CI с Docker-исполнителем, ‘git clone’ вашего репозитория выполняется с установленным значением umask 0000. Это означает, что все сгенерированные файлы становятся доступными для записи любому пользователю системы, что в свою очередь создает риск несанкционированного изменения кода.

Такой подход к работе с файловыми разрешениями может оказать серьезное влияние в различных сценариях, особенно если эти файлы затем упаковываются в Docker-образы и распространяются. В большинстве случаев подобные образы могут включать уязвимую или критическую для безопасности информацию, что делает их привлекательными для злоумышленников.

Проблема

Проблема с world-writable файлами при использовании GitLab CI с Docker-исполнителем существует с 2015 года, однако обсуждение этого вопроса не получило должного внимания в сообществе. К тому же, с 2020 года существует возможность отключения этой функциональности через специальный флаг (FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR), но информация об этом малодоступна.

Ключевые вопросы

В связи с вышеописанным, можно выделить несколько ключевых вопросов:

  1. Использует ли кто-то GitLab CI с такими настройками и не сталкивается ли с этой проблемой?
  2. Применяет ли сообщество практики, такие как принудительное изменение прав доступа (chmod) для всех клонированных файлов?
  3. Существуют ли Docker-образы, содержащие world-writable код, которые могут быть распространены и использоваться в продуктивных средах?

Заключение

Вопросы безопасности при использовании GitLab CI и Docker-исполнителя заслуживают серьезного внимания. Обсуждение проблемы world-writable файлов имеет потенциал не только для повышения осведомленности в сообществе, но и для улучшения практик разработки и развертывания приложений. Важно, чтобы пользователи систем CI/CD, таких как GitLab, были осведомлены о рисках и имели доступ к инструментам и методам, позволяющим минимизировать потенциальные угрозы безопасности.

Тем не менее, ответ на вопросы о распространенности проблемы требует более глубокого изучения и активности разработчиков и специалистов в области IT.

Оцените материал
Добавить комментарий

Капча загружается...