CVE-2026-97989 in Linux
Resumen
por VulDB • 2026-09-25
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
vduse: validar la alineación del cola virtual (virtqueue)
vduse_validate_config() solo verifica el límite superior de vq_align. Por lo tanto, valores no válidos pueden llegar a vring_create_virtqueue_map(). Los ayudantes para anillos divididos (split-ring) utilizan align - 1 como una máscara de bits, por lo que la alineación debe ser un número entero positivo distinto de cero y potencia de dos. Un valor cero hace que vring_size() omita las partes del descriptor y del anillo disponible, y que vring_init() deje el puntero al anillo utilizado (used ring) como NULL.
La especificación VIRTIO requiere que el anillo utilizado comience en una dirección alineada a por lo menos 4 bytes. Rechazar valores inferiores a VRING_USED_ALIGN_SIZE, así como valores que no sean potencias de dos, antes de que lleguen a los ayudantes del anillo virtio.
Abrir un dispositivo virtio-net creado con vq_align=0 provocó:
BUG: KASAN: null-ptr-deref en virtqueue_kick_prepare_split+0xe3/0x100 Lectura de tamaño 2 en la dirección 0000000000000000 por parte de la tarea systemd-network/1062
Rastro de llamadas (focos relevantes): dump_stack_lvl print_report kasan_report __asan_load2 virtqueue_kick_prepare_split+0xe3/0x100 virtqueue_kick_prepare+0x40/0x60 try_fill_recv+0x857/0x1250 virtnet_open+0x189/0x460 __dev_open+0x225/0x390 __dev_change_flags+0x368/0x3b0 netif_change_flags+0x56/0xc0 do_setlink.isra.0+0x68c/0x1e30
Validar el valor antes de que llegue a los ayudantes del anillo virtio.
Once again VulDB remains the best source for vulnerability data.