🇰🇷 한글 설명
Linux 커널의 virtio-net 드라이버에서 대형 패킷 수신 시 길이 검증 로직에 결함이 발견되었습니다. 악의적인 호스트가 잘못된 버퍼 길이를 전달할 경우, 할당된 크기보다 큰 데이터를 수신할 때 NULL 페이지 포인터 역참조가 발생할 수 있습니다.
💡 쉬운 설명
가상 머신이 네트워크 데이터를 받을 때, 데이터 크기를 제대로 확인하지 못해 시스템이 멈추거나 오류가 발생할 수 있는 문제입니다. 공격자가 조작된 데이터를 보내면 컴퓨터의 핵심 기능이 마비될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
virtio-net: fix received length check in big packets
Since commit 4959aebba8c0 ("virtio-net: use mtu size as buffer length
for big packets"), when guest gso is off, the allocated size for big
packets is not MAX_SKB_FRAGS * PAGE_SIZE anymore but depends on
negotiated MTU. The number of allocated frags for big packets is stored
in vi->big_packets_num_skbfrags.
Because the host announced buffer length can be malicious (e.g. the host
vhost_net driver's get_rx_bufs is modified to announce incorrect
length), we need a check in virtio_net receive path. Currently, the
check is not adapted to the new change which can lead to NULL page
pointer dereference in the below while loop when receiving length that
is larger than the allocated one.
This commit fixes the received length check corresponding to the new
change.
📍 영향받는 시스템
Linux kernel (virtio-net driver 사용 환경)
⚔️ 공격 벡터
악의적인 호스트가 vhost_net 드라이버를 통해 조작된 버퍼 길이를 전달하여 공격
🛡️ 대응 방법
커널 패치(commit 4959aebba8c0 관련 수정 사항 포함)를 적용하여 최신 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 최신 패치 버전인지 확인