Sono stati pubblicati gli aggiornamenti correttivi della distribuzione del sistema di gestione del codice sorgente Git 2.39.1, 2.38.3, 2.37.5, 2.36.4, 2.35.6, 2.34.6, 2.33.6, 2.32.5, 2.31.6 e 2.30.7, nei quali sono state corrette due vulnerabilità che consentono di eseguire codice sull sistema dell'utente utilizzando il comando «git archive» e lavorando con repository esterni non affidabili. Le vulnerabilità sono state provocate da errori nel codice di formattazione dei commit e nell'analisi del file «.gitattributes», che durante l'elaborazione di repository esterni possono portare alla scrittura nella memoria oltre il limite della heap e alla lettura di dati arbitrari dalla memoria.
Entrambe le vulnerabilità sono state scoperte durante un audit di sicurezza del codice sorgente di Git, condotto dall'azienda X41 per conto del fondo OSTIF (Open Source Technology Improvement Fund), creato con l'obiettivo di migliorare la sicurezza dei progetti open source. Oltre ai due problemi critici discussi di seguito, durante l'audit è stata trovata anche una vulnerabilità pericolosa, una vulnerabilità di media gravità e quattro problemi non pericolosi. Sono state fornite anche 27 raccomandazioni per migliorare la sicurezza del codice sorgente.
- CVE-2022-41903: overflow intero nel codice di formattazione delle informazioni sui commit, che si verifica durante l'elaborazione di grandi valori di offset negli operatori di riempimento, come «%<(', «%(', «%>>(', e «%><('. L'overflow intero si verifica nella funzione format_and_pad_commit() a causa dell'uso del tipo int per la variabile size_t, che nella chiamata a memcpy() partecipa alla definizione della dimensione dell'offset del blocco copiato.
La vulnerabilità si manifesta sia durante una chiamata diretta con parametri di formattazione appositamente formati (ad esempio, eseguendo «git log —format=…»), sia durante l'uso indiretto della formattazione durante l'esecuzione del comando «git archive» in un repository controllato dall'attaccante. Nel secondo caso, i modificatori di formattazione sono specificati tramite il parametro export-subst nel file «.gitattributes», che può essere inserito dall'attaccante nel suo repository. Il problema può essere utilizzato per leggere e scrivere aree arbitrarie nella heap e può portare all'esecuzione di codice malevolo quando si lavora con repository non verificati.
- CVE-2022-23521: overflow di interi durante l'analisi del contenuto dei file «.gitattributes» nel repository, che si manifesta durante l'elaborazione di un numero molto elevato di modelli di percorsi dei file o di un gran numero di attributi con un unico modello, così come durante l'analisi di nomi di attributi molto grandi. Il problema può essere sfruttato per leggere e scrivere aree arbitrarie nella memoria e portare all'esecuzione di codice da parte di un attaccante quando si lavora con un repository non verificato, in cui l'attaccante può inserire un file .gitattributes appositamente formattato e garantire che venga incluso nell'indice.
È possibile monitorare la pubblicazione degli aggiornamenti dei pacchetti nelle distribuzioni alle seguenti pagine: Debian, Ubuntu, Gentoo, RHEL, SUSE, Arch, FreeBSD, NetBSD. Per ridurre il rischio di attacchi in caso di impossibilità di installare tempestivamente un aggiornamento, si raccomanda di astenersi dal lavorare con repository non affidabili e dall'utilizzo del comando «git archive». È importante ricordare che il comando «git archive» può essere avviato in modo implicito, ad esempio, da git daemon. Per disattivare l'esecuzione di «git archive» in git daemon è necessario modificare il parametro daemon.uploadArch con il comando «git config —global daemon.uploadArch false».
In aggiunta, possiamo segnalare un'altra vulnerabilità (CVE-2022-41953) nel prodotto Git per Windows, che consente di eseguire codice durante il cloning tramite l'interfaccia grafica di repository esterni non verificati. Il problema è causato dal fatto che Git GUI per Windows, dopo l'operazione di «checkout», esegue automaticamente alcuni comandi di post-elaborazione, come l'esecuzione del programma di controllo ortografico, mentre i percorsi di ricerca del file di controllo ortografico includono anche l'albero di lavoro clonato (l'attacco consiste nell'aggiungere il controllo ortografico all'albero di lavoro del repository).
Fonte: opennet.ru
