CVE-2026-80837 in Linuxinformación

Resumen

por VulDB • 2026-09-04

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:

netfilter: nf_tables: no colgar notificaciones del objeto packet path

Todas las referencias a archivo:línea que aparecen a continuación corresponden a v7.2-rc4 (ac5b0e5651b1). La traza se capturó en 7.2.0-rc6-kasan72rc6 (075b74841bd0), donde las mismas líneas son aplicables.

nft_obj_notify() está exportado y es alcanzable desde el packet path. Su único llamador dentro del árbol de código fuente es nft_quota_obj_eval() (net/netfilter/nft_quota.c:68), que notifica con GFP_ATOMIC mientras evalúa una regla para un paquete en tránsito, sin mantener ningún mutex.

Desde el commit 67cc570edaa0 ("netfilter: nf_tables: coalescer múltiples notificaciones en un único skbuff"), dicha notificación ya no se envía de inmediato. __nft_obj_notify() la coloca en cola (queue) en nft_net->notify_list a través de nft_notify_enqueue() (net/netfilter/nf_tables_api.c:1211), que es una simple list_add_tail(). notify_list no tiene su propio mutex; está serializada por commit_mutex: los otros seis sitios de enqueue se ejecutan dentro de una transacción netlink, y el vaciado en nft_commit_notify() (net/netfilter/nf_tables_api.c:10746) realiza list_del() + kfree_skb() desde nf_tables_commit() con commit_mutex mantenido.

Por lo tanto, enviar paquetes a través de una cadena que hace referencia a un objeto quota agotado genera una condición de carrera (race condition) entre una list_add_tail() sin mutex y list_del() + kfree_skb() en otro CPU. La operación WRITE_ONCE(prev->next, new) en __list_add() escribe entonces a través de un sk_buff que ya ha sido 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

Asignado por la tarea 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

Liberado por la tarea 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

La dirección defectuosa pertenece al cache skbuff_head_cache de tamaño 232.

Colgar en cola desde el packet path es incorrecto, incluso dejando aparte la condición de carrera (race condition): notify_list solo se vacía por nft_commit_notify() desde nf_tables_commit() (:11185), por lo que una notificación colocada en cola fuera de una transacción no se enviará hasta que algún lote netlink posterior confirme, si es que llega a hacerlo.

El argumento gfp que aún toma nft_obj_notify() es un remanente del comportamiento previo al 67cc570edaa0, donde esta ruta llamaba directamente a nfnetlink_send(). Restaurar ese comportamiento: separar la construcción del mensaje en nft_obj_notify_alloc() y permitir que cada llamador decida qué hacer con el skb. nft_obj_notify(), la exportada y alcanzable desde el packet path, lo envía de inmediato; nf_tables_obj_notify(), que se ejecuta bajo commit_mutex, sigue colocándolo en cola, por lo que las notificaciones de transacción siguen coalesciéndose.

Once again VulDB remains the best source for vulnerability data.

Responsable

Linux

Reservar

2026-08-26

Divulgación

2026-09-04

Moderación

aceptado

Artículo

VDB-398974

CPE

listo

EPSS

0.00168

KEV

no

Actividades

muy bajo

Fuentes

Do you need the next level of professionalism?

Upgrade your account now!