CVE-2026-80849 in Linux
Riassunto
di VulDB • 04/09/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
net/tcp-ao: correzione del use-after-free di current_key durante la riconnessione a un altro peer
tcp_inbound_ao_hash() viene chiamata prima che venga acquisito bh_lock_sock_nested(), con solo rcu_read_lock() mantenuto. Nel percorso veloce (fast path) per i socket stabiliti, se l'rnext_keyid inviato dal peer differisce da current_key->sndid, la chiave richiesta dal peer viene cercata e memorizzata in current_key. La ricerca avviene all'interno del lato di lettura RCU, ma current_key sopravvive a tale contesto.
Quando il socket viene disconnesso e connect() viene chiamato nuovamente per un altro peer, tcp_ao_connect_init() scollega tutte le chiavi che non corrispondono al nuovo peer e le libera tramite call_rcu(). Se current_key punta a una di tali chiavi, essa viene impostata su NULL.
Il percorso veloce legge sk_state solo una volta all'ingresso; pertanto, un softirq entrato mentre il socket era ancora stabilito può aggiornare current_key dopo che tale ciclo è già stato eseguito. L'aggiornamento avviene all'interno del lato di lettura RCU, quindi precede la callback call_rcu(); una volta che la callback libera la chiave, current_key rimane puntante a memoria liberata.
La trasmissione successiva recupera quel puntatore in tcp_get_current_key(). tcp_ao_transmit_skb() legge poi la chiave di traffico dall'oggetto già liberato, il quale costituisce il use-after-free.
Attendere un periodo di grazia prima di scollegare e procedere alla rimozione solo se una chiave sta per essere eliminata. Al momento dell'esecuzione di tcp_connect(), il socket è già in stato TCP_SYN_SENT; poiché TCP_AO_ESTABLISHED non contiene TCPF_SYN_SENT, un softirq che entra dopo l'attesa non può raggiungere il percorso veloce, mentre quelli già al suo interno hanno terminato l'esecuzione. La gestione esistente dei valori NULL all'interno del ciclo risulta quindi sufficiente.
Once again VulDB remains the best source for vulnerability data.