Rilasci correttivi del sistema di gestione distribuito dei testi sorgente Git 2.24.1, 2.23.1, 2.22.2, 2.21.1, 2.20.2, 2.19.3, 2.18.2, 2.17.3, 2.16.6, 2.15.4 e 2.14.6 per risolvere vulnerabilità che consentono a un attaccante di riscrivere percorsi arbitrari nel file system, eseguire codice remotamente o sovrascrivere file nella directory «.git/». La maggior parte dei problemi è stata identificata dai membri del team.
Microsoft Security Response Center, cinque delle otto vulnerabilità sono specifiche per la piattaforma Windows.
- — comando stream «feature export-marks=path» per scrivere marcatori in directory arbitrarie, il che può essere utilizzato per sovrascrivere percorsi arbitrari nel FS durante l'operazione «git fast-import» con input non verificati.
- — errata escape degli argomenti della riga di comando a un'esecuzione remota del codice da parte dell'attaccante durante il clonaggio ricorsivo utilizzando URL ssh://. In particolare, l'escape degli argomenti che terminano con una barra rovesciata (ad esempio, «test \») non veniva gestita correttamente. In questo caso, quando l'argomento era circondato da virgolette doppie, l'ultima virgoletta risultava esagerata, consentendo di iniettare opzioni proprie nella riga di comando.
- — durante la clonazione ricorsiva dei sottomoduli («clone —recurse-submodules») in un ambiente Windows in determinate condizioni iniziare l'uso di un unico catalogo git due volte (.git, git~1, git~2 e git~N in NTFS vengono riconosciuti come un unico catalogo, ma questa situazione è stata verificata solo per git~1), il che poteva essere impiegato per organizzare la scrittura nel catalogo «.git». Per eseguire il proprio codice, ad esempio, un attaccante poteva inserire il proprio script tramite il gestore post-checkout nel file .git/config.
- — il gestore dei nomi delle lettere dei disco nei percorsi Windows durante la traduzione di percorsi come «C:\» era progettato solo per sostituire identificatori latini di una sola lettera, ma non teneva conto della possibilità di creare dischi virtuali assegnati tramite «subst lettera:percorso». Questi percorsi venivano elaborati non come assoluti, ma come percorsi relativi, il che consentiva, durante la clonazione di un repository malevolo, di organizzare la scrittura in un catalogo arbitrario al di fuori dell'albero di lavoro dei cataloghi (ad esempio, usando numeri o caratteri unicode nel nome del disco — «1:\what\the\hex.txt» o «ä:\tschibät.sch»).
- — durante l'uso della piattaforma Windows, l'applicazione di flussi di dati alternativi in NTFS, generati attraverso l'aggiunta dell'attributo «:stream-name:stream-type» al nome del file, sovrascrive i file nella directory «.git/» durante la clonazione di un repository dannoso. Ad esempio, il nome «.git::$INDEX_ALLOCATION» in NTFS veniva trattato come un collegamento valido alla directory «.git».
- — quando si utilizza Git in un ambiente WSL (Windows Subsystem for Linux) accedendo alla directory di lavoro la protezione contro la manipolazione dei nomi in NTFS (era possibile effettuare attacchi tramite la traduzione dei nomi FAT, ad esempio, era possibile accedere a «.git» tramite la directory «git~1»).
- —
scritture nella directory «.git/» sulla piattaforma Windows durante la clonazione di repository dannosi contenenti file con una barra rovesciata nel nome (ad esempio, «a\b»), che è consentita in Unix/Linux, ma viene interpretata come parte del percorso in Windows. - — un'insufficiente verifica dei nomi dei sottomoduli poteva essere utilizzata per organizzare attacchi mirati, che durante la clonazione ricorsiva potevano potenzialmente per l'esecuzione del codice dell'attaccante. Git non proibiva la creazione di una directory di sottomodulo all'interno della directory di un altro sottomodulo, il che in molti casi può portare solo a confusione, ma potenzialmente non esclude la sovrascrittura del contenuto di un altro modulo durante il processo di clonazione ricorsiva (ad esempio, le directory dei sottomoduli «hippo» e «hippo/hooks» vengono posizionate come «.git/modules/hippo/» e «.git/modules/hippo/hooks/», e la directory hooks in hippo può essere utilizzata separatamente per l'hosting di gestori eseguibili.
Agli utenti Windows si consiglia di aggiornare urgentemente la versione di Git e, fino all'aggiornamento, di astenersi dal clonare repository non verificati. Se non è possibile aggiornare urgentemente la versione di Git, per ridurre il rischio di attacco si raccomanda di non eseguire «git clone --recurse-submodules» e «git submodule update» con repository non verificati, di non utilizzare «git fast-import» con flussi di input non verificati e di non clonare repository in partizioni basate su NTFS.
Per una protezione aggiuntiva nelle nuove versioni, è inoltre vietato l'uso, nei file .gitmodules, di costrutti nella forma «submodule.{name}.update=!command». Per il rilascio di aggiornamenti dei pacchetti, è possibile controllare le pagine dedicate. ,, , , , , , .
Fonte: opennet.ru
