🇰🇷 한글 설명
Linux 커널의 IPv4 네트워크 스택에서 tcp_reordering sysctl 설정 시 음수 값이 입력되면 매우 큰 양수로 변환되는 취약점이 발견되었습니다. 이로 인해 tcp_mtu_probing 기능 사용 시 MTU 크기 계산 과정에서 정수 오버플로가 발생하여 경계 외 읽기(Out-of-bounds read)가 가능해집니다.
💡 쉬운 설명
네트워크 설정값에 잘못된 숫자를 입력하면 컴퓨터가 계산 오류를 일으켜 시스템의 민감한 정보를 몰래 읽어갈 수 있는 문제입니다. 이를 방지하기 위해 잘못된 값이 입력되지 않도록 검증하는 과정이 추가되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: ipv4: bound TCP reordering sysctl writes and MTU probe sizes
Reject invalid `net.ipv4.tcp_reordering` values before they reach TCP
socket state. The sysctl is stored as an `int` but copied into the
`u32` `tp->reordering` field for new sockets, so negative writes wrap
to large values.
With `tcp_mtu_probing=2`, the wrapped value can overflow the
`tcp_mtu_probe()` size calculation and drive the MTU probing path into
an out-of-bounds read. Route `tcp_reordering` writes through
`proc_dointvec_minmax()` and require it to be at least 1. Also require
`tcp_max_reordering` to be at least 1 so the configured maximum cannot
become negative either.
When registering the table for a non-init network namespace, relocate
`extra2` pointers that refer into `init_net.ipv4` so the
`tcp_reordering` upper bound follows that namespace's
`tcp_max_reordering`.
Harden `tcp_mtu_probe()` itself by computing `size_needed` as `u64`.
This keeps the send queue and window checks from being bypassed through
signed integer overflow.
📍 영향받는 시스템
Linux Kernel (IPv4 TCP stack 관련 버전)
⚔️ 공격 벡터
로컬 권한을 가진 공격자가 sysctl을 통해 net.ipv4.tcp_reordering에 음수 값을 입력하여 정수 오버플로 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인