关联漏洞
介绍
# 💥 CVE-2024-32002 – Git Submodule Path Injection PoC
## Motivação
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](https://amalmurali.me/posts/git-rce/) 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.
## 🧠 Visão geral 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:
- **Manipulação do `.gitmodules`** para definir o caminho como `A/modules/x`
- **Criação de um symlink `a → .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.
---
## ⚙️ O que o script `setup.sh` demonstra
Este script automatiza a criação de um ambiente vulnerável e reproduz o impacto da falha:
1. **Cria um submódulo malicioso (`hook-repo`)** contendo um hook `post-checkout` que escreve em `/tmp/teste.txt`
2. **Inicializa o repositório principal (`main-repo`)** e adiciona o submódulo
3. **Modifica o arquivo `.gitmodules`** para redirecionar o caminho do submódulo para `A/modules/x`
4. **Cria um symlink `a → .git`**, fazendo com que `A/modules/x` seja resolvido como `.git/modules/x`
5. **Injeta o `.gitmodules` malicioso no índice** usando `git update-index --index-info`
6. **Realiza um commit legítimo** para simular atividade normal
7. **Clona o repositório (`cloned-repo`) com `--recursive`**, inicializando o submódulo
8. **Copia o hook malicioso para `.git/hooks/`** e executa `git checkout HEAD` para disparar o exploit
Se bem-sucedido, o hook é executado e o arquivo `/tmp/teste.txt` é criado com o conteúdo:
```bash
joao was here
```
# 🐳 Ambiente Docker
Este repositório inclui um Dockerfile que:
1. **Instala o Git 2.45.0 (versão vulnerável)
2. **Cria um usuário normal (joao)
3. **Copia os arquivos da PoC
4. **Executa automaticamente o setup.sh
# 🔧 Como reproduzir
```bash
docker build -t git-cve-poc .
docker run --rm -it git-cve-poc
```
# 🔐 Impacto e mitigação
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.
# ⚠️ Aviso legal
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.
文件快照
[4.0K] /data/pocs/984e0824b25a810936bb6f190233baf32fcfdc77
├── [1.2K] Dockerfile
├── [3.4K] README.md
└── [1.8K] setup.sh
1 directory, 3 files
备注
1. 建议优先通过来源进行访问。
2. 如果因为来源失效或无法访问,请发送邮件到 f.jinxu#gmail.com 索取本地快照(把 # 换成 @)。
3. 神龙已为您对 POC 代码进行快照,为了长期维护,请考虑为本地 POC 付费/捐赠,感谢您的支持。