🇰🇷 한글 설명
리눅스 커널의 qdisc_pkt_len_segs_init() 함수에서 GSO(Generic Segmentation Offload) 패킷의 헤더를 처리할 때 발생하는 취약점입니다. 특정 네트워크 드라이버가 헤더가 skb->head에 이미 존재한다고 가정하고 메모리를 복사하는 과정에서 문제가 발생할 수 있습니다.
💡 쉬운 설명
네트워크 데이터를 처리하는 과정에서 데이터의 머리 부분(헤더)이 제대로 준비되지 않았을 때 발생하는 오류입니다. 악의적인 패킷을 보내 시스템의 메모리 처리 과정에 혼란을 줄 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: pull headers in qdisc_pkt_len_segs_init()
Most ndo_start_xmit() methods expects headers of gso packets
to be already in skb->head.
net/core/tso.c users are particularly at risk, because tso_build_hdr()
does a memcpy(hdr, skb->data, hdr_len);
qdisc_pkt_len_segs_init() already does a dissection of gso packets.
Use pskb_may_pull() instead of skb_header_pointer() to make
sure drivers do not have to reimplement this.
Some malicious packets could be fed, detect them so that we can
drop them sooner with a new SKB_DROP_REASON_SKB_BAD_GSO drop_reason.
📍 영향받는 시스템
GSO 기능을 사용하는 리눅스 커널 기반 시스템 (net/core/tso.c 사용 환경)
⚔️ 공격 벡터
조작된 GSO 패킷을 네트워크를 통해 전송하여 커널의 메모리 복사 로직을 유도함
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 pskb_may_pull() 로직이 적용되도록 함
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.