
Prova de Conceito para CVE-2024-32002: Vulnerabilidade de injeção de caminho em submódulos do Git.
Durante a resolução da máquina Compiled da plataforma Hack The Box, me deparei com um comportamento curioso envolvendo Git e submódulos. Ao investigar mais a fundo, encontrei este excelente post do pesquisador Amal Murali, que detalha uma técnica de injeção de caminho via .gitmodules. A partir disso, decidi estudar o CVE-2024-32002 e criar uma PoC prática que demonstrasse o impacto real da vulnerabilidade.
O CVE-2024-32002 explora uma falha crítica no Git relacionada à resolução de caminhos de submódulos. O Git permite que repositórios incluam submódulos definidos no arquivo .gitmodules, especificando caminho e URL. A vulnerabilidade surge quando o caminho é manipulado para apontar para dentro do diretório .git, que armazena metadados e configurações internas do repositório.
Ao combinar:
.gitmodules para definir o caminho como A/modules/xa → .git…o Git é enganado e resolve A/modules/x como .git/modules/x, ou seja, dentro do diretório interno .git. Isso permite que um atacante injete arquivos arbitrários como hooks maliciosos que podem ser executados em operações legítimas como checkout, merge ou clone.
Essa vulnerabilidade representa um vetor de execução remota de código, especialmente perigoso em ambientes CI/CD, automações ou repositórios compartilhados.
setup.sh demonstraEste script automatiza a criação de um ambiente vulnerável e reproduz o impacto da falha:
hook-repo) contendo um hook post-checkout que escreve em /tmp/teste.txtmain-repo) e adiciona o submódulo.gitmodules para redirecionar o caminho do submódulo para A/modules/xa → .git, fazendo com que A/modules/x seja resolvido como .git/modules/x.gitmodules malicioso no índice usando git update-index --index-infocloned-repo) com --recursive, inicializando o submódulo.git/hooks/ e executa git checkout HEAD para disparar o exploitSe bem-sucedido, o hook é executado e o arquivo /tmp/teste.txt é criado com o conteúdo:
joao was here
Este repositório inclui um Dockerfile que:
docker build -t git-cve-poc .
docker run --rm -it git-cve-poc
Essa vulnerabilidade afeta versões do Git anteriores à 2.45.1. A falha foi corrigida com validações mais rígidas na resolução de caminhos de submódulos. Repositórios que usam submódulos devem ser auditados, e ambientes automatizados devem ser atualizados imediatamente.
Este projeto é apenas para fins educacionais e de pesquisa. Não use em ambientes de produção. O objetivo é demonstrar o impacto técnico da vulnerabilidade e promover boas práticas de segurança.