🇰🇷 한글 설명
Linux 커널의 IPv6 구현에서 MTU가 클 경우 MSS 값이 0xFFFF로 설정될 수 있는 취약점입니다. 0xFFFF는 커널 내부에서 GSO_BY_FRAGS를 나타내는 특수 값으로 사용되는데, 이로 인해 TCP 패킷 처리 중 NULL 포인터 역참조가 발생하여 시스템이 충돌할 수 있습니다.
💡 쉬운 설명
네트워크 설정 값이 커널이 사용하는 특수 신호와 겹치면서 발생하는 오류입니다. 이 오류가 발생하면 컴퓨터 시스템이 갑자기 멈추거나 꺼질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
tcp: ipv6: clamp default adverting MSS to avoid GSO_BY_FRAGS (0xFFFF)
When MTU is large, ip6_default_advmss() can return IPV6_MAXPLEN (65535).
This is interpreted by TCP as mss_clamp, allowing the MSS to reach 65535.
However, 0xFFFF is also used as a magic value GSO_BY_FRAGS in the kernel.
If a TCP packet with gso_size=0xFFFF is passed to skb_segment(), it will
be mistakenly treated as GSO_BY_FRAGS, leading to a NULL pointer
dereference because local TCP packets do not use frag_list.
Fix this by returning min(IPV6_MAXPLEN, GSO_BY_FRAGS - 1) (65534) from
ip6_default_advmss() when MTU is large.
Also update the stale comment in ip6_default_advmss() which suggested
that IPV6_MAXPLEN is returned to mean "any MSS".
📍 영향받는 시스템
GSO 기능을 사용하는 IPv6 네트워크 환경의 Linux 커널
⚔️ 공격 벡터
특수하게 조작된 MSS 값을 가진 IPv6 TCP 패킷을 전송하여 커널의 NULL 포인터 역참조 유도
🛡️ 대응 방법
MSS 값이 0xFFFF가 되지 않도록 수정된 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인