Открытый файл .gitlab-ci.yml: раскрытие структуры пайплайнов
Файлы конфигураций CI/CD (.gitlab-ci.yml, .github/workflows) описывают этапы автоматической сборки, тестирования и развертывания проекта на серверах.
Доступность этих файлов по публичному HTTP-запросу раскрывает структуру внутренних серверов, команды сборки, пути к приватным реестрам контейнеров и используемые зависимости.
Степень критичности и чем опасна уязвимость
Информация о структуре пайплайна помогает злоумышленникам планировать атаки на цепочку поставок (Supply Chain Attacks) и искать уязвимости в зависимостях.
Как наш сканер находит эту уязвимость
Сканер проверяет доступность /.gitlab-ci.yml и /.github/workflows/deploy.yml, фиксируя отсутствие блокировки системных файлов сборки.
В рамках сканирования конфигурационных файлов модуль Site Check отправляет легковесные изолированные HEAD- и GET-запросы с валидацией статус-кодов (404/403 vs 200). Запросы содержат стандартные маркеры безопасности и не сохраняют скачиваемые данные в постоянное хранилище, предотвращая несанкционированное распространение конфиденциальной информации.
Как устранить уязвимость (Пошаговое руководство)
Для ликвидации риска выполните следующие действия в конфигурации вашего сервера или приложения:
location ~ /\.(gitlab-ci\.yml|github) {
deny all;
return 404;
}
- Запретите веб-серверу отдавать файлы с префиксом точки и расширением .yml.
- Убедитесь, что процесс развертывания не копирует служебные файлы CI/CD в директорию публичной раздачи.
Анатомия атаки и реальные последствия для проекта
Файл .gitlab-ci.yml раскрывает полную структуру пайплайнов, имена приватных докеров, внутренние адреса серверов сборки и переменные CI_JOB_TOKEN. Атакующий использует эту информацию для целенаправленных атак на инфраструктуру поставки (Supply Chain Attack).
Влияние на соответствие стандартам: Нарушение требований безопасности стандартов OWASP Top 10 (A05:2021 Security Misconfiguration), ISO/IEC 27001 и отраслевых норм 152-ФЗ.
Матрица эшелонированной защиты (Defense-in-Depth)
| Уровень защиты | Техническое действие | Инструмент / Механизм |
|---|---|---|
| Периметр веб-сервера (Nginx / Edge) | Применение изолирующих правил блокировки для маршрутов, связанных с exposed-gitlab-ci-config | Nginx Security Directives |
| Среда исполнения и конфигурация | Отключение отладочных механизмов и разграничение прав доступа к компоненту exposed-gitlab-ci-config | Runtime Security Hardening |
| Пайплайн DevSecOps контроля | Автоматическое тестирование конфигурации exposed-gitlab-ci-config в CI/CD пайплайне при каждом релизе | Site Check Security Gate |
Верификация устранения: команды для быстрой проверки
После внесения изменений в настройки сервера или исходный код приложения проверьте отсутствие уязвимости с помощью терминальных утилит:
curl -I -s https://ваш-домен.com/.gitlab-ci.yml | grep "HTTP/"
# Ожидается 404
Рекомендации DevSecOps для безопасного развертывания
Заблокируйте в Nginx отдачу любых конфигурационных файлов YAML/YML через location ~* \.(ya?ml|toml|ini)$ { deny all; }.
- ✓ Добавить шаблоны .env* и .git* в корень .gitignore и глобальный gitignore
- ✓ Внедрить автоматический pre-commit хук gitleaks в локальный пайплайн разработки
- ✓ Настроить регулярную ротацию скомпрометированных токенов API
- ✓ Проверить конфигурацию веб-сервера на блокировку запросов к скрытым файлам
Часто задаваемые вопросы по устранению
Утечки секретов и конфигурационных файлов представляют максимальную угрозу автоматизированного захвата инфраструктуры. Рекомендуется внедрить pre-commit хуки (GitLeaks, TruffleHog), вынести переменные окружения в защищённые хранилища секретов (HashiCorp Vault, Doppler, AWS Secrets Manager) и настроить в веб-сервере безусловный запрет отдачи скрытых файлов с точкой.
Для предотвращения вектора «Открытый файл .gitlab-ci.yml: раскрытие структуры пайплайнов» зафиксируйте проверочные правила в CI/CD пайплайне и настройте непрерывный мониторинг внешнего периметра через Site Check.