Ultima modifica:
Sono state recentemente pubblicati i dettagli su due vulnerabilità critiche di git (CVE-2022-41903 e CVE-2022-23521) che consentono l'esecuzione di Codice Remoto in diversi contesti di utilizzo del tool.
Problemi di sicurezza critici su Git - tra cui due possibili Remote Code Execution
Un recente audit di sicurezza effettuato sul famoso programma Git ha evidenziato diverse vulnerabilità sullo strumento, alcune delle quali dall'elevato livello di criticità.
Evil clone operation (CVE-2022-23521)
I gitattributes sono un meccanismo che consente di definire alcuni attributi per specifici paths. Questi possono essere definiti aggiungendo un file
.gitattributes
al repo, un file contenente un insieme di file patterns e i relativi attributi da impostate per ogni path corrispondente al pattern.Durante il parsing dei gitattributes, però, possono verificarsi diversi integer overflows per ognugno dei seguenti casi:
- quando c'è un elevato numero di path patterns
- quando c'è un elevato numero di attributi per un singolo pattern
- quando il nomi degli attributi dichiarati sono troppo grandi
Questi tre scenari possono essere sfruttati da un attaccante committando appositamente un file
.gitattributes
malevolo all'interno di un repo, in modo tale da causare il bug durante l'esecuzione di un comando git pull
o git clone
, con lo scopo finale di leggere e scrivere valori arbitrari nella memoria Heap e, potenzialmente, causare esecuzione di codice arbitrario.Pretty but malicious (CVE-2022-41903)
La seconda criticità individuata permette l'esecuzione di codice remoto durante le operazioni di archiviazione comunemente eseguite da applicazioni come GitHub e GitLab.
I comandi
Un ipotetico attaccante potrebbe causare il bug tramite un'iniezione arbitraria di argomenti al comando
I comandi
git log
e git archive
consentono di visualizzare i vari commit con una formattazione "pretty". Processando i padding operators, però, può verificarsi un integer overflow nel parser del formato nel caso in cui venga utilizzato uno specifico pattern di identificatori.Un ipotetico attaccante potrebbe causare il bug tramite un'iniezione arbitraria di argomenti al comando
git log
, anche se il vettore di attacco più interessante è l'operazione di archiviazione compita da git. L'attaccante potrebbe includere un'istruzione export-subst
nel file .gitattributes
all'interno di un repository. Ciò farebbe scattare il bug durante l'esecuzione del comando git archive
, senza però necessitare di passare nessun argomento arbitrario.Risorse esterne, fix e workaround relativi all'argomento
Di seguito trovate maggiori dettagli in merito alle due vulnerabilità sopra-citate, alle relative fix e ai possibili workaround per chi non può aggiornare git all'ultime versione disponibile:
- SentinelOne, The Good, the Bad and the Ugly in Cybersecurity – Week 3
- GitLab, Critical Security Release: 15.7.5, 15.6.6, and 15.5.9
- PortSwigger, Git security audit reveals critical overflow bugs
Made with ❤ for Inforge