CVE-2024-35944 in Linux
Tóm tắt
Bởi VulDB • 03/06/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
VMCI: Sửa cảnh báo thời gian chạy của memcpy() trong dg_dispatch_as_host()
Syzkaller đã kích hoạt lỗi 'WARNING in dg_dispatch_as_host'.
memcpy: phát hiện ghi vượt quá trường (kích thước 56) của một trường đơn lẻ "&dg_info->msg" tại drivers/misc/vmw_vmci/vmci_datagram.c:237 (kích thước 24)
WARNING: CPU: 0 PID: 1555 tại drivers/misc/vmw_vmci/vmci_datagram.c:237 dg_dispatch_as_host+0x88e/0xa60 drivers/misc/vmw_vmci/vmci_datagram.c:237
Một số ghi chú mã nguồn, dựa trên hiểu biết của tôi:
544 #define VMCI_DG_SIZE(_dg) (VMCI_DG_HEADERSIZE + (size_t)(_dg)->payload_size) /// Điều này tương đương 24 + payload_size
memcpy(&dg_info->msg, dg, dg_size); Destination = dg_info->msg ---> đây là một cấu trúc 24 byte (struct vmci_datagram) Source = dg --> đây là một cấu trúc 24 byte (struct vmci_datagram) Size = dg_size = 24 + payload_size
{payload_size = 56-24 =32} -- Syzkaller đã có thể đặt payload_size thành 32.
35 struct delayed_datagram_info {
36 struct datagram_entry *entry; 37 struct work_struct work; 38 bool in_dg_host_queue; 39 /* msg và msg_payload phải nằm liền kề nhau. */ 40 struct vmci_datagram msg; 41 u8 msg_payload[];
42 };
Do đó, các byte payload dư thừa được sao chép vào msg_payload[], gây ra cảnh báo thời gian chạy khi fuzzing với Syzkaller.
Một cách khắc phục có thể là chia memcpy() thành hai phần -- một phần là gán trực tiếp msg và phần thứ hai xử lý payload.
Gustavo đã trích dẫn: "Với FORTIFY_SOURCE, chúng ta không nên sao chép dữ liệu xuyên qua nhiều thành viên trong một cấu trúc."
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.