🇰🇷 한글 설명
Linux kernel 4.12 이전 버전의 tcp_disconnect 함수에서 __tcp_select_window 함수 호출 시 0으로 나누기 오류가 발생합니다. 특정 tcp_recvmsg 코드 경로에서 disconnect를 트리거하면 커널 패닉으로 인한 시스템 충돌이 발생합니다.
💡 쉬운 설명
Linux 시스템의 네트워킹 코드에 계산 오류 버그가 있어, 로컬 사용자가 네트워크 연결을 특정 방식으로 끊으면 컴퓨터가 다운될 수 있습니다. 이는 로컬 접근 권한이 있는 사람만 악용할 수 있습니다.
🇺🇸 원문 (English)
The tcp_disconnect function in net/ipv4/tcp.c in the Linux kernel before 4.12 allows local users to cause a denial of service (__tcp_select_window divide-by-zero error and system crash) by triggering a disconnect within a certain tcp_recvmsg code path.
📍 영향받는 시스템
Linux kernel < 4.12 모든 버전
⚔️ 공격 벡터
로컬 사용자가 tcp_recvmsg 실행 중 disconnect를 트리거하여 __tcp_select_window에서 division-by-zero 오류 유발
🛡️ 대응 방법
Linux kernel을 4.12 이상으로 업그레이드하거나, 배포판에서 제공하는 보안 패치 적용
🔧 검증 코드
VULNERABLE이 출력되면 취약함; PATCHED가 출력되면 안전함
uname -r | awk -F. '{v=$1*1000+$2*1; if(v<4012) print "VULNERABLE"; else print "PATCHED"}'