🔍 CVE-2026-31423

5.5
CVSS Score
MEDIUM
2026-04-13
2026-11-05 22:18
✅ 완료

🇰🇷 한글 설명

Linux 커널의 net/sched 모듈에서 HFSC 큐잉 디스플린의 rtsc_min() 함수에 divide-by-zero 취약점이 존재합니다. m2sm() 함수가 32비트 slope를 64비트 값으로 변환할 때 큰 입력값(예: 4000000000)에서 2^32에 도달하는데, 이 차이를 32비트 변수에 저장하면 truncation으로 0이 되어 나누기 에러를 유발합니다.

💡 쉬운 설명

Linux 커널의 네트워크 트래픽 관리 기능에서 특정 계산값이 0이 되어 수학 오류(0으로 나누기)가 발생하고 시스템이 멈추는 문제입니다. 네트워크 설정을 변경할 수 있는 권한이 있으면 이를 악용할 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: net/sched: sch_hfsc: fix divide-by-zero in rtsc_min() m2sm() converts a u32 slope to a u64 scaled value. For large inputs (e.g. m1=4000000000), the result can reach 2^32. rtsc_min() stores the difference of two such u64 values in a u32 variable `dsm` and uses it as a divisor. When the difference is exactly 2^32 the truncation yields zero, causing a divide-by-zero oops in the concave-curve intersection path: Oops: divide error: 0000 RIP: 0010:rtsc_min (net/sched/sch_hfsc.c:601) Call Trace: init_ed (net/sched/sch_hfsc.c:629) hfsc_enqueue (net/sched/sch_hfsc.c:1569) [...] Widen `dsm` to u64 and replace do_div() with div64_u64() so the full difference is preserved.

📍 영향받는 시스템

Linux kernel net/sched/sch_hfsc.c 모듈을 포함한 리눅스 커널 (패치 전)

⚔️ 공격 벡터

로컬 공격자가 HFSC 큐잉 디스플린 설정 시 특정 slope 값으로 rtsc_min() 호출 트리거

🛡️ 대응 방법

Linux 커널을 divide-by-zero 패치가 적용된 버전으로 업그레이드

🔧 검증 코드

커널 버전 확인 후 sch_hfsc.c 파일에서 dsm 변수가 u64로 선언되고 div64_u64() 사용 여부 확인 (u32 dsm이면 취약)

Shell / Script
uname -r && grep -n 'dsm' /sys/kernel/debug/sched/sch_hfsc.c 2>/dev/null || grep -A5 'rtsc_min' /usr/src/linux-*/net/sched/sch_hfsc.c 2>/dev/null | head -20

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Linux Kernel