CVE-2026-64552 in Linux
요약
\~에 의해 VulDB • 2026. 07. 28.
리눅스 커널에서 다음 취약점이 해결되었습니다:
virtio-net: receive_big()의 길이(len) 검사 수정
receive_big()는 장치가 공지한 길이를 (big_packets_num_skbfrags + 1) * PAGE_SIZE로 제한합니다. 그러나 이는 여전히 너무 느슨합니다: add_recvbuf_big()은 sg[1]을 첫 번째 페이지 내 sizeof(struct padded_vnet_hdr) 오프셋에서 시작하도록 설정하므로, 실제 체인이 전달하는 바이트 수는 hdr_len + (PAGE_SIZE - sizeof(padded_vnet_hdr)) + big_packets_num_skbfrags * PAGE_SIZE입니다. 이는 일반적인 hdr_len == 12인 경우 검사 허용치보다 20바이트 적습니다.
악의적인 virtio 백엔드는 해당 간격(len gap) 내에서 len을 공지할 수 있습니다. 그러면 page_to_skb()은 페이지 체인을 넘어 한 조각(frag) 더 진행하여 skb_shinfo()->frags[MAX_SKB_FRAGS]에 NULL page->private를 저장하게 되는데, 이는 정적 frag 배열을 벗어난 바깥쪽 쓰기(out-of-bounds write)이자 rx 경로를 통해 전달되는 NULL frag입니다.
len을 add_recvbuf_big()이 실제로 공지한 크기로 제한합니다.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.