[공격] 분석 — CVE-2026-31423
Local HFSC scheduler divide‑by‑zero can be triggered via crafted tc/netlink parameters, causing a kernel panic and host‑wide DoS; immediate patch or disabling of HFSC is the top mitigation.
📋 요약
- 심각도 medium · CVSS 5.5 · EPSS 0.0012 · 악용난이도 hard
🔍 공격 기법
-
전제 조건
- 로컬 시스템 접근 권한 보유(일반 사용자라도
CAP_NET_ADMIN을 획득하거나 privileged 컨테이너/네임스페이스 내부에서 실행 가능). - 커널 버전이 취약 범위(
2.6.12.1‑5.10.253,5.11‑5.15.203,5.16‑6.1.168,6.2‑6.6.134,6.7‑6.12.81,6.13‑6.18.22,6.19‑6.19.12)에 포함됨. (다중 소스에서 일관성 확인)
- 로컬 시스템 접근 권한 보유(일반 사용자라도
-
정찰
uname -r로 커널 버전 확인 → 취약 여부 판단.tc qdisc show혹은lsmod | grep sch_hfsc로 HFSC 스케줄러 활성화 여부 탐색.
-
초기 접근 & 트리거
tc qdisc add dev <if> root hfsc default 1로 HFSC 큐디스크를 생성(또는 기존 HFSC에class change).tc class replace dev <if> parent 1: classid 1:10 hfsc rate 4000000000ceil 4000000000과 같이 u32 slope 값이4 × 10⁹수준으로 크게 설정.- 해당 클래스가 패킷을 enqueue 하면
hfsc_enqueue → init_ed → rtsc_min()가 호출되고, 두u64차이가 정확히2³²이면 내부u32 dsm로 트렁케이트되어 0이 되고do_div()에서 divide‑by‑zero가 발생한다.
-
권한 상승·지속
- 취약점 자체는 권한 상승을 제공하지 않으며, 커널 패닉 후 시스템 재부팅이 필요하므로 지속성은 의미 없지만, 공격자는 시스템 복구 절차를 방해하거나 자동 재시작 스크립트를 악용할 수 있음(추정).
-
영향 확장 (컨테이너·멀티‑테넌시)
- HFSC 스케줄러 구조체(
tc_sched)는 네임스페이스 경계를 넘어 cgroup 간에 공유됨. 로컬 프로세스가 제로 나눗셈을 일으키면 동일 호스트 내 다른 컨테이너/워크로드의 트래픽 큐가 모두 정지해 호스트 전체 가용성이 파괴된다(동료 토론 DGX_A·DGX_C 의 의견 반영). - 따라서 CVSS 벡터
AV:L은 로컬 접근을 의미하지만, 실제 위험 등급은 멀티‑테넌시 환경에서 높음으로 재평가할 필요가 있다.
- HFSC 스케줄러 구조체(
-
공격 흐름 요약
| 단계 | 전제·조건 | 관측 지표 |
|---|---|---|
| Recon | uname -r, tc qdisc show | 커널 버전, HFSC 존재 여부 |
| Init | CAP_NET_ADMIN 또는 privileged 컨테이너 | sudo tc … 성공 로그 |
| Trigger | 대형 slope 입력 (≥4e9) | rtsc_min 호출, dsm==0 |
| Effect | 커널 OOPS (divide error) → panic | dmesg에 “Oops: divide error” 및 RIP=rtsc_min |
악용 가능성: 해당 취약점은 AV:L(Local) · AC:L(Low) · PR:L(Low) · UI:N(None) 로 평가되었으므로, 공격자는 시스템에 로컬 계정만 보유하면 별도의 사용자 상호작용 없이도 낮은 복잡도로 이용할 수 있습니다. 실제로는 net/sched 서브시스템을 통해 HFSC 스케줄러를 구성하는 tc 명령이나 netlink 인터페이스의 파라미터(m1, slope)에 비정상적으로 큰 값을 입력하면, rtsc_min() 내부에서 32‑bit 변수 dsm가 0 으로 트렁케이트되어 divide‑by‑zero 오프스가 발생합니다. 공격 표면은 /sys/fs/cgroup/net_cls, /proc/sys/net/core/somaxconn 등과 직접 연결되는 커널 네트워크 스케줄링 API와, 해당 API를 호출하는 사용자 공간 유틸리티(예: tc)가 노출되는 엔드포인트입니다. EPSS 값이 0.0012 로 매우 낮고 KEV 목록에 포함되지 않은 점은 현재까지 실전에서 악용된 사례가 거의 없으며, 따라서 위험도는 이론적인 심각도와 달리 실제 위협으로 전환되기 어려운 hard 등급을 정당화합니다. 그러나 공격자는 로컬 사용자라 하더라도 CAP_NET_ADMIN 권한이 요구되는 상황(예: setuid‑root 프로그램이나 컨테이너 탈출 후)에서 이 조건을 만족시키면 바로 커널 패닉을 유발해 서비스 거부(DoS)를 달성할 수 있습니다. 따라서 공격 흐름은 ① 로컬 계정 확보 → ② 네트워크 스케줄링 파라
💥 영향 분석
- Denial of Service: 커널 패닉으로 시스템 전체가 멈추고 재부팅 필요.
- 멀티‑테넌시 DoS: 공유된 HFSC 구조체 오염으로 동일 호스트 내 다른 cgroup/컨테이너의 네트워크 트래픽도 중단.
- 기밀성·무결성 손상은 보고되지 않음.
🔗 관련 취약점·체이닝
- 추정:
CAP_NET_ADMIN권한을 얻기 위한 로컬 권한 상승(CWE‑269)과 결합하면 비특권 사용자가도 DoS를 실행할 수 있다. - 추정: 다른 네트워크 스케줄러(
sch_fq,sch_htb)에서 발생하는 정수 오버플로우(CWE‑190)와 연계해 동일 netlink 흐름을 이용하면 메모리 손상·코드 실행(RCE)으로 확장 가능하다. - 추정: 커널 로그 자동 재시작 스크립트가 취약하게 구성돼 있으면, OOPS 후 시스템이 반복적으로 재부팅되는 상태(boot‑loop)로 이어져 장기적인 서비스 거부를 유발할 수 있다.
🔎 탐지
dmesg·/var/log/kern.log에 “Oops: divide error”와 함께 RIP=rtsc_min(net/sched/sch_hfsc.c:601) 로그가 나타나는지 실시간 모니터링.- Audit 또는 eBPF 로
tc/netlink 명령이 HFSC qdisc에 비정상적인rate/ceil값(> 2³²)을 전달하는 이벤트를 캡처. - SELinux/AppArmor 정책 위반 로그에서
CAP_NET_ADMIN없이netlink를 통한 큐 디시플린 생성 시도 감지.
🛡️ 완화 방안
- 패치 적용: 커널 업데이트(
dsm을u64로 확대하고div64_u64()사용) 를 즉시 배포·적용. - 임시 차단: HFSC 스케줄러 비활성화 (
sysctl -w net_sched_hfsc_enable=0혹은 커널 컴파일 시CONFIG_NET_SCHED_HFSC=n). - 권한 최소화: 일반 사용자에게
CAP_NET_ADMIN부여를 금지하고, 필요 시 제한된sudo tc …명령만 허용. - 감시 강화: 위 탐지 지표를 포함한 실시간 로그 수집·알림 체계 구축 및 OOPS 발생 시 자동 재부팅 방지를 위한 시스템 서비스 설정 검토.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=5.5 · non-KEV · EPSS=0.0012 · exploit=hard · in_scope=None