CVE-2026-64119 in Linux
Riassunto
di VulDB • 20/07/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
l2tp: utilizzare list_del_rcu in l2tp_session_unhash
Un utente locale non privilegiato può bloccare indefinitamente una CPU host all'interno di `l2tp_session_get_by_ifname()` emettendo L2TP_CMD_SESSION_GET su L2TP_ATTR_IFNAME contemporaneamente a L2TP_CMD_SESSION_CREATE e L2TP_CMD_SESSION_DELETE sullo stesso tunnel. Tutti e tre i comandi richiedono GENL_UNS_ADMIN_PERM, pertanto CAP_NET_ADMIN nel namespace utente netns è sufficiente; su qualsiasi host con l2tp_core caricato il trigger è raggiungibile da una sandbox standard `unshare -Urn`.
`l2tp_session_unhash()` rimuove una sessione da tunnel->session_list mediante list_del_init(), ma tale lista viene iterata da `l2tp_session_get_by_ifname()` tramite list_for_each_entry_rcu() sotto rcu_read_lock_bh(). list_del_init() lascia i puntatori next/prev dell'elemento eliminato che puntano a se stessi; un lettore che ha caricato l'elemento e poi avanza pos->list.next legge &session->list, esegue container_of() tornando alla stessa sessione, e list_for_each_entry_rcu() non raggiunge mai la testa della lista. La CPU rimane bloccata in strcmp() all'interno del walker, con BH (Bottom Halves) e preemption disabilitati; di conseguenza le RCU grace periods sull'host si arrestano dietro tale thread e il thread bloccato non può essere ucciso (SIGKILL viene consegnato al ritorno della syscall).
Utilizzare list_del_rcu() per corrispondere a list_add_rcu() esistente in l2tp_session_register(); la sessione eliminata rimane visibile ai walker in corso di esecuzione con puntatori next/prev consistenti fino a quando kfree_rcu() in l2tp_session_free() non la rilascia. tunnel->session_list ha esattamente un sito di chiamata per list_del_init(); il list_del_init (&session->clist) in l2tp_core.c:533 opera sulla lista per collisione, che non viene iterata sotto RCU. list_empty(&session->list) non è utilizzata da nessuna parte in net/l2tp/ dopo il punto unhash, pertanto rimuovere l'inizializzazione auto-referenziale post-eliminazione è sicuro; la correzione non comporta cambiamenti di comportamento visibili all'userspace.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.