🇰🇷 한글 설명
Linux 커널의 tun 네트워크 드라이버에서 헤드룸(headroom) 크기 계산 시 정수 언더플로우가 발생할 수 있는 취약점입니다. OVS(Open vSwitch)를 통해 비정상적으로 큰 헤드룸 요청이 전달될 경우, 메모리 할당 범위를 벗어난 위치에 데이터를 배치하여 메모리 오염을 유발할 수 있습니다.
💡 쉬운 설명
네트워크 데이터를 담는 메모리 공간을 계산하는 과정에서 숫자가 잘못 계산되어, 허용된 범위를 넘어선 곳에 데이터를 쓰는 오류입니다. 이로 인해 시스템의 중요한 메모리 영역이 망가질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: tun: bound receive headroom
tun_get_user() uses tun->align both as skb headroom and when choosing how
much packet data to keep linear. OVS can propagate an oversized headroom
request from another port to TUN or TAP.
When align is larger than the usable space in a one-page skb head,
SKB_MAX_HEAD(align) underflows and the result becomes negative when stored
in good_linear. That value later wraps when assigned to the size_t linear
variable, and tun_alloc_skb() can place skb->data outside the allocated
head.
Bound the headroom stored by TUN to the one-page skb-head budget and the
largest non-sentinel 16-bit skb header offset. Leave one linear byte for
raw TUN and a complete Ethernet header for TAP, including NET_IP_ALIGN.
Also pull the raw-TUN protocol byte and the TAP Ethernet header before
accessing them, so these checks remain safe for nonlinear skbs supplied by
other allocation paths.
📍 영향받는 시스템
Linux Kernel (tun 드라이버를 사용하는 시스템, 특히 OVS를 사용하는 환경)
⚔️ 공격 벡터
OVS를 통해 조작된 대형 헤드룸 요청을 TUN/TAP 인터페이스로 전달하여 메모리 오염 유발
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인