Una vulnerabilità nel protocollo di rete CAN BCM ha consentito l'escalation dei privilegi nel kernel di Linux 

Ieri Sono state rilasciate informazioni su una vulnerabilità nel kernel Linux e che è già catalogato come CVE-2021-3609. Questa vulnerabilità consente a un utente locale di elevare i propri privilegi sul sistema a causa di una race condition nell'implementazione del protocollo CAN BCM e manifestata nelle versioni dalla 2.6.25 alla 5.13-rc6 del kernel Linux.

La sentenza ne approfitta perché il Il protocollo CAN BCM ti consente di registrare il tuo gestore di messaggi della rete di area del controller (CAN) e collegarlo a una presa di rete specifica. Quando arriva un messaggio in arrivo, viene chiamata la funzione bcm_rx_handler () un utente malintenzionato può sfruttare una race condition e forzare la chiusura del socket di rete durante l'esecuzione bcm_rx_handler ().

Il problema arriva quando la presa è chiusa e la funzione si chiama bcm_release (), in cui viene liberata la memoria allocata per le strutture bcm_op e bcm_sock, che continuano ad essere utilizzati in handler bcm_rx_handler () che è ancora in esecuzione, si verifica quindi una situazione che porta ad accedere ad un blocco di memoria già liberato (use-after-free).

Questo è un annuncio del bug recentemente segnalato (CVE-2021-3609) nel protocollo di rete CAN BCM nel kernel Linux che va dalla versione 2.6.25 alla linea principale 5.13-rc6.
La vulnerabilità è una race condition in net/can/bcm.c che consente l'escalation dei privilegi a root. Il problema è stato inizialmente segnalato da syzbot e Norbert Slusarek si è rivelato sfruttabile.

L'attacco si riduce all'apertura di due socket CAN BCM e al loro collegamento all'interfaccia vcan. Nel primo connettore, chiami invia msg () con l'indicatore IMPOSTAZIONE_RX per configurare il controller per i messaggi CAN in arrivo e sul secondo connettore, si chiama invia msg () per inviare un messaggio al primo connettore.

Dopo che il messaggio è arrivato, la chiamata bcm_rx_handler() viene attivata e l'attaccante prende il momento giusto e chiude il primo socket, che porta al lancio di bcm_release () e il varo delle strutture bcm_op e bcm_sock, sebbene il lavoro di bcm_rx_handler () non ancora completato.

Manipolando il contenuto di bcm_sock, un utente malintenzionato può sovrascrivere un puntatore alla funzione sk-> sk_data_ready (sk), reindirizzare l'esecuzione e, utilizzando tecniche di programmazione orientata al ritorno (ROP), sovrascrivere il parametro modprobe_path e far eseguire il proprio codice come root .

Quando si utilizza la tecnica ROP, l'attaccante non tenta di inserire il proprio codice in memoria di, ma funziona i pezzi di istruzioni della macchina già disponibili nelle librerie caricate, terminando con un'istruzione di ritorno di controllo (di norma, queste sono la fine delle funzioni di libreria).

I permessi necessari per effettuare un attacco possono essere acquisiti da un utente non privilegiato in contenitori creati su sistemi con namespace utente abilitati. Ad esempio, gli spazi dei nomi utente sono inclusi per impostazione predefinita in Ubuntu e Fedora, ma non sono abilitati in Debian e RHEL.

Il mio tentativo di exploit si concentra sui kernel con version> = 5.4-rc1 dal commit bf74aa86e111. Non ho studiato lo sfruttamento dei kernel più vecchi di 5.4-rc1 usando i tasklet, tuttavia anche lo sfruttamento dei kernel più vecchi sembra fattibile. 

Si è detto che il ricercatore che ha identificato la vulnerabilità è stato in grado di preparare un exploit per ottenere i diritti di root su sistemi con kernel dalla versione 5.4 e successive, inclusa la possibilità di un attacco riuscito su Ubuntu 20.04.02 LTS.

Il lavoro dell'exploit si riduce alla costruzione di una catena di chiamate a blocchi simili ("gadget") per ottenere la funzionalità richiesta. L'attacco richiede l'accesso per creare socket CAN e un'interfaccia di rete vcan configurata.

Infine si dice che il problema persiste ancora sulla maggior parte delle distribuzioni, ma è questione di giorni prima che vengano rilasciate le patch corrispondenti.

Se sei interessato a saperne di più, puoi consultare il seguente collegamento.


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.