
Prueba de concepto para CVE-2024-32002: vulnerabilidad de inyección de ruta en submódulos de Git.
Durante la resolución de la máquina Compiled de la plataforma Hack The Box, me encontré con un comportamiento curioso relacionado con Git y los submódulos. Al investigar más a fondo, encontré este excelente post del investigador Amal Murali, que detalla una técnica de inyección de ruta mediante .gitmodules. A partir de eso, decidí estudiar el CVE-2024-32002 y crear una PoC práctica que demostrara el impacto real de la vulnerabilidad.
El CVE-2024-32002 explota una falla crítica en Git relacionada con la resolución de rutas de submódulos. Git permite que los repositorios incluyan submódulos definidos en el archivo .gitmodules, especificando ruta y URL. La vulnerabilidad surge cuando la ruta se manipula para apuntar al interior del directorio .git, que almacena metadatos y configuraciones internas del repositorio.
Al combinar:
.gitmodules para definir la ruta como A/modules/xa → .git…Git es engañado y resuelve A/modules/x como .git/modules/x, es decir, dentro del directorio interno .git. Esto permite que un atacante inyecte archivos arbitrarios como hooks maliciosos que pueden ejecutarse en operaciones legítimas como checkout, merge o clone.
Esta vulnerabilidad representa un vector de ejecución remota de código, especialmente peligroso en entornos CI/CD, automatizaciones o repositorios compartidos.
setup.shEste script automatiza la creación de un entorno vulnerable y reproduce el impacto de la falla:
hook-repo) que contiene un hook post-checkout que escribe en /tmp/teste.txtmain-repo) y añade el submódulo.gitmodules para redirigir la ruta del submódulo hacia A/modules/xa → .git, haciendo que A/modules/x se resuelva como .git/modules/x.gitmodules malicioso en el índice usando git update-index --index-infocloned-repo) con , inicializando el submóduloSi tiene éxito, el hook se ejecuta y se crea el archivo /tmp/teste.txt con el contenido:
joao was here
Este repositorio incluye un Dockerfile que:
docker build -t git-cve-poc .
docker run --rm -it git-cve-poc
Esta vulnerabilidad afecta a versiones de Git anteriores a la 2.45.1. La falla fue corregida con validaciones más estrictas en la resolución de rutas de submódulos. Los repositorios que usan submódulos deben ser auditados, y los entornos automatizados deben actualizarse de inmediato.
Este proyecto es solo con fines educativos y de investigación. No lo uses en entornos de producción. El objetivo es demostrar el impacto técnico de la vulnerabilidad y promover buenas prácticas de seguridad.
--recursive.git/hooks/ y ejecuta git checkout HEAD para disparar el exploit