Vulnerabilità nel kernel Linux sfruttate in remoto tramite Bluetooth

Nel kernel Linux è stata identificata una vulnerabilità (CVE-2022-42896) che può essere potenzialmente utilizzata per organizzare l'esecuzione di codice remoto a livello di kernel inviando un pacchetto L2CAP appositamente progettato tramite Bluetooth. Inoltre, è stato identificato un altro problema simile (CVE-2022-42895) nel gestore L2CAP, che può portare alla perdita del contenuto della memoria del kernel nei pacchetti con informazioni di configurazione. La prima vulnerabilità è comparsa dall'agosto 2014 (kernel 3.16), la seconda dall'ottobre 2011 (kernel 3.0). Le vulnerabilità sono state risolte nelle versioni del kernel Linux 6.1.0, 6.0.8, 4.9.333, 4.14.299, 4.19.265, 5.4.224, 5.10.154 e 5.15.78. Puoi tenere traccia delle correzioni nelle distribuzioni nelle seguenti pagine: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

Per dimostrare la possibilità di effettuare un attacco remoto, sono stati pubblicati dei prototipi di exploit che funzionano su Ubuntu 22.04. Per effettuare un attacco, l'aggressore deve trovarsi nel raggio d'azione del Bluetooth: non è necessario il pre-accoppiamento, ma il Bluetooth deve essere attivo sul computer. Per un attacco è sufficiente conoscere l’indirizzo MAC del dispositivo della vittima, che può essere determinato mediante sniffing o, su alcuni dispositivi, calcolato in base all’indirizzo MAC Wi-Fi.

La prima vulnerabilità (CVE-2022-42896) è causata dall'accesso ad un'area di memoria già liberata (use-after-free) nell'implementazione delle funzioni l2cap_connect e l2cap_le_connect_req - dopo aver creato un canale tramite il callback new_connection, non è stato impostato un blocco per questo, ma è stato impostato un timer (__set_chan_timer ), allo scadere del timeout, chiamando la funzione l2cap_chan_timeout e cancellando il canale senza verificare il completamento del lavoro con il canale nelle funzioni l2cap_le_connect*.

Il timeout predefinito è 40 secondi e si presumeva che una condizione di gara non potesse verificarsi con un ritardo simile, ma si è scoperto che a causa di un altro errore nel gestore SMP, era possibile ottenere una chiamata istantanea al timer e ottenere un condizione di gara. Un problema in l2cap_le_connect_req può portare a una perdita di memoria del kernel e in l2cap_connect può portare alla sovrascrittura del contenuto della memoria e all'esecuzione del relativo codice. Il primo tipo di attacco può essere effettuato utilizzando Bluetooth LE 4.0 (dal 2009), il secondo utilizzando Bluetooth BR/EDR 5.2 (dal 2020).

La seconda vulnerabilità (CVE-2022-42895) è causata da una perdita di memoria residua nella funzione l2cap_parse_conf_req, che può essere utilizzata per ottenere in remoto informazioni sui puntatori alle strutture del kernel inviando richieste di configurazione appositamente predisposte. La funzione l2cap_parse_conf_req utilizzava la struttura l2cap_conf_efs, per la quale la memoria allocata non era preinizializzata e manipolando il flag FLAG_EFS_ENABLE era possibile includere nel pacchetto i vecchi dati dello stack. Il problema appare solo sui sistemi in cui il kernel è compilato con l'opzione CONFIG_BT_HS (disabilitata per impostazione predefinita, ma abilitata su alcune distribuzioni, come Ubuntu). Un attacco riuscito richiede inoltre l'impostazione del parametro HCI_HS_ENABLED tramite l'interfaccia di gestione su true (non utilizzato per impostazione predefinita).

Fonte: opennet.ru

Aggiungi un commento