È stata identificata una vulnerabilità critica nel modulo ksmbd, che include un'implementazione integrata nel kernel Linux di un server file basato sul protocollo SMB, consentendo l'esecuzione remota di codice con i privilegi del kernel. L'attacco può essere effettuato senza autenticazione, è sufficiente che il modulo ksmbd sia attivato sul sistema. Il problema si manifesta a partire dal kernel 5.15, rilasciato a novembre 2021, ed è stato risolto silenziosamente negli aggiornamenti 5.15.61, 5.18.18 e 5.19.2, rilasciati ad agosto 2022. Poiché non è stato ancora assegnato un identificativo CVE al problema, non ci sono informazioni precise sulla risoluzione in diverse distribuzioni.
I dettagli sull'esploit della vulnerabilità non sono ancora stati divulgati; si sa solo che è causata da un accesso a una memoria già liberata (Use-After-Free) a causa della mancanza di verifica dell'esistenza dell'oggetto prima di eseguire operazioni su di esso. Il problema è legato al fatto che nella funzione smb2_tree_disconnect() veniva liberata la memoria allocata per la struttura ksmbd_tree_connect, ma un puntatore utilizzato nella gestione di specifiche richieste esterne contenenti comandi SMB2_TREE_DISCONNECT rimaneva ancora attivo.
Oltre alla vulnerabilità menzionata, sono stati corretti 4 problemi meno gravi in ksmbd:
- ZDI-22-1688 — esecuzione remota di codice con privilegi di kernel a causa della mancanza di trattamento degli attributi dei file per il controllo delle dimensioni effettive dei dati esterni prima di copiarli in un buffer dedicato. La pericolosità della vulnerabilità è attenuata dal fatto che l'attacco può essere effettuato solo da un utente autenticato.
- ZDI-22-1691 — fuga remota di informazioni dalla memoria del kernel a causa di un controllo errato dei parametri di input nel gestore del comando SMB2_WRITE (l'attacco può essere effettuato solo da un utente autenticato).
- ZDI-22-1687 — attacco remoto di denial of service tramite esaurimento della memoria disponibile di sistema a causa di un rilascio inadeguato delle risorse nel gestore del comando SMB2_NEGOTIATE (l'attacco può essere condotto senza autenticazione).
- ZDI-22-1689 — attacco remoto che causa il crash del kernel a causa della mancanza di adeguata verifica dei parametri del comando SMB2_TREE_CONNECT, che porta a una lettura al di fuori del buffer (l'attacco può essere effettuato solo da un utente autenticato).
Il supporto per il funzionamento del server SMB tramite il modulo ksmbd è presente nel pacchetto Samba a partire dalla versione 4.16.0. A differenza del server SMB che opera nello spazio utente, ksmbd è più efficiente in termini di prestazioni, consumo di memoria e integrazione con le funzionalità avanzate del kernel. Ksmbd è presentato come un'estensione ad alte prestazioni e pronta per l'uso su dispositivi embedded, integrabile, se necessario, con strumenti e librerie Samba. Gli autori del codice ksmbd sono Namjae Jeon della Samsung e Hyunchul Lee della LG, mentre il supporto integrato nel kernel è curato da Steve French di Microsoft, mantenitore del sottosistema CIFS/SMB2/SMB3 nel kernel Linux e un veterano del team di sviluppo Samba, che ha fornito un contributo significativo all'implementazione del supporto per i protocolli SMB/CIFS in Samba e Linux.
Fonte: opennet.ru
