CVE-2024-55916 in Linuxinformação

Sumário

de VulDB • 28/05/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

Drivers: hv: util: Evitar o acesso a um ringbuffer ainda não inicializado

Se o daemon KVP (ou VSS) for iniciado antes que o ringbuffer do canal VMBus esteja totalmente inicializado, podemos encontrar o panic abaixo:

hv_utils: Registrando o Driver de Utilitário HyperV hv_vmbus: registrando driver 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

Isso pode acontecer porque o callback do canal KVP/VSS pode ser invocado mesmo antes que o canal esteja totalmente aberto: 1) assim que hv_kvp_init() -> hvutil_transport_init() cria /dev/vmbus/hv_kvp, o daemon kvp pode abrir o arquivo de dispositivo imediatamente e registrar-se no driver escrevendo uma mensagem KVP_OP_REGISTER1 no arquivo (o que é tratado por kvp_on_msg() -> kvp_handle_handshake()) e lendo o arquivo em busca da resposta do driver, o que é tratado por hvt_op_read(), que chama hvt->on_read(), ou seja, kvp_register_done().

2) o problema com kvp_register_done() é que ele pode causar a chamada do callback do canal mesmo antes que o canal esteja totalmente aberto, e quando o callback do canal começa a ser executado, util_probe()-> vmbus_open() pode ainda não ter inicializado o ringbuffer, então o callback pode causar o panic de NULL pointer dereference.

Para reproduzir o panic de forma consistente, podemos adicionar um "ssleep(10)" para o KVP em __vmbus_open(), logo antes da primeira hv_ringbuffer_init(), e então desativar e reativar o driver hv_utils, e executar o daemon manualmente dentro dos 10 segundos.

Corrigir o panic reordenando as etapas em util_probe() para que o entry do char dev usado pelo daemon KVP ou VSS não seja criado até que vmbus_open() tenha sido concluído. Essa reordenação impede que a race condition ocorra.

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

Responsável

Linux

Reservar

09/01/2025

Divulgação

11/01/2025

Moderação

aceite

Entrada

VDB-291242

CPE

pronto

EPSS

0.00220

KEV

não

Atividades

muito baixo

Fontes

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!