Una vulnerabilità nel VFS del kernel Linux che ti consente di aumentare i tuoi privilegi

È stata identificata una vulnerabilità (CVE-2022-0185) nell'API del contesto del filesystem fornita dal kernel Linux, che consente a un utente locale di ottenere privilegi di root sul sistema. Il ricercatore che ha individuato il problema ha pubblicato una dimostrazione di un exploit che permette di eseguire codice come root su Ubuntu 20.04 nella configurazione predefinita. Si prevede che il codice dell'exploit venga pubblicato su GitHub entro una settimana dal rilascio da parte delle distribuzioni di un aggiornamento che risolve la vulnerabilità.

La vulnerabilità esiste nella funzione legacy_parse_param() in VFS ed è causata da un errore nel controllo corretto della dimensione massima dei parametri forniti sui file system che non supportano l'API Filesystem Context. Passare un parametro troppo grande può causare un overflow della variabile intera utilizzata per calcolare la dimensione dei dati da scrivere - il codice ha un controllo di overflow del buffer "if (len > PAGE_SIZE - 2 - size)", che non lo fa funziona se il valore della dimensione è maggiore di 4094. per overflow di numeri interi attraverso il limite inferiore (underflow di numeri interi, quando si converte 4096 - 2 - 4095 in unsigned int, il risultato è 2147483648).

Questo errore consente, quando si accede ad un'immagine del file system appositamente progettata, di causare un overflow del buffer e sovrascrivere i dati del kernel seguendo l'area di memoria allocata. Per sfruttare la vulnerabilità è necessario disporre dei diritti CAP_SYS_ADMIN, ovvero poteri di amministratore. Il problema è che un utente senza privilegi può ottenere tali autorizzazioni in un contenitore isolato se il sistema ha il supporto per gli spazi dei nomi utente abilitato. Ad esempio, gli spazi dei nomi utente sono abilitati per impostazione predefinita su Ubuntu e Fedora, ma non abilitati su Debian e RHEL (a meno che non vengano utilizzate piattaforme di isolamento dei contenitori).

Il problema si presenta dal kernel Linux 5.1 ed è stato risolto negli aggiornamenti di ieri 5.16.2, 5.15.16, 5.10.93, 5.4.173. Gli aggiornamenti dei pacchetti che risolvono la vulnerabilità sono già stati rilasciati per RHEL, Debian, Fedora e Ubuntu. La correzione non è ancora disponibile su Arch Linux, Gentoo, SUSE e openSUSE. Come soluzione alternativa alla sicurezza per i sistemi che non utilizzano l'isolamento del contenitore, è possibile impostare il valore sysctl "user.max_user_namespaces" su 0: echo "user.max_user_namespaces=0" > /etc/sysctl.d/userns.conf # sysctl -p /etc/sysctl.d/userns.conf

Fonte: opennet.ru

Aggiungi un commento