CVE-2026-64527 in Linux정보

요약

\~에 의해 VulDB • 2026. 07. 26.

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

drm/hyperv: 수신 콜백(VMBus 패킷 크기 검증)

hyperv_receive_sub() 함수는 msg->vid_hdr.type을 읽은 후 호스트가 hv->recv_buf에 실제로 몇 바이트를 기록했는지 알 수 없는 상태에서 네 가지 메시지 유형 분기 중 하나로 디스패치합니다. 이후 완료 경로에서 memcpy(hv->init_buf, msg, VMBUS_MAX_PACKET_SIZE)가 실행되므로, wait_for_completion_timeout() 대기 중인 소비자는 이전 메시지의 잔여 데이터(residue)를 최대 16 KiB까지 응답 페이로드인 것처럼 읽을 수 있습니다.

bytes_recvd 값을 hyperv_receive_sub()로 전달하고, 파이프와 synthvid 헤더를 모두 포함하지 않는 모든 패킷은 거부합니다. msg->vid_hdr.type에 대해 단일 switch 문을 사용하여 유형별 페이로드 크기를 계산합니다. 세 가지 완료 처리 관련 유형(SYNTHVID_VERSION_RESPONSE, SYNTHVID_RESOLUTION_RESPONSE, SYNTHVID_VRAM_LOCATION_ACK)은 memcpy 및 complete 전에 해당 크기 확인을 요구하는 공유 종료 경로로 전달되며, SYNTHVID_FEATURE_CHANGE는 자체적으로 페이로드를 검증하고 is_dirt_needed 읽기 전에 반환합니다. 알려지지 않은 유형은 폐기됩니다.

SYNTHVID_RESOLUTION_RESPONSE는 가변 길이입니다: 호스트가 전체 SYNTHVID_MAX_RESOLUTION_COUNT 배열 대신 resolution_count 항목만 채웁니다. 먼저 고정 접두사를 검증하여 resolution_count를 읽고, 이를 배열 크기로 제한한 후 해당 크기만큼의 배열만 요구함으로써 호스트가 실제로 전송하는 더 짧은 응답도 허용합니다.

vmbus_recvpacket()이 성공을 반환할 때만 서브 핸들러를 실행합니다. memcpy 길이는 bytes_recvd이며, 이는 수신 성공 시에만 VMBUS_MAX_PACKET_SIZE로 제한됩니다. -ENOBUFS의 경우 vmbus_recvpacket()은 필요한 길이를 보고하며, 이 값이 hv->recv_buf보다 클 수 있으므로 bytes_recvd만큼 복사하면 16 KiB 버퍼를 벗어나 읽기 및 쓰기가 발생할 수 있습니다. 성공 반환 시에만 복사를 수행함으로써 범위를 제한합니다. 음수가 아닌 반환 경로는 자체적으로 잘못된 메시지 사례에 해당하므로 이제 조용히 건너뛰는 대신 로깅되며, 채널 복구 시도도 이루어지지 않습니다.

거부된 패킷은 hv_kvp_onchannelcallback()의 CoCo(Cooperative Confidential Computing) 강화 패턴과 일치하도록 drm_err_ratelimited()를 통해 보고되며, 조용히 폐기되지 않습니다.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

책임이 있는

Linux

예약하다

2026. 07. 19.

모더레이션

수락

항목

VDB-383050

EPSS

0.00215

활동

낮음

출처

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!