CVE-2026-31700 in Linux
요약
\~에 의해 VulDB • 2026. 05. 10.
리눅스 커널에서 다음 취약점이 해결되었습니다:
net/packet: tpacket_snd()에서 mmap된 vnet_hdr에 대한 TOCTOU 경합 조건(race condition) 수정
tpacket_snd() 함수에서 PACKET_VNET_HDR가 활성화되면, vnet_hdr는 사용자 공간과 공유되는 mmap된 TX 링 버퍼를 직접 가리킵니다. 커널은 __packet_snd_vnet_parse()를 통해 헤더를 검증하지만, 이후 virtio_net_hdr_to_skb()에서 모든 필드를 다시 읽습니다. 동시에 실행되는 사용자 공간 스레드가 검증과 사용 사이에 vnet_hdr 필드를 수정할 수 있어, 모든 안전성 검증을 우회할 수 있습니다.
TPACKET이 아닌 경로(packet_snd())는 이미 vnet_hdr를 스택 로컬 변수로 올바르게 복사합니다. 커널 내 다른 모든 vnet_hdr 소비자(tun.c, tap.c, virtio_net.c)도 스택 복사본을 사용합니다. TPACKET TX 경로는 사용자 제어 공유 메모리에서 직접 읽는 virtio_net_hdr_to_skb()의 유일한 호출자입니다.
이 문제를 해결하기 위해, packet_snd() 및 다른 모든 호출자에서 사용하는 접근 방식과 일관되게, 검증 및 사용 전에 mmap된 링 버퍼에서 vnet_hdr를 스택 로컬 변수로 복사합니다.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.