
Prova di concetto per CVE-2024-32002: vulnerabilità di path injection nei sottomoduli Git.
Durante la risoluzione della macchina Compiled della piattaforma Hack The Box, mi sono imbattuto in un comportamento curioso che coinvolge Git e sottomoduli. Investigando più a fondo, ho trovato questo eccellente post del ricercatore Amal Murali, che descrive nel dettaglio una tecnica di injection del percorso tramite .gitmodules. Da lì, ho deciso di studiare il CVE-2024-32002 e creare una PoC pratica che dimostrasse l'impatto reale della vulnerabilità.
Il CVE-2024-32002 sfrutta una falla critica in Git relativa alla risoluzione dei percorsi dei sottomoduli. Git consente ai repository di includere sottomoduli definiti nel file .gitmodules, specificando percorso e URL. La vulnerabilità emerge quando il percorso viene manipolato per puntare all'interno della directory .git, che memorizza metadati e configurazioni interne del repository.
Combinando:
.gitmodules per definire il percorso come A/modules/xa → .git…il Git viene ingannato e risolve A/modules/x come .git/modules/x, cioè all'interno della directory interna .git. Ciò consente a un attaccante di iniettare file arbitrari come hook malevoli che possono essere eseguiti in operazioni legittime come checkout, merge o clone.
Questa vulnerabilità rappresenta un vettore di esecuzione remota di codice, particolarmente pericoloso in ambienti CI/CD, automazioni o repository condivisi.
setup.shQuesto script automatizza la creazione di un ambiente vulnerabile e riproduce l'impatto della falla:
hook-repo) contenente un hook post-checkout che scrive in /tmp/teste.txtmain-repo) e aggiunge il sottomodulo.gitmodules per reindirizzare il percorso del sottomodulo a A/modules/xa → .git, facendo sì che A/modules/x venga risolto come .git/modules/x.gitmodules malevolo nell'indice usando git update-index --index-infocloned-repo) con , inizializzando il sottomoduloSe l'operazione riesce, l'hook viene eseguito e il file /tmp/teste.txt viene creato con il contenuto:
joao was here
Questo repository include un Dockerfile che:
docker build -t git-cve-poc .
docker run --rm -it git-cve-poc
Questa vulnerabilità colpisce le versioni di Git precedenti alla 2.45.1. La falla è stata corretta con validazioni più rigorose nella risoluzione dei percorsi dei sottomoduli. I repository che usano sottomoduli dovrebbero essere sottoposti ad audit e gli ambienti automatizzati dovrebbero essere aggiornati immediatamente.
Questo progetto è solo a scopo educativo e di ricerca. Non usarlo in ambienti di produzione. L'obiettivo è dimostrare l'impatto tecnico della vulnerabilità e promuovere buone pratiche di sicurezza.
--recursive.git/hooks/ ed esegue git checkout HEAD per innescare l'exploit