Sono state rilevate due vulnerabilità nel kernel Linux che consentivano comunque agli utenti di elevare i propri privilegi 

vulnerabilità

Se sfruttati, questi difetti possono consentire agli aggressori di ottenere l'accesso non autorizzato a informazioni riservate o, in generale, causare problemi

Pochi giorni fa è arrivata la notizia Sono state rilevate due vulnerabilità in i sottosistemi di kernel Linux, Netfilter e io_uring, che consentono a un utente locale di elevare i propri privilegi sul sistema.

Il primo è la vulnerabilità. (CVE-2023-32233) rilevato nel sottosistema Netfilter e causato dall'accesso alla memoria use-after-free nel modulo nf_tables, che garantisce il funzionamento del filtro dei pacchetti nftables.

Questo bug è dovuto al fatto che netfilter nf_tables consente di aggiornare la sua configurazione per le richieste batch raggruppate insieme molteplici operazioni di base nelle transazioni atomiche.

Il problema è stato riprodotto in varie versioni del kernel Linux, incluso Linux 6.3.1 (current stable) e la vulnerabilità può essere sfruttata inviando richieste appositamente predisposte per aggiornare la configurazione di nftables. Viene detto che l'attacco richiede l'accesso a nftables, che può essere ottenuto in uno spazio dei nomi di rete separato se si dispone dei diritti CLONE_NEWUSER, CLONE_NEWNS o CLONE_NEWNET (ad esempio, se è possibile eseguire un contenitore isolato).

Su questo bug, il ricercatore che ha individuato il problema ha promesso di posticipare di una settimana la pubblicazione di informazioni dettagliate e di un esempio di exploit funzionante che prevede una root shell.

In uno scenario specifico, una richiesta batch non valida potrebbe contenere un'operazione che elimina implicitamente un set anonimo nft esistente seguita da un'altra operazione che tenta di agire sullo stesso set nft anonimo dopo che è stato eliminato. Nello scenario precedente, un esempio dell'operazione precedente è l'eliminazione di una regola nft esistente che utilizza un set anonimo nft. E un esempio di quest'ultima operazione è un tentativo di rimuovere un elemento da quell'array anonimo nft dopo che l'array è stato alternativamente rimosso, quest'ultima operazione potrebbe persino tentare di rimuovere di nuovo esplicitamente quell'array anonimo nft. 

Come già accennato all'inizio, questo è stato diversi giorni fa e l'exploit e le informazioni erano già state divulgate. L'exploit così come i suoi dettagli sono disponibili al seguente link.

Il secondo guasto rilevato, era la vulnerabilità (CVE-2023-2598) l'implementazione dell'interfaccia I/O asincrona io_uring incluso nel kernel Linux dalla versione 5.1.

Il problema è causato da un bug nella funzione io_sqe_buffer_register, che consente l'accesso alla memoria fisica al di fuori dei limiti di un buffer allocato staticamente. Il problema si verifica solo nel ramo 6.3 e verrà risolto nel prossimo aggiornamento 6.3.2.

Si dice che l'idea alla base del commit originale è che invece di dividere pagine di grandi dimensioni che sono bufferizzate in singole voci bvec, puoi avere una singola voce bvec per tutte le parti bufferizzate della pagina. In particolare, se tutte le pagine nella mappa del buffer usano la struttura della prima pagina e la lunghezza del buffer in una singola voce bvec invece di mappare ogni pagina individualmente.

Quindi bvec si estenderà ben oltre la singola pagina che è effettivamente consentito toccare. Successivamente, IORING_OP_READ_FIXED e IORING_OP_WRITE_FIXED ci permettono di leggere e scrivere nel buffer (cioè la memoria puntata dal bvec) a nostro piacimento. Ciò consente l'accesso in lettura/scrittura alla memoria fisica dietro l'unica pagina che effettivamente abbiamo.

La pubblicazione sulla vulnerabilità menziona i passaggi di riproduzione dell'errore:

1. Crea un file memfd
2. Errore di una singola pagina in quel descrittore di file
3. Utilizzare MAP_FIXED per mappare questa pagina ripetutamente, in posizioni consecutive
4. Registra l'intera regione che hai appena riempito con quella pagina come
un buffer fisso con IORING_REGISTER_BUFFERS
5. Utilizzare IORING_OP_WRITE_FIXED per scrivere il buffer in un altro file
(lettura OOB) o IORING_OP_READ_FIXED per leggere i dati nel buffer (
OOB scrivere).

Infine vale la pena ricordare che è già disponibile  un prototipo di exploit funzionante (CVE-2023-2598) per i test, consentendo di eseguire codice con i privilegi del kernel.

Vulnerabilità (CVE-2023-32233) È stato risolto nell'aggiornamento 6.4-rc e puoi seguire la correzione della vulnerabilità nelle distribuzioni nelle pagine: DebianUbuntuGentooRHELFedoraSUSE / openSUSEArco.


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile del trattamento: AB Internet Networks 2008 SL
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.