🇰🇷 한글 설명
리눅스 커널의 TCP 스택에서 경로 유도 advmss 값이 TCP_MIN_MSS보다 작아질 수 있는 취약점이 발견되었습니다. 이로 인해 tcp_select_initial_window() 함수 호출 시 0으로 나누기(divide-by-zero) 오류가 발생할 수 있습니다. 이를 방지하기 위해 tcp_dst_advmss() 헬퍼 함수를 도입하여 advmss 값을 최소 MSS 값으로 제한하도록 수정되었습니다.
💡 쉬운 설명
네트워크 설정값이 너무 작게 설정될 경우 컴퓨터가 계산을 하다가 0으로 나누는 오류를 일으켜 시스템이 멈출 수 있는 문제입니다. 이를 방지하기 위해 네트워크 설정값이 일정 수준 이하로 떨어지지 않도록 안전장치를 마련했습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
tcp: clamp route advmss to TCP_MIN_MSS
tcp_select_initial_window() assumes that callers never pass an MSS
smaller than 1, but route-derived advmss values can violate that
assumption.
A too-small explicit RTAX_ADVMSS is one way to get there, but it is not
the only one. The same divide-by-zero can also be reached through the
"default advmss" path when RTAX_ADVMSS is left at 0 and the effective
advmss is later driven down by route MTU and min_adv_mss.
Introduce a tcp_dst_advmss() helper that clamps route advmss to
TCP_MIN_MSS before TCP consumes it, and use it in the TCP paths that
derive advmss from dst metrics. This keeps the effective MSS from
dropping to zero before tcp_select_initial_window() rounds the receive
window.
📍 영향받는 시스템
TCP 스택의 advmss 계산 로직이 포함된 리눅스 커널 버전
⚔️ 공격 벡터
조작된 경로(route) 설정이나 MTU 값을 통해 advmss를 0 또는 매우 작은 값으로 유도하여 발생
🛡️ 대응 방법
tcp_dst_advmss() 헬퍼 함수가 적용된 최신 리눅스 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 패치가 적용된 보안 업데이트 버전인지 확인