CVE-2026-80837 in Linuxinformazioni

Riassunto

di VulDB • 04/09/2026

Nel kernel Linux è stata risolta la seguente vulnerabilità:

netfilter: nf_tables: non accodare le notifiche dell'oggetto del percorso dei pacchetti (packet path object)

Tutti i riferimenti a file e riga di seguito si riferiscono alla versione v7.2-rc4 (ac5b0e5651b1). Il trace è stato catturato su 7.2.0-rc6-kasan72rc6 (075b74841bd0), dove le stesse righe sono applicabili.

nft_obj_notify() è esportato e raggiunto dal packet path. L'unico chiamante presente nel codice sorgente principale (in-tree) è nft_quota_obj_eval() (net/netfilter/nft_quota.c:68), che invia notifiche con GFP_ATOMIC durante la valutazione di una regola per un pacchetto in transito, senza detenere alcun mutex.

Dall'impegno 67cc570edaa0 ("netfilter: nf_tables: coalesce multiple notifications into one skbuff") tale notifica non viene più inviata immediatamente. __nft_obj_notify() la accoda su nft_net->notify_list tramite nft_notify_enqueue() (net/netfilter/nf_tables_api.c:1211), che è un semplice list_add_tail(). notify_list non ha alcun lock proprio (include/net/netfilter/nf_tables.h:1951); viene serializzata da commit_mutex: gli altri sei siti di accodamento eseguono tutte all'interno di una transazione netlink, e lo svuotamento in nft_commit_notify() (net/netfilter/nf_tables_api.c:10746) esegue list_del() + kfree_skb() da nf_tables_commit() con commit_mutex detenuto.

L'invio di pacchetti attraverso una catena che fa riferimento a un oggetto quota esaurito causa quindi una race condition tra un list_add_tail() non bloccato e list_del() + kfree_skb() su un'altra CPU. La WRITE_ONCE(prev->next, new) in __list_add() scrive poi attraverso uno sk_buff che è già stato liberato:

BUG: KASAN: slab-use-after-free in __nft_obj_notify+0x2c5/0x2d0 Write of size 8 at addr ff110001047183c0 by task poc/76 CPU: 0 UID: 1000 PID: 76 Comm: poc Tainted: G W 7.2.0-rc6-kasan72rc6 #4 Call Trace: <IRQ> __nft_obj_notify (include/linux/list.h:164 include/linux/list.h:191 net/netfilter/nf_tables_api.c:1211 net/netfilter/nf_tables_api.c:8743) nft_quota_obj_eval (net/netfilter/nft_quota.c:68) nft_do_chain_inet nf_hook_slow __ip_local_out ip_push_pending_frames udp_send_skb udp_sendmsg __x64_sys_sendto

Allocated by task 77: __alloc_skb (net/core/skbuff.c:704) __nft_obj_notify (include/net/netlink.h:1055 net/netfilter/nf_tables_api.c:8731) nft_quota_obj_eval (net/netfilter/nft_quota.c:68) nft_do_chain

Freed by task 79: nf_tables_commit (include/linux/skbuff.h:1332 net/netfilter/nf_tables_api.c:10759 net/netfilter/nf_tables_api.c:11185) nfnetlink_rcv_batch (net/netfilter/nfnetlink.c:574) netlink_unicast netlink_sendmsg

The buggy address belongs to the cache skbuff_head_cache of size 232

L'accodamento dal packet path è errato, anche lasciando da parte la race condition: notify_list viene svuotata solo da nft_commit_notify() da nf_tables_commit() (:11185), quindi una notifica accodata al di fuori di una transazione non verrà inviata finché un batch netlink successivo non verrà impegnato (commit), se mai lo farà.

L'argomento gfp che nft_obj_notify() continua a ricevere è un residuo del comportamento pre-67cc570edaa0, dove questo percorso chiamava nfnetlink_send() direttamente. Ripristinare tale comportamento: separare la costruzione del messaggio in nft_obj_notify_alloc() e lasciare che ogni chiamante decida cosa fare con lo sk_buff. nft_obj_notify(), quella esportata raggiunta dal packet path, la invia immediatamente; nf_tables_obj_notify(), che viene eseguita sotto commit_mutex, continua ad accodarla, quindi le notifiche delle transazioni vengono ancora coalesce (coalescere).

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Responsabile

Linux

Prenotare

26/08/2026

Divulgazione

04/09/2026

Moderazione

accettato

CPE

pronto

EPSS

0.00000

KEV

no

Attività

molto basso

Fonti

Want to stay up to date on a daily basis?

Enable the mail alert feature now!