CVE-2024-55916 in Linuxinformación

Resumen

por VulDB • 2026-06-30

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

Controladores: hv: util: Evitar acceder a un ringbuffer que aún no está inicializado

Si el demonio KVP (o VSS) se inicia antes de que el anillo del canal VMBus esté completamente inicializado, podemos provocar el pánico indicado a continuación:

hv_utils: Registrando controlador HyperV Utility Driver hv_vmbus: registrando controlador hv_utils ... BUG: kernel NULL pointer dereference, address: 0000000000000000 CPU: 44 UID: 0 PID: 2552 Comm: hv_kvp_daemon Tainted: G E 6.11.0-rc3+ #1 RIP: 0010:hv_pkt_iter_first+0x12/0xd0 Call Trace: ... vmbus_recvpacket hv_kvp_onchannelcallback vmbus_on_event tasklet_action_common tasklet_action handle_softirqs irq_exit_rcu sysvec_hyperv_stimer0 asm_sysvec_hyperv_stimer0 ... kvp_register_done hvt_op_read vfs_read ksys_read __x64_sys_read

Esto puede ocurrir porque la devolución de llamada (callback) del canal KVP/VSS puede invocarse incluso antes de que el canal esté completamente abierto: 1) tan pronto como hv_kvp_init() -> hvutil_transport_init() crea /dev/vmbus/hv_kvp, el demonio kvp puede abrir inmediatamente el archivo de dispositivo y registrarse en el controlador escribiendo un mensaje KVP_OP_REGISTER1 al archivo (lo cual es manejado por kvp_on_msg() ->kvp_handle_handshake()) y leyendo del archivo la respuesta del controlador, lo cual es gestionado por hvt_op_read(), que llama a hvt->on_read(), es decir, kvp_register_done().

2) el problema con kvp_register_done() es que puede provocar que se llame a la devolución de llamada del canal incluso antes de que este esté completamente abierto, y cuando la devolución de llamada comienza a ejecutarse, util_probe()-> vmbus_open() podría no haber inicializado aún el ringbuffer, por lo que la devolución de llamada puede provocar un pánico debido a una desreferenciación de puntero NULL.

Para reproducir el pánico de manera consistente, podemos añadir "ssleep(10)" para KVP en __vmbus_open(), justo antes del primer hv_ringbuffer_init(), y luego descargar y volver a cargar el controlador hv_utils, y ejecutar manualmente el demonio dentro de los 10 segundos.

Se corrige el pánico reordenando los pasos en util_probe() para que la entrada del dispositivo de caracteres utilizada por el demonio KVP o VSS no se cree hasta después de que vmbus_open() haya finalizado. Este reordenamiento evita que ocurra la condición de carrera (race condition).

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Responsable

Linux

Reservar

2025-01-09

Divulgación

2025-01-11

Moderación

aceptado

Artículo

VDB-291242

CPE

listo

EPSS

0.00220

KEV

no

Actividades

muy bajo

Fuentes

Want to stay up to date on a daily basis?

Enable the mail alert feature now!