🇰🇷 한글 설명
Linux 커널의 tap 모듈에서 tap_get_user_xdp() 함수의 에러 처리 경로에서 할당된 메모리 페이지가 해제되지 않는 메모리 누수 취약점이 있습니다. vhost_net_build_xdp()가 할당한 페이지가 에러 발생 시 해제되지 않아 배치 처리 중 프레임이 거부될 때마다 페이지 프래그먼트가 누수됩니다.
💡 쉬운 설명
네트워크 패킷 처리 중 오류가 발생했을 때 시스템 메모리를 제대로 정리하지 않아 메모리가 계속 새는 문제입니다. 공격자가 이를 악용하면 시스템의 메모리를 고갈시켜 서비스 거부(DoS)를 유발할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
tap: free page on error paths in tap_get_user_xdp()
tap_get_user_xdp() rejects a frame shorter than ETH_HLEN with -EINVAL,
and returns -ENOMEM when build_skb() fails. Both paths jump to the err
label without freeing the page that vhost_net_build_xdp() allocated for
the frame. tap_sendmsg() discards the per-buffer return value and always
returns 0, so vhost_tx_batch() takes the success path and never frees
the page; each rejected frame in a batch leaks one page-frag chunk.
Free the page on both error paths, before the skb is built. This is the
tap counterpart of the same leak in tun_xdp_one().
📍 영향받는 시스템
Linux kernel (tap 모듈이 포함된 모든 버전)
⚔️ 공격 벡터
로컬 또는 원격에서 잘못된 크기의 네트워크 프레임을 전송하여 메모리 누수를 유발
🛡️ 대응 방법
벤더가 제공하는 최신 커널 패치로 업데이트하여 메모리 해제 로직을 수정
🔧 검증 코드
출력된 커널 버전이 벤더의 보안 공지에서 영향을 받는 버전인지 확인