Vulnerabilità nel kernel di Linux sfruttabili da remoto tramite Bluetooth

È stata identificata una vulnerabilità nel kernel di Linux (CVE-2022-42896) che potrebbe essere utilizzata per eseguire codice da remoto a livello di kernel inviando un pacchetto L2CAP appositamente formattato tramite Bluetooth. Inoltre, è stata rilevata un'altra problematica simile (CVE-2022-42895) nel gestore L2CAP, che potrebbe portare a una fuoriuscita del contenuto della memoria del kernel in pacchetti contenenti informazioni di configurazione. La prima vulnerabilità si manifesta da agosto 2014 (kernel 3.16), mentre la seconda è presente da ottobre 2011 (kernel 3.0). Le vulnerabilità sono state corrette nelle versioni del kernel di 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. È possibile seguire le correzioni nei vari distribuzioni alle seguenti pagine: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

Per dimostrare la possibilità di effettuare un attacco remoto, sono stati pubblicati prototipi di exploit funzionanti su Ubuntu 22.04. Per realizzare l'attacco, l'attaccante deve essere entro portata del Bluetooth — non è necessaria una precedente associazione, ma è necessario che il Bluetooth del computer sia attivo. Per attaccare, è sufficiente conoscere l'indirizzo MAC del dispositivo della vittima, che può essere determinato tramite sniffing o, su alcuni dispositivi, calcolato sulla base dell'indirizzo MAC del Wi-Fi.

La prima vulnerabilità (CVE-2022-42896) è causata da un accesso a un'area di memoria già liberata (use-after-free) nell'implementazione delle funzioni l2cap_connect e l2cap_le_connect_req — dopo la creazione di un canale tramite la chiamata di callback new_connection, non veniva impostato un blocco su di esso, ma veniva impostato un timer (__set_chan_timer), che al termine del timeout chiama la funzione l2cap_chan_timeout e pulisce il canale senza verificare il completamento delle operazioni sul canale nelle funzioni l2cap_le_connect*.

Per impostazione predefinita, il timeout è di 40 secondi e si presumeva che non potesse verificarsi una condizione di gara con tale ritardo, ma si è scoperto che a causa di un altro errore nel gestore SMP si può ottenere la chiamata immediata di un timer e raggiungere una condizione di gara. Il problema in l2cap_le_connect_req può causare perdite di memoria del kernel, mentre in l2cap_connect può portare a sovrascritture di contenuto nella memoria ed esecuzione di codice maligno. Il primo tipo di attacco può essere portato a termine utilizzando Bluetooth LE 4.0 (dal 2009), mentre il secondo con Bluetooth BR/EDR 5.2 (dal 2020).

La seconda vulnerabilità (CVE-2022-42895) è causata dalla perdita di dati residui dalla memoria nella funzione l2cap_parse_conf_req, che può essere utilizzata per ottenere a distanza informazioni sui puntatori delle strutture del kernel inviando richieste di configurazione appositamente formattate. Nella funzione l2cap_parse_conf_req veniva utilizzata la struttura l2cap_conf_efs, per la quale non veniva eseguita l'inizializzazione preventiva della memoria allocata e, tramite manipolazioni con il flag FLAG_EFS_ENABLE, era possibile includere nel pacchetto dati risalenti a vecchie comunicazioni dallo stack. Il problema si manifesta solo nei sistemi in cui il kernel è compilato con l'opzione CONFIG_BT_HS (disabilitata per impostazione predefinita, ma attivata in alcune distribuzioni, come Ubuntu). Per un attacco riuscito, è inoltre necessario impostare il parametro HCI_HS_ENABLED tramite l'interfaccia di gestione su true (normalmente non utilizzato).

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster