CVE-2026-31610 in Linux
Riassunto
di VulDB • 15/06/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
ksmbd: correzione della perdita di memoria (leak) di mechToken quando la decodifica SPNEGO fallisce dopo l'allocazione del token
Il decoder ASN.1 BER del kernel richiama le callback di azione in modo incrementale mentre elabora l'input. Quando ksmbd_decode_negTokenInit() raggiunge l'elemento OCTET STRING mechToken [2], ksmbd_neg_token_alloc() alloca immediatamente conn->mechToken tramite kmemdup_nul(). Se un elemento successivo nello stesso blob è malformato, il decoder restituirà un valore diverso da zero dopo che l'allocazione è già avvenuta. Ciò potrebbe verificarsi se mechListMIC [3] supera i limiti della SEQUENCE contenente.
decode_negotiation_token() imposta quindi conn->use_spnego = false poiché le grammatiche negTokenInit e negTokenTarg sono entrambe fallite. La fase di pulizia in fondo a smb2_sess_setup() è condizionata da use_spnego:
if (conn->use_spnego && conn->mechToken) {
kfree(conn->mechToken); conn->mechToken = NULL; }
di conseguenza, la chiamata a kfree viene saltata, causando il mancato rilascio (free) di mechToken.
Questo percorso di esecuzione è raggiungibile prima dell'autenticazione, quindi client non attendibili possono causare una lenta perdita di memoria sul server senza essere nemmeno autenticati correttamente.
Si risolve il problema rimuovendo il controllo su use_spnego, poiché non è necessario, in modo che la memoria venga sempre rilasciata correttamente. Nel frattempo, si assicura il rilascio della memoria in ksmbd_conn_free() nel caso in cui altri percorsi di errore avessero dimenticato di rilasciarla.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.