CVE-2024-45405 in gitoxide
Riassunto
di VulDB • 20/06/2026
`gix-path` è una crate del progetto `gitoxide` (un'implementazione di `git` scritta in Rust) che si occupa dei percorsi e delle relative conversioni. Prima della versione 0.10.11, `gix-path` eseguiva `git` per trovare il percorso di un file di configurazione associato all'installazione di `git`, ma risolveva in modo improprio i percorsi contenenti caratteri insoliti o non ASCII, consentendo in rari casi a un attaccante locale di iniettare una configurazione che portava all'esecuzione di codice. La versione 0.10.11 contiene una patch per il problema.
In `gix_path::env`, l'implementazione sottostante delle funzioni `installation_config` e `installation_config_prefix` chiama `git config -l --show-origin` per trovare il percorso di un file da trattare come appartenente all'installazione di `git`. Le versioni di `gix-path` colpite non passano l'opzione `-z`/`--null` per far sì che `git` restituisca i percorsi letterali. Invece, per coprire il caso occasionale in cui `git` restituisce un percorso tra virgolette, tentano di analizzare il percorso rimuovendo le virgolette. Il problema è che, quando un percorso è tra virgolette, può subire modifiche sostanziali oltre alla semplice concatenazione dei segni di virgolettatura. Se non invertite, queste modifiche possono risultare in un altro percorso valido che non è equivalente all'originale.
Su un sistema a singolo utente, non è possibile sfruttare questa vulnerabilità, a meno che `GIT_CONFIG_SYSTEM` e `GIT_CONFIG_GLOBAL` non siano stati impostati su valori insoliti o Git non sia stato installato in modo insolito. Tale scenario non è previsto. Lo sfruttamento è improbabile anche su un sistema multi-utente, sebbene sia plausibile in alcune configurazioni o casi d'uso non comuni. In generale, lo sfruttamento ha maggiori probabilità di successo se si prevede che gli utenti installino `git` da soli e lo facciano in posizioni prevedibili; le posizioni in cui `git` è installato, sia a causa di nomi utente nei percorsi o altrimenti, contengono caratteri che `git` cita di default nei percorsi, come lettere non inglesi e lettere accentate; è specificato un file di configurazione di ambito `system` con la variabile d'ambiente `GIT_CONFIG_SYSTEM`, e il suo percorso si trova in una posizione insolita o ha componenti con nomi strani; oppure un file di configurazione di ambito `system` è assente, vuoto o soppresso mediante mezzi diversi da `GIT_CONFIG_NOSYSTEM`. Attualmente, `gix-path` può trattare un file di configurazione di ambito `global` come appartenente all'installazione se non è disponibile alcun file di configurazione di ambito superiore. Ciò aumenta la probabilità di sfruttamento anche su un sistema in cui `git` è installato a livello di sistema in modo ordinario. Tuttavia, lo sfruttamento è previsto come molto difficile anche in combinazione di tutti questi fattori.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.