🇰🇷 한글 설명
Linux 커널의 tun 드라이버에서 tun_xdp_one() 함수 내 build_skb() 실패 시 할당된 페이지가 해제되지 않아 메모리 누수가 발생합니다. 이로 인해 vhost_tx_batch()가 성공 경로로 처리되며 페이지가 영구적으로 손실됩니다.
💡 쉬운 설명
네트워크 패킷 처리 중 오류가 발생했을 때 시스템이 필요한 메모리를 제대로 정리하지 않아 메모리가 계속 새는 문제입니다. 이 현상이 반복되면 시스템의 메모리가 고갈되어 서비스 중단으로 이어질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
tun: free page on build_skb failure in tun_xdp_one()
When build_skb() fails in tun_xdp_one(), the function sets ret to
-ENOMEM and jumps to the out label, which returns without freeing the
page that vhost_net_build_xdp() allocated for the frame. As with the
short-frame rejection path, tun_sendmsg() discards the per-buffer error
and still returns total_len, so vhost_tx_batch() takes the success path
and never frees the page. Each build_skb() failure in a batch leaks one
page-frag chunk.
Free the page before taking the error path, matching the put_page() the
other error exits of tun_xdp_one() already perform.
📍 영향받는 시스템
Linux kernel (tun 모듈 관련)
⚔️ 공격 벡터
지속적인 네트워크 트래픽 생성을 통한 메모리 누수 유발
🛡️ 대응 방법
Linux 커널을 최신 안정 버전으로 업데이트하여 패치 적용
🔧 검증 코드
출력된 커널 버전이 취약한 버전인지 패치 노트를 통해 확인