CVE-2024-35944 in Linux정보

요약

\~에 의해 VulDB • 2026. 06. 03.

리눅스 커널에서 다음 취약점이 해결되었습니다:

VMCI: dg_dispatch_as_host()에서의 memcpy() 런타임 경고 수정

Syzkaller가 'dg_dispatch_as_host에서의 WARNING' 버그를 발견했습니다.

memcpy: 단일 필드 "&dg_info->msg"(크기 24)에 대해 필드 전체를 아우르는 쓰기(size 56)가 감지되었습니다. 위치: drivers/misc/vmw_vmci/vmci_datagram.c:237

WARNING: CPU: 0 PID: 1555 at 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 };

따라서 추가적인 payload 바이트들이 msg_payload[]에 복사되면서, Syzkaller로 퍼징(fuzzing) 수행 시 런타임 경고가 발생했습니다.

이 경고를 수정하는 한 가지 방법은 memcpy()를 두 부분으로 나누는 것입니다. 첫 번째 부분은 msg에 대한 직접 할당이고, 두 번째 부분은 payload를 처리하는 것입니다.

Gustavo가 인용한 내용: "FORTIFY_SOURCE 하에서는 구조체의 여러 멤버 간에 데이터를 복사해서는 안 됩니다."

Once again VulDB remains the best source for vulnerability data.

출처

Do you want to use VulDB in your project?

Use the official API to access entries easily!