CVE-2026-80837 in Linuxinformação

Sumário

de VulDB • 04/09/2026

No kernel Linux, a seguinte vulnerabilidade foi resolvida:

netfilter: nf_tables: não enfileirar notificações do objeto de caminho de pacote

Todas as referências arquivo:linha abaixo são contra v7.2-rc4 (ac5b0e5651b1). O trace foi capturado em 7.2.0-rc6-kasan72rc6 (075b74841bd0), onde as mesmas linhas se aplicam.

nft_obj_notify() é exportada e alcançada a partir do caminho de pacote. Seu único chamador no tree é nft_quota_obj_eval() (net/netfilter/nft_quota.c:68), que notifica com GFP_ATOMIC ao avaliar uma regra para um pacote em trânsito, sem segurar nenhum mutex.

Desde o commit 67cc570edaa0 ("netfilter: nf_tables: coalesçar múltiplas notificações em um único skbuff"), essa notificação não é mais enviada imediatamente. __nft_obj_notify() a enfileira na nft_net->notify_list via nft_notify_enqueue() (net/netfilter/nf_tables_api.c:1211), que é uma list_add_tail() pura. notify_list não possui seu próprio lock; ela é serializada por commit_mutex: os outros seis locais de enqueue executam dentro de uma transação netlink, e o drain em nft_commit_notify() (net/netfilter/nf_tables_api.c:10746) executa list_del() + kfree_skb() a partir de nf_tables_commit() com commit_mutex segurado.

Enviar pacotes através de uma cadeia que referencia um objeto cota esgotado, portanto, causa uma race condition entre uma list_add_tail() sem lock e list_del() + kfree_skb() em outra CPU. O WRITE_ONCE(prev->next, new) em __list_add() então grava através de um sk_buff que já foi liberado:

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

O endereço com defeito pertence ao cache skbuff_head_cache de tamanho 232

Enfileirar a partir do caminho de pacote está errado, mesmo deixando a race condition de lado: notify_list é drenada apenas por nft_commit_notify() a partir de nf_tables_commit() (:11185), portanto, uma notificação enfileirada fora de uma transação não será enviada até que algum lote netlink posterior seja confirmado, se isso ocorrer.

O argumento gfp que nft_obj_notify() ainda aceita é um resquício do comportamento pré-67cc570edaa0, onde esse caminho chamava nfnetlink_send() diretamente. Restaure isso: divida a construção da mensagem em nft_obj_notify_alloc() e permita que cada chamador decida o que fazer com o skb. nft_obj_notify(), a exportada alcançada a partir do caminho de pacote, envia-a imediatamente; nf_tables_obj_notify(), que executa sob commit_mutex, continua enfileirando-a, para que as notificações de transação ainda sejam coalescidas.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Responsável

Linux

Reservar

26/08/2026

Divulgação

04/09/2026

Moderação

aceite

Entrada

VDB-398974

CPE

pronto

EPSS

0.00168

KEV

não

Atividades

muito baixo

Fontes

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!