🇰🇷 한글 설명
리눅스 커널의 GRO(Generic Receive Offload) 처리 과정에서 패킷 소유권 이전 시 소켓 참조가 적절히 제거되지 않는 취약점입니다. 이로 인해 skb_orphan 과정에서 커널 버그가 발생하여 시스템이 충돌할 수 있습니다.
💡 쉬운 설명
네트워크 데이터를 처리하는 과정에서 데이터와 연결된 통로(소켓) 정보가 제대로 정리되지 않아 컴퓨터 시스템이 멈추거나 오류가 발생하는 문제입니다. 데이터가 처리된 후에도 연결 정보가 남아 있어 시스템이 혼란을 겪게 됩니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
gro: fix ownership transfer
If packets are GROed with fraglist they might be segmented later on and
continue their journey in the stack. In skb_segment_list those skbs can
be reused as-is. This is an issue as their destructor was removed in
skb_gro_receive_list but not the reference to their socket, and then
they can't be orphaned. Fix this by also removing the reference to the
socket.
For example this could be observed,
kernel BUG at include/linux/skbuff.h:3131! (skb_orphan)
RIP: 0010:ip6_rcv_core+0x11bc/0x19a0
Call Trace:
ipv6_list_rcv+0x250/0x3f0
__netif_receive_skb_list_core+0x49d/0x8f0
netif_receive_skb_list_internal+0x634/0xd40
napi_complete_done+0x1d2/0x7d0
gro_cell_poll+0x118/0x1f0
A similar construction is found in skb_gro_receive, apply the same
change there.
📍 영향받는 시스템
GRO 기능을 사용하는 취약한 버전의 Linux Kernel
⚔️ 공격 벡터
특수하게 조작된 네트워크 패킷을 전송하여 커널의 GRO 처리 로직을 유발
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 패치 버전인지 확인