🇰🇷 한글 설명
Linux 커널의 virtio-net 드라이버에서 TCP 패킷의 gso_size가 최소 크기인 8보다 작게 설정될 경우, gso_segs 16비트 필드에 오버플로우가 발생할 수 있는 취약점입니다. 이 문제는 AF_PACKET PACKET_VNET_HDR 소켓을 사용하는 사용자가 조작된 패킷을 생성할 때 발생합니다. 이를 해결하기 위해 TCP 패킷의 gso_size가 최소 8 이상이 되도록 조정되었습니다.
💡 쉬운 설명
네트워크 데이터를 한 번에 묶어서 보내는 과정에서 숫자가 너무 커져서 시스템이 계산 오류를 일으킬 수 있는 문제입니다. 공격자가 특수하게 만든 패킷을 보내면 시스템의 네트워크 처리 과정에 혼란을 줄 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
virtio-net: Ensure that TCP packets don't overflow gso_segs
The user can specify any gso_size in a packet crafted with an AF_PACKET
PACKET_VNET_HDR socket, even smaller than TCP_MIN_GSO_SIZE = 8. At the
same time, GSO_MAX_SIZE = 8 * GSO_MAX_SEGS = 8 * 65535. When the user
crafts a packet with gso_size < 8, there is a risk for partial GSO to
overflow the 16-bit gso_segs field when dividing the SKB length by
gso_size.
Adjust gso_size of TCP packets to be at least TCP_MIN_GSO_SIZE = 8. Keep
gso_size of UDP GSO packets, as gso_size=1 is valid and explicitly
tested at tools/testing/selftests/net/tun.c:649.
📍 영향받는 시스템
virtio-net 드라이버를 사용하는 Linux 커널 버전
⚔️ 공격 벡터
AF_PACKET PACKET_VNET_HDR 소켓을 사용하여 gso_size가 8보다 작은 조작된 TCP 패킷 전송
🛡️ 대응 방법
해당 취약점이 수정된 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 배포판의 보안 업데이트 버전인지 확인