Resumen
La Exposición Pública del Directorio .git es un fallo grave de hardening en el servidor web. Ocurre cuando el entorno de producción mantiene la carpeta de control de versiones accesible a través del puerto HTTP/HTTPS público, permitiendo a cualquier usuario no autenticado explorar y descargar los artefactos internos del desarrollo.
Contenido
Este fallo ocurre porque el código fuente fue desplegado en el servidor web clonando o manteniendo directamente la carpeta de control de versiones .git dentro del directorio público (public_html o /var/www/html), combinada con la falta de reglas en el servidor (Nginx o Apache) que bloqueen las solicitudes a rutas que comienzan con un punto. Al no existir esta restricción de acceso, un atacante puede realizar peticiones HTTP directas a archivos clave como .git/HEAD o .git/config y utilizar herramientas automatizadas para solicitar de forma recursiva los objetos internos del repositorio, lo que le permite reconstruir en su propia máquina una copia exacta del código fuente completo junto con todo el historial de cambios y desarrollos.
Impacto
- Ingeniería Inversa y Descubrimiento de Fallos: Permite al atacante revisar el código fuente completo, facilitando la identificación de fallos de lógica, vulnerabilidades SQLi, endpoints ocultos o puertas traseras.
- Fuga de Secretos Críticos: Exposición de credenciales escritas directamente en el código (hardcoded credentials), cadenas de conexión a bases de datos, claves privadas SSH/TLS, tokens de API y llaves criptográficas de la aplicación.
- Mapeo de la Red Interna: A través de la revisión del archivo .git/config o scripts de despliegue, el atacante obtiene nombres de dominios internos, direcciones IP privadas y rutas de servidores de integración continua (CI/CD).
Recomendaciones
Denegación de Acceso en Servidores Web (Remediación Inmediata).
Buenas Prácticas en el Pipeline de Despliegue (CI/CD)
- Limpieza en Producción: Evitar clonar repositorios git directamente en el directorio público del servidor web. Utilizar herramientas de despliegue que transfieran únicamente los archivos compilados o necesarios para la ejecución sin la carpeta de control de versiones.
- Rotación de Credenciales: Si el directorio .git estuvo expuesto públicamente, se debe asumir que cualquier clave, token o contraseña almacenada en el historial de commits ha sido comprometida y debe ser revocada y rotada inmediatamente.