Una vulnerabilità di oltre 15 anni fa in Netfilter ha consentito l'escalation dei privilegi

Qualche giorno fa è uscita la notizia che è stata identificata una vulnerabilità in Netfilter (un sottosistema del kernel Linux utilizzato per filtrare e modificare i pacchetti di rete), che consente a un utente locale di ottenere i privilegi di root in un sistemaanche mentre si trova in un contenitore isolato.

La vulnerabilità CVE-2021-22555 è un problema che esiste dal kernel 2.6.19, lanciato 15 anni fa ed è causato da un bug nei driver IPT_SO_SET_REPLACE e IP6T_SO_SET_REPLACE, che provoca un overflow del buffer durante l'invio di parametri appositamente decorati tramite la chiamata setsockopt in modalità compat.

Forse molti a questo punto si chiederanno come sia possibile che una falla nel kernel Linux possa passare inosservata per così tanto tempo e la risposta è che anche se la falla era presente da Linux 2.6.19, la vulnerabilità è stata trovata attraverso il codice audit, anche se il codice C non era riproducibile, quindi non poteva essere sfruttato perché in quel momento non erano state trovate le risorse necessarie per aumentare i privilegi.

Ad esempio, il supporto per gli spazi dei nomi utente non privilegiati è nel kernel 3.8. Inoltre, alcune distribuzioni hanno una patch che aggiunge sysctl per disabilitare gli spazi dei nomi utente senza privilegi.

In circostanze normali, solo l'utente root può chiamare compat_setsockopt(), Ma i permessi necessari eseguire un attacco possono essere ottenuti anche da un utente non privilegiato sui sistemi con gli spazi dei nomi utente abilitati.

CVE-2021-22555 è una vulnerabilità di 15 anni fuori dallo stack di scrittura in Linux Netfilter che è abbastanza potente da aggirare tutte le moderne misure di sicurezza e ottenere l'esecuzione del codice del kernel.

Come tale, viene descritto che un utente locale può creare un contenitore con un utente root separato e sfruttare la vulnerabilità da lìio. Ad esempio, gli "spazi dei nomi utente" sono inclusi per impostazione predefinita in Ubuntu e Fedora, ma non in Debian e RHEL.

Questa vulnerabilità può essere sfruttata sovrascrivendo parzialmente il m_list->nextpuntatore msg_msgstruttura e il raggiungimento di un libero dopo l'uso. Questo è abbastanza potente da far funzionare il codice del kernel bypassando KASLR, SMAP e SMEP.

Inoltre, sorge un problema nella funzione xt_compat_target_from_user () a causa di un calcolo errato della dimensione della memoria durante il salvataggio delle strutture del kernel dopo la conversione dalla rappresentazione a 32 bit a quella a 64 bit.

Come tale, è menzionato che l'errore consente di scrivere quattro byte "zero" in qualsiasi posizione al di fuori del buffer assegnato, limitato dall'offset 0x4C. Per questo motivo si dice che questa caratteristica si è rivelata sufficiente per creare un exploit che permette di ottenere i diritti di root: cancellando il puntatore m_list-> next nella struttura msg_msg sono state create le condizioni per accedere ai dati dopo aver liberato memoria (use-after-free), che è stata poi utilizzata per ottenere informazioni su indirizzi e modifiche ad altre strutture manipolando la chiamata di sistema msgsnd().

Per quanto riguarda il report degli errori, come ogni vulnerabilità rilevata, questo comporta un processo e il report che è stato fatto agli sviluppatori del kernel ad aprile, con il quale è stato poi corretto in pochi giorni e la patch che è inclusa in tutte le distribuzioni supportate, in modo che le informazioni sul bug possono essere rilasciate in seguito.

I progetti Debian, Arch Linux e Fedora hanno già generato aggiornamenti dei pacchetti. A partire da Ubuntu, gli aggiornamenti di RHEL e SUSE sono in lavorazione. Perché l'errore è grave, sfruttabile in pratica e permette di fuoriuscire dal contenitore, Google ha stimato la sua scoperta a $ 10,000 e ha raddoppiato la ricompensa al ricercatore che ha identificato la vulnerabilità e per identificare un metodo per evitare di isolare i contenitori Kubernetes sul cluster kCTF.

Per il test, è stato preparato un prototipo funzionante di un exploit che aggira i meccanismi di protezione KASLR, SMAP e SMEP.

Infine se sei interessato a saperne di più, puoi controllare i dettagli nel seguente link


Aggiungi come fonte preferita