🇰🇷 한글 설명
Linux 커널의 tcp_v6_syn_recv_sock() 함수에서 발생하는 경쟁 상태 취약점입니다. TCP IPv4/IPv6 매핑 소켓 생성 시 자식 소켓이 해시 테이블에 등록된 후에도 ipv6_pinfo 포인터가 부모 소켓을 가리켜 메모리 손상과 시스템 불안정을 초래합니다. 패치는 초기화 로직을 소켓 노출 전으로 이동시켜 경쟁 상태를 제거합니다.
💡 쉬운 설명
리눅스 커널에서 네트워크 연결 처리 중 여러 CPU가 동시에 같은 소켓 정보에 접근할 때 발생하는 오류입니다. 이를 악용하면 시스템을 충돌시키거나 메모리 데이터를 손상시킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
tcp: fix potential race in tcp_v6_syn_recv_sock()
Code in tcp_v6_syn_recv_sock() after the call to tcp_v4_syn_recv_sock()
is done too late.
After tcp_v4_syn_recv_sock(), the child socket is already visible
from TCP ehash table and other cpus might use it.
Since newinet->pinet6 is still pointing to the listener ipv6_pinfo
bad things can happen as syzbot found.
Move the problematic code in tcp_v6_mapped_child_init()
and call this new helper from tcp_v4_syn_recv_sock() before
the ehash insertion.
This allows the removal of one tcp_sync_mss(), since
tcp_v4_syn_recv_sock() will call it with the correct
context.
📍 영향받는 시스템
Linux kernel 전 버전 (특히 IPv6 지원 설정된 커널)
⚔️ 공격 벡터
로컬 또는 원격에서 TCP/IPv6 매핑 연결을 반복 생성하여 경쟁 상태 트리거
🛡️ 대응 방법
커널 패치 적용 또는 최신 안정 버전으로 업데이트
🔧 검증 코드
커널 버전과 최근 오류 로그를 확인하여 취약점 관련 메시지 여부로 판단하거나, vendor의 권장 최신 버전과 현재 버전 비교로 패치 상태 확인
uname -a | grep -i linux && dmesg | grep -i 'tcp.*race' || echo 'Vulnerable kernel version detected'