🔍 CVE-2017-1000112

7.0
CVSS Score
HIGH
2017-10-05
2026-05-13 00:24
✅ 완료

🇰🇷 한글 설명

Linux 커널의 UFO(UDP Fragmentation Offload) 처리에서 MSG_MORE 플래그와 함께 전송되는 두 개의 send() 호출 사이에 전송 경로가 UFO에서 non-UFO로 전환되면서 메모리 corruption이 발생합니다. 패킷 분할 계산 과정에서 음수 값이 생겨 skb_copy_and_csum_bits()가 범위를 벗어난 메모리 영역에 접근하여 커널 메모리를 덮어씁니다. IPv4 및 IPv6 코드 모두에 동일한 결함이 존재합니다.

💡 쉬운 설명

커널이 네트워크 패킷을 처리할 때 처리 방식을 바꾸면서 메모리의 잘못된 위치에 데이터를 쓰는 버그입니다. 로컬 공격자가 특수한 네트워크 패킷을 전송하여 커널 권한으로 임의 코드를 실행할 수 있습니다.

🇺🇸 원문 (English)

Linux kernel: Exploitable memory corruption due to UFO to non-UFO path switch. When building a UFO packet with MSG_MORE __ip_append_data() calls ip_ufo_append_data() to append. However in between two send() calls, the append path can be switched from UFO to non-UFO one, which leads to a memory corruption. In case UFO packet lengths exceeds MTU, copy = maxfraglen - skb->len becomes negative on the non-UFO path and the branch to allocate new skb is taken. This triggers fragmentation and computation of fraggap = skb_prev->len - maxfraglen. Fraggap can exceed MTU, causing copy = datalen - transhdrlen - fraggap to become negative. Subsequently skb_copy_and_csum_bits() writes out-of-bounds. A similar issue is present in IPv6 code. The bug was introduced in e89e9cf539a2 ("[IPv4/IPv6]: UFO Scatter-gather approach") on Oct 18 2005.

📍 영향받는 시스템

2005년 10월 이후 대부분의 Linux 커널 버전 (4.4.21, 4.8.0, 4.9.0 미만)

⚔️ 공격 벡터

로컬 사용자가 MSG_MORE 플래그로 UDP 패킷을 여러 send() 호출로 분할 전송하여 경로 전환 유도

🛡️ 대응 방법

Linux 커널을 최신 버전으로 업데이트하거나 배포판 보안 패치 적용 (Ubuntu, RHEL, Debian 등 각 배포판의 패치된 버전 설치)

🔧 검증 코드

커널 버전이 4.4 미만 또는 4.5-4.7 범위면 잠재적 취약점 대상이므로, 배포판의 백포트 패치 여부를 확인하고 'linux-image' 패키지 업데이트 필요

Shell / Script
uname -r | grep -qE '^[1-3]\.|^4\.[0-3]\.' && echo 'Potentially vulnerable - check kernel build date' || echo 'May be patched - verify with distributor'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Linux Kernel