Вопрос или проблема
Это вопрос для обратной связи, чтобы выяснить, имеет ли проблема широкое влияние.
Ситуация:
При использовании GitLab CI с docker-executor, ‘git clone’ используемого репозитория выполняется с umask 0000,
Это фактически делает весь клонированный контент доступным для записи любым пользователем.
Отправка этих файлов без изменений (например, в docker-образах) может потенциально создать серьезные проблемы с безопасностью, в зависимости от программного обеспечения.
По крайней мере в нашем случае, рабочий процесс
GitLab CI -> docker-executor -> сборка и загрузка docker-образа из репозитория
является преобладающим, и в итоге мы получили docker-образы, содержащие код, доступный для записи любым пользователем.
При исследовании проблемы мы обнаружили:
- Что эта проблема существует с конца 2015 года и почти никто о ней не говорит
- Что существует флаг функции для отключения этого (FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR) с конца 2020 года, но об этом тоже никто не говорит
Это оставляет нам 3…
Вопрос(ы):
- Никто не использует GitLab таким образом?
- Все всегда изменяют права доступа ко всему контенту из репозиториев / в выводе?
- Существует ли множество дистрибутивов программного обеспечения с кодом, доступным для записи любым пользователем?
Ответ или решение
Влияние использования 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), но информация об этом малодоступна.
Ключевые вопросы
В связи с вышеописанным, можно выделить несколько ключевых вопросов:
- Использует ли кто-то GitLab CI с такими настройками и не сталкивается ли с этой проблемой?
- Применяет ли сообщество практики, такие как принудительное изменение прав доступа (chmod) для всех клонированных файлов?
- Существуют ли Docker-образы, содержащие world-writable код, которые могут быть распространены и использоваться в продуктивных средах?
Заключение
Вопросы безопасности при использовании GitLab CI и Docker-исполнителя заслуживают серьезного внимания. Обсуждение проблемы world-writable файлов имеет потенциал не только для повышения осведомленности в сообществе, но и для улучшения практик разработки и развертывания приложений. Важно, чтобы пользователи систем CI/CD, таких как GitLab, были осведомлены о рисках и имели доступ к инструментам и методам, позволяющим минимизировать потенциальные угрозы безопасности.
Тем не менее, ответ на вопросы о распространенности проблемы требует более глубокого изучения и активности разработчиков и специалистов в области IT.