CVE-2026-31469 in Linuxinformación

Resumen

por VulDB • 2026-05-13

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

virtio_net: Corrección de un Use-After-Free (UAF) en dst_ops cuando IFF_XMIT_DST_RELEASE está desactivado y napi_tx es falso

Se produce un problema de UAF cuando el controlador virtio_net está configurado con napi_tx=N y la bandera IFF_XMIT_DST_RELEASE del dispositivo está desactivada (por ejemplo, durante la configuración de reglas de filtro de ruta tc).

Cuando IFF_XMIT_DST_RELEASE se elimina de net_device, la pila de red espera que el controlador mantenga la referencia a skb->dst hasta que el paquete se transmita y libere completamente. En virtio_net con napi_tx=N, los skbs pueden permanecer en el anillo de transmisión de virtio durante un período prolongado.

Si el espacio de nombres de red se destruye mientras estos skbs aún están pendientes, la estructura dst_ops correspondiente ha sido liberada. Cuando se transmite un paquete posterior, se activa free_old_xmit() para limpiar los skbs antiguos. Luego, llama a dst_release() en el skb asociado con la entrada dst obsoleta. Dado que dst_ops (referenciado por dst_entry) ya ha sido liberado, se produce una solicitud de paginación de kernel UAF.

Se soluciona añadiendo skb_dst_drop(skb) en start_xmit para liberar explícitamente la referencia dst antes de que el skb se coloque en la cola en virtio_net.

Rastreo de llamada: No se puede manejar la solicitud de paginación del kernel en la dirección virtual ffff80007e150000 CPU: 2 UID: 0 PID: 6236 Comm: ping Kdump: cargado No contaminado 7.0.0-rc1+ #6 PREEMPT ... percpu_counter_add_batch+0x3c/0x158 lib/percpu_counter.c:98 (P) dst_release+0xe0/0x110 net/core/dst.c:177 skb_release_head_state+0xe8/0x108 net/core/skbuff.c:1177 sk_skb_reason_drop+0x54/0x2d8 net/core/skbuff.c:1255 dev_kfree_skb_any_reason+0x64/0x78 net/core/dev.c:3469 napi_consume_skb+0x1c4/0x3a0 net/core/skbuff.c:1527 __free_old_xmit+0x164/0x230 drivers/net/virtio_net.c:611 [virtio_net]
free_old_xmit drivers/net/virtio_net.c:1081 [virtio_net]
start_xmit+0x7c/0x530 drivers/net/virtio_net.c:3329 [virtio_net]
...

Pasos de reproducción: NETDEV="enp3s0"

config_qdisc_route_filter() {
tc qdisc del dev $NETDEV root tc qdisc add dev $NETDEV root handle 1: prio tc filter add dev $NETDEV parent 1:0 \ protocol ip prio 100 route to 100 flowid 1:1 ip route add 192.168.1.100/32 dev $NETDEV realm 100 }

test_ns() {
ip netns add testns ip link set $NETDEV netns testns ip netns exec testns ifconfig $NETDEV 10.0.32.46/24 ip netns exec testns ping -c 1 10.0.32.1 ip netns del testns }

config_qdisc_route_filter

test_ns sleep 2 test_ns

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Responsable

Linux

Reservar

2026-03-09

Divulgación

2026-04-22

Moderación

aceptado

Artículo

VDB-358867

CPE

listo

EPSS

0.00017

KEV

no

Actividades

muy bajo

Fuentes

Might our Artificial Intelligence support you?

Check our Alexa App!