🇰🇷 한글 설명
Linux 커널의 tun_xdp_one() 함수에서 짧은 프레임 거부 시 할당된 페이지를 해제하지 않아 메모리 누수가 발생합니다. 로컬 공격자가 /dev/net/tun과 /dev/vhost-net를 악용하여 반복적인 요청을 보내면 호스트 메모리가 고갈되어 OOM 패닉을 유발할 수 있습니다.
💡 쉬운 설명
시스템의 네트워크 장치 드라이버에서 작은 데이터 패킷 처리 시 메모리를 제대로 정리하지 않는 결함이 있습니다. 공격자가 이를 악용해 메모리를 계속 소모하면 시스템이 멈추거나 충돌할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
tun: free page on short-frame rejection in tun_xdp_one()
tun_xdp_one() returns -EINVAL on a frame shorter than ETH_HLEN without
freeing the page that vhost_net_build_xdp() allocated for it.
tun_sendmsg() discards that -EINVAL and still returns total_len, so
vhost_tx_batch() takes the success path and never frees the page; each
short frame in a batch leaks one page-frag chunk.
A local process that can open /dev/net/tun and /dev/vhost-net can hit
this path: it attaches a tun/tap device as the vhost-net backend and
feeds TX descriptors whose length minus the virtio-net header is below
ETH_HLEN. Each kick leaks the page-frag chunks for that batch, and a
tight submission loop exhausts host memory and triggers an OOM panic.
Free the page before returning -EINVAL, matching the XDP-program error
path in the same function.
📍 영향받는 시스템
Linux kernel (tun/vhost-net 모듈이 활성화된 모든 버전)
⚔️ 공격 벡터
로컬에서 /dev/net/tun과 /dev/vhost-net를 통해 짧은 프레임의 TX 디스크립터를 반복적으로 제출하여 메모리 고갈을 유도
🛡️ 대응 방법
Linux 커널을 최신 안정 버전으로 업데이트하여 tun_xdp_one()의 메모리 해제 로직을 적용받으십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 버전인지 확인하십시오.