Открытая папка .git: почему это опасно и как закрыть доступ
Директория .git содержит полную историю коммитов, исходный код, ветки и конфигурационные файлы локального репозитория Git. При копировании проекта на сервер через git clone папка .git часто оказывается в публичной веб-директории.
Если веб-сервер отдает файлы из директории /.git/HEAD или /.git/config, злоумышленник с помощью общедоступных утилит (например, git-dumper) может за пару минут восстановить и скачать весь исходный код вашего проекта.
Степень критичности и чем опасна уязвимость
Утечка исходного кода обнажает внутреннюю бизнес-логику, закрытые алгоритмы и забытые в старых коммитах пароли, даже если в последней версии они были удалены из основного файла конфигурации.
Как наш сканер находит эту уязвимость
Site Check выполняет безопасную проверку доступности системных файлов /.git/HEAD и /.git/config. В случае обнаружения статуса 200 проверка сигнализирует о критическом риске.
В рамках сканирования конфигурационных файлов модуль Site Check отправляет легковесные изолированные HEAD- и GET-запросы с валидацией статус-кодов (404/403 vs 200). Запросы содержат стандартные маркеры безопасности и не сохраняют скачиваемые данные в постоянное хранилище, предотвращая несанкционированное распространение конфиденциальной информации.
Как устранить уязвимость (Пошаговое руководство)
Для ликвидации риска выполните следующие действия в конфигурации вашего сервера или приложения:
# Блокировка доступа к папке .git в Nginx:
location ~ /\.git {
deny all;
return 404;
}
- Заблокируйте директорию /.git на уровне Nginx или Apache.
- При деплое используйте доставку артефактов без истории репозитория (например, через git archive или rsync с исключением .git).
- Проверьте историю коммитов на наличие старых забытых паролей.
Анатомия атаки и реальные последствия для проекта
При обнаружении открытой папки /.git атакующий использует специализированный софт (например, git-dumper или GitTools). Утилита последовательно скачивает объекты из /.git/objects/ и воссоздает полное локальное дерево репозитория, включая приватные коммиты, исходный код бэкенда и когда-либо удалённые секреты.
Влияние на соответствие стандартам: Несоответствие стандарту ISO/IEC 27001 (контроль A.8.28 — безопасность исходного кода) и требованиям безопасности разработки ГОСТ Р 56939-2016.
Матрица эшелонированной защиты (Defense-in-Depth)
| Уровень защиты | Техническое действие | Инструмент / Механизм |
|---|---|---|
| Периметр веб-сервера (Nginx / Apache) | Запрет отдачи каталогов /.git/* с кодом ответа 404 | Nginx deny all |
| Пайплайн развертывания (Deployment) | Использование multi-stage Docker сборок или rsync с исключением флага --exclude=".git" | Docker Multi-stage / GitHub Actions |
| Аудит внешнего периметра | Регулярная проверка доступности /.git/HEAD внешними сканерами | Site Check Scanner |
Верификация устранения: команды для быстрой проверки
После внесения изменений в настройки сервера или исходный код приложения проверьте отсутствие уязвимости с помощью терминальных утилит:
curl -s -o /dev/null -w "%{http_code}\n" https://ваш-домен.com/.git/HEAD
# Ожидается: 404
Рекомендации DevSecOps для безопасного развертывания
Никогда не деплойте проекты методом прямого клонирования git clone в корень веб-сервера. Используйте многоэтапные Docker-сборки (multi-stage builds) или отдельную директорию публикации dist/ / build/.
- ✓ Добавить шаблоны .env* и .git* в корень .gitignore и глобальный gitignore
- ✓ Внедрить автоматический pre-commit хук gitleaks в локальный пайплайн разработки
- ✓ Настроить регулярную ротацию скомпрометированных токенов API
- ✓ Проверить конфигурацию веб-сервера на блокировку запросов к скрытым файлам
Часто задаваемые вопросы по устранению
Утечки секретов и конфигурационных файлов представляют максимальную угрозу автоматизированного захвата инфраструктуры. Рекомендуется внедрить pre-commit хуки (GitLeaks, TruffleHog), вынести переменные окружения в защищённые хранилища секретов (HashiCorp Vault, Doppler, AWS Secrets Manager) и настроить в веб-сервере безусловный запрет отдачи скрытых файлов с точкой.
Для предотвращения вектора «Открытая папка .git: почему это опасно и как закрыть доступ» зафиксируйте проверочные правила в CI/CD пайплайне и настройте непрерывный мониторинг внешнего периметра через Site Check.