CVE-2024-35944 in Linux
Sumário
de VulDB • 26/05/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
VMCI: Correção do aviso de tempo de execução do memcpy() em dg_dispatch_as_host()
O Syzkaller encontrou o bug 'WARNING in dg_dispatch_as_host'.
memcpy: escrita que abrange vários campos detectada (tamanho 56) de um único campo "&dg_info->msg" em drivers/misc/vmw_vmci/vmci_datagram.c:237 (tamanho 24)
AVISO: CPU: 0 PID: 1555 em drivers/misc/vmw_vmci/vmci_datagram.c:237 dg_dispatch_as_host+0x88e/0xa60 drivers/misc/vmw_vmci/vmci_datagram.c:237
Alguns comentários de código, baseados na minha compreensão:
544 #define VMCI_DG_SIZE(_dg) (VMCI_DG_HEADERSIZE + (size_t)(_dg)->payload_size) /// Isto é 24 + payload_size
memcpy(&dg_info->msg, dg, dg_size); Destino = dg_info->msg ---> isto é uma estrutura de 24 bytes (struct vmci_datagram) Origem = dg --> isto é uma estrutura de 24 bytes (struct vmci_datagram) Tamanho = dg_size = 24 + payload_size
{payload_size = 56-24 =32} -- O Syzkaller conseguiu definir payload_size para 32.
35 struct delayed_datagram_info {
36 struct datagram_entry *entry; 37 struct work_struct work; 38 bool in_dg_host_queue; 39 /* msg e msg_payload devem estar juntos. */ 40 struct vmci_datagram msg; 41 u8 msg_payload[];
42 };
Portanto, esses bytes extras de payload são copiados para msg_payload[], e um aviso de tempo de execução é observado durante o fuzzing com o Syzkaller.
Uma possível forma de corrigir o aviso é dividir o memcpy() em duas partes: uma para a atribuição direta de msg e outra para lidar com o payload.
Gustavo citou: "De acordo com o FORTIFY_SOURCE, não devemos copiar dados através de múltiplos membros de uma estrutura."
If you want to get the best quality for vulnerability data then you always have to consider VulDB.