Vulnerabilità nel kernel Linux che consentono di elevare i propri privilegi tramite nf_tables e ksmbd

In Netfilter, the Linux kernel subsystem used for filtering and modifying network packets, a vulnerability (CVE-2024-1086) has been identified that allows a local user to execute code at the kernel level and elevate their privileges within the system. The issue is caused by a double free in the nf_tables module, which supports the nftables packet filtering. The security researcher who discovered the vulnerability has developed and published a working exploit prototype.

Il funzionamento dell'exploit è dimostrato nelle ultime versioni di Debian e Ubuntu con i kernel Linux 5.14 - 6.6, nonché in un ambiente con il kernel KernelCTF (Capture the Flag), che include patch aggiuntive per bloccare i metodi tipici degli exploit e utilizzato da Google nel programma di ricompensa per la scoperta di vulnerabilità. Il tasso di successo dell'exploit è valutato al 99,4%. Nell'articolo di accompagnamento, viene dettagliato il processo di creazione di un complesso exploit multilivello e come aggirare i meccanismi di protezione e contromeasures presenti nel kernel.

Vulnerabilità nel kernel Linux che consentono di elevare i propri privilegi tramite nf_tables e ksmbd

Il problema è legato a un errore nella funzione nft_verdict_init(), che consente l'uso di valori positivi come codice di errore per il rilascio dei pacchetti (DROP) negli hook, il che può essere sfruttato per chiamare nella funzione nf_hook_slow() nuovamente l'operazione di rilascio della memoria per un buffer per il quale è già stata chiamata la funzione free(). Il problema si verifica quando l'operazione NF_DROP è formata con un errore, ed il kernel inizialmente interpreta NF_DROP, ma poi rilascia il buffer e restituisce lo stato NF_ACCEPT. Questa situazione porta al fatto che, nonostante il rilascio del buffer associato al pacchetto, il suo trattamento non si interrompe, ma viene passato a un altro gestore, che a sua volta chiama di nuovo la funzione di rilascio della memoria.

La vulnerabilità si manifesta a partire dalla versione del kernel Linux 3.15, ma l'exploit funziona con i kernel a partire dalla versione 5.14. La correzione della vulnerabilità è stata proposta nella versione del kernel Linux 6.8-rc1 e a fine febbraio è stata trasferita nei rami stabili 5.15.149, 6.1.76 e 6.6.15. Nei vari distribuzioni, è possibile seguire la correzione della vulnerabilità alle seguenti pagine: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

È possibile anche notare una serie di vulnerabilità nel modulo ksmbd, che offre un'implementazione di file system integrata nel kernel di Linux сервера basata sul protocollo SMB: La vulnerabilità CVE-2024-26592 consente l'esecuzione remota di codice con privilegi di kernel su sistemi con il modulo ksmbd attivato, senza autenticazione. Il problema è causato da una condizione di competizione nel codice di gestione delle connessioni TCP, che si verifica a causa della mancanza di livelli di blocco adeguati durante l'interazione con l'oggetto.

La vulnerabilità CVE-2023-52440 consente anch'essa l'esecuzione remota di codice con privilegi di kernel, ma è causata da un overflow del buffer durante la gestione di chiavi di sessione non valide, a causa della mancanza di un'adeguata verifica della dimensione dei dati ricevuti dall'utente prima della copia nel buffer di dimensioni fisse.

Le vulnerabilità (1, 2, 3) CVE-2024-26594, CVE-2023-52442 e CVE-2023-52441 in ksmbd consentono di determinare il contenuto della memoria del kernel da remoto senza autenticazione. La vulnerabilità CVE-2024-26594 è causata da un controllo dei dati inadeguato nella gestione dei token SMB2 Mech, che porta al ritorno di dati dall'area oltre il buffer. La vulnerabilità CVE-2023-52442 è causata dalla mancanza di un adeguato controllo dei dati in entrata nella gestione di richieste concatenate (chained). La vulnerabilità CVE-2023-52441 è causata dalla mancanza di un necessario controllo dei dati in entrata nella gestione delle richieste di negoziazione della connessione SMB2.

Le vulnerabilità CVE-2024-26594 e CVE-2024-26592 sono state risolte nel kernel 6.8 e negli aggiornamenti correttivi delle versioni stabili precedenti 6.1.75, 6.6.14, 6.7.2. Le altre vulnerabilità sono state risolte nel kernel 6.5 e negli aggiornamenti 5.15.145, 6.1.53, 6.4.16.

In conclusione, si può menzionare l'attivazione di un nuovo team di sviluppatori del kernel Linux, creato per analizzare la presenza di vulnerabilità e valutare la relazione tra le correzioni apportate al kernel e i problemi di sicurezza. A febbraio, gli sviluppatori del kernel hanno creato un servizio CNA (CVE Numbering Authority) autonomo, che ha ricevuto l'autorità per assegnare i CVE identificatori alle vulnerabilità. In precedenza, l'assegnazione dei CVE e l'analisi della relazione delle correzioni con le potenziali vulnerabilità erano responsabilità degli sviluppatori delle distribuzioni, e nel kernel le vulnerabilità potenziali non erano evidenziate e figuravano accanto alle correzioni comuni. I risultati del nuovo servizio hanno superato ogni aspettativa: ogni giorno nel kernel vengono contrassegnate fino a diverse dozzine di nuove vulnerabilità che in precedenza non erano state indicate come problemi di sicurezza. Ad esempio, il 26 marzo sono stati assegnati nuovi identificatori CVE a 14 vulnerabilità che in precedenza non erano considerate problemi di sicurezza, mentre il 25 marzo - 41 vulnerabilità.

Fonte: opennet.ru

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