🇰🇷 한글 설명
Linux 커널의 xen/netfront 드라이버에서 이더넷 헤더 길이가 불충분한 RX 패킷을 처리할 때 발생하는 취약점입니다. 패킷의 길이가 이더넷 헤더(ETH_HLEN)보다 짧을 경우 eth_type_trans() 함수 호출 과정에서 커널 버그(BUG)가 발생하거나 데이터 경계를 넘어 읽는 문제가 발생할 수 있습니다.
💡 쉬운 설명
네트워크 데이터를 처리할 때 데이터의 앞부분이 규격보다 너무 짧으면 컴퓨터 시스템이 혼란을 일으켜 멈추거나 오류를 낼 수 있는 문제입니다. 이를 방지하기 위해 데이터가 충분히 길지 않으면 즉시 버리는 보안 조치가 필요합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
xen/netfront: drop RX packets with a short Ethernet header
handle_incoming_queue() pulls pull_to bytes into the head before
calling eth_type_trans(). pull_to is the length of the first RX slot,
capped at RX_COPY_THRESHOLD, and that length comes from the backend.
Nothing checks it against ETH_HLEN.
If the first slot is shorter than ETH_HLEN and more slots follow, the
head ends up shorter than an Ethernet header while skb->len is longer,
and eth_type_trans() BUG()s in __skb_pull(). If the whole packet is
shorter than ETH_HLEN, eth_type_trans() reads the header past the end
of the data instead.
Pull at least ETH_HLEN, and drop the packet if that fails, which also
drops packets too short to hold an Ethernet header. This also checks
the return value of the pull, which was ignored.
📍 영향받는 시스템
Xen 환경을 사용하는 Linux 커널 (xen/netfront 드라이버 포함 버전)
⚔️ 공격 벡터
악의적인 백엔드(Backend)가 규격보다 짧은 이더넷 헤더를 가진 패킷을 전송하여 커널 오류 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 패킷 길이 검증 로직을 적용해야 함
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인