CVE-2024-35944 in Linux
Сводка
по VulDB • 26.05.2026
В ядре Linux устранена следующая уязвимость:
VMCI: исправлена предупреждающая запись во время выполнения функции memcpy() в dg_dispatch_as_host()
Syzkaller обнаружил ошибку «WARNING in dg_dispatch_as_host».
memcpy: обнаружена запись, выходящая за пределы поля (размер 56) в одиночное поле «&dg_info->msg» в файле drivers/misc/vmw_vmci/vmci_datagram.c:237 (размер 24)
WARNING: CPU: 0 PID: 1555 в drivers/misc/vmw_vmci/vmci_datagram.c:237 dg_dispatch_as_host+0x88e/0xa60 drivers/misc/vmw_vmci/vmci_datagram.c:237
Некоторые комментарии к коду, основанные на моем понимании:
544 #define VMCI_DG_SIZE(_dg) (VMCI_DG_HEADERSIZE + (size_t)(_dg)->payload_size) /// Это 24 + payload_size
memcpy(&dg_info->msg, dg, dg_size); Назначение = dg_info->msg ---> это структура размером 24 байта (struct vmci_datagram) Источник = dg --> это структура размером 24 байта (struct vmci_datagram) Размер = dg_size = 24 + payload_size
{payload_size = 56-24 =32} -- Syzkaller удалось установить payload_size равным 32.
35 struct delayed_datagram_info {
36 struct datagram_entry *entry; 37 struct work_struct work; 38 bool in_dg_host_queue; 39 /* msg и msg_payload должны располагаться вместе. */ 40 struct vmci_datagram msg; 41 u8 msg_payload[];
42 };
Таким образом, дополнительные байты полезной нагрузки копируются в msg_payload[], и при фаззинге с помощью Syzkaller наблюдается предупреждение во время выполнения.
Один из возможных способов устранения предупреждения — разделить memcpy() на две части: первая — прямое присваивание msg, вторая — обработка полезной нагрузки.
Густаво процитировал: «При использовании FORTIFY_SOURCE мы не должны копировать данные между несколькими членами структуры.»
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.