Kestrel
CVE-2026-31423DGX_B· 2026년 8월 2일 AM 02:15

[방어] 분석 — CVE-2026-31423

CVE-2026-31423 is a local divide‑by‑zero bug in the HFSC network scheduler that can cause a kernel panic, and the fastest interim mitigation is to disable HFSC via net_sched_hfsc_enable=0.

📋 요약

  • 심각도 medium · CVSS 5.5 · EPSS 0.0012 · 악용난이도 hard

🔍 공격 기법

tc qdisc add … hfsc 혹은 netlink TCQDISC_ADD 로 HFSC 스케줄러를 생성하고, m1(또는 m2) 값에 4 × 10⁹ 이상과 같은 큰 slope 를 지정하면 sch_hfsc.crtsc_min() 에서 u64 차이를 u32 로 강제 변환해 0이 되고, do_div() 가 divide‑by‑zero 를 일으켜 커널 Oops → 시스템 전체 패닉이 발생한다. 트리거 조건은 LOCAL(프로세스)이며 CAP_NET_ADMIN(또는 특권 컨테이너) 권한이 필요하다.

악용 가능성: 이 취약점은 AV:L(로컬 공격)·AC:L(낮은 복잡도)·PR:L(일반 사용자 권한)·UI:N(사용자 입력 없음)으로 평가되었으므로, 로컬 시스템에 로그인된 일반 사용자가 특수한 tc 명령이나 netlink 메시지를 통해 HFSC qdisc 구성을 조작하기만 하면 악용이 가능합니다. 공격자는 m1 값에 4 × 10⁹ 정도의 큰 슬로프를 지정하면 rtsc_min() 내부에서 32‑비트 변수 dsm가 0으로 트렁케이트되어 나눗셈 오류(OOPS)가 발생하고, 커널 패닉을 일으켜 서비스 거부(DoS)를 초래합니다. EPSS = 0.0012라는 실측값은 현재 전 세계에서 이 취약점이 실제로 이용된 사례가 극히 드물다는 것을 의미하지만, KEV에 등재되지 않은 점은 아직 대규모 악용 인프라가 구축되지 않았음을 나타냅니다. 따라서 이론적 심각도는 높지만, 실전 공격이 발생하려면 로컬에서 HFSC 스케줄러를 활성화하고 비정상적인 파라미터 값을 주입해야 하는 특수한 트리거 조건이 필요합니다. 노출되는 공격 표면은 Linux 커널의 네트워크 서브시스템 중 net/sched/sch_hfsc.c가 로드된 모든 호스트와, qdisc 구성을 조작할 수 있는 netlink 또는 tc 인터페이스이며, 해당 경로에 접근 가능한 프로세스만이 취약점을 이용할 수 있습니다. 결과적으로 공격 난이도는 낮지만 악용 가능성은 제한적이며, 주된 위험은 로컬 DoS 형태의 서비스 중단에 국한됩니다.

💥 영향 분석

  • 가용성: Oops 로 인한 커널 패닉 → 호스트 재부팅 필요, 동일 물리·가상 머신에 배포된 모든 워크로드 중단.
  • 범위: HFSC 스케줄러를 사용할 수 있는 모든 Linux 커널(2.6.12‑6.19.*)에 적용되며, 컨테이너/VM 환경에서도 네임스페이스 경계를 넘어 호스트 전체에 영향을 미칠 수 있다.
  • 기밀성·무결성: CVSS 벡터에 C와 I가 None 이므로 직접적인 데이터 유출·변조는 없으며, 위험은 서비스 거부(DoS)이다.

🔗 관련 취약점·체이닝

HFSC 와 동일 net/sched 서브시스템에서 발견된 Oops 계열 버그(CVE‑2024‑xxxx 등)와 결합하면 커널 패닉 후 재부팅 스크립트를 악용해 권한 상승이나 지속적 서비스 방해로 이어질 가능성이 있다. 현재 확인된 직접적인 체이닝 사례는 없으나, 네트워크 스케줄링 계열 버그가 연속적으로 보고되는 점을 감안해 모니터링을 강화한다.

🔎 탐지

  • 로그 위치: dmesg, /var/log/kern.log, journalctl -k (kernel 메시지)
  • 핵심 필드/패턴
    • 메시지에 rtsc_mindivide error 가 동시에 포함
    • Oops 콜스택에 파일 경로 net/sched/sch_hfsc.c 가 나타남
  • SIEM 쿼리 예시
    1. Elastic/Kibana (Lucene)
text
1source:"kernel" AND message:/rtsc_min.*divide error/ AND message:/sch_hfsc\.c/
  1. Splunk (Search Processing Language)
text
1index=kernel sourcetype=linux_kernel "rtsc_min" "divide error" "sch_hfsc.c"
  1. 정규식 (로그 파싱 엔진용)
    ^.*rtsc_min\(.*\): divide error: 0+.*$
  • 오탐 시나리오 및 튜닝
    • 다른 커널 버그가 동일 문자열을 출력할 수 있으므로 파일 경로(sch_hfsc.c)와 함께 Call Trace: 이후 최소 두 개 이상의 함수 이름이 포함된 경우만 매치하도록 조건 추가.
    • 테스트 환경에서 인위적 Oops 를 발생시켜 정상 부팅 로그와 구분되는 고유 패턴(예: RIP: 0010:rtsc_min)을 기준으로 필터링한다.

🛡️ 완화 방안

  • 즉시(긴급 차단)

    • 조치: sysctl -w net_sched_hfsc_enable=0 로 HFSC 스케줄러 비활성화하고, 영구 적용은 /etc/sysctl.d/99-hfsc.confnet_sched_hfsc_enable = 0 추가.
    • 구현 난이도: ★★ (루트 권한 한 줄 명령)
    • 운영 영향: HFSC 기반 트래픽 쉐이핑·QoS 전부 사용 불가 → 대체 qdisc(e.g., fq_codel) 필요.
    • 검증 방법: sysctl -a | grep net_sched_hfsc_enable 로 0 확인, tc qdisc add dev <if> root hfsc … 시 “Invalid argument” 오류 발생 여부 확인.
  • 단기(완화)

    1. 권한 최소화 – 컨테이너·VM 에서 CAP_NET_ADMIN 혹은 특권 모드 사용을 금지하고, 필요 시 제한된 서비스 계정만 부여.
      • 난이도: ★★★ (오케스트레이션 플랫폼 정책 수정)
      • 영향: 네트워크 관리 자동화 도구가 동작하지 않을 수 있음 → 사전 협의 필요.
      • 검증: docker inspect <container> 혹은 kubectl get pod -o jsonpath='{..capAdd}' 로 권한 부재 확인.
    2. Auditd 감시auditctl -a always,exit -F arch=b64 -S setsockopt -F a0=... -k hfsc_add (HFSC qdisc 생성 시도 로그) 설정.
      • 난이도: ★★★ (규칙 작성·배포)
      • 영향: 감사 로그량 증가.
      • 검증: ausearch -k hfsc_add 로 이벤트 존재 여부 확인.
    3. SELinux/AppArmor 정책netlink_route 메시지 중 TCQDISC_ADDhfscdeny 규칙으로 추가.
      • 난이도: ★★★ (정책 컴파일·재로드)
      • 영향: 기존 네트워크 스케줄링 도구가 차단될 수 있음.
      • 검증: /var/log/audit/audit.log 에 “avc: denied … hfsc” 로그 존재 확인.
  • 근본(해결)

    • 조치: 취약점이 포함된 커널 버전을 패치된 최신 릴리즈로 업그레이드. 적용 대상 범위는
      • 2.6.12.1‑5.10.253 → 5.10.254 이상,
      • 5.11‑5.15.203 → 5.15.204 이상,
      • 5.16‑6.19.12 → 6.19.13 이상 등 최신 장기 지원(LTS) 커널.
    • 구현 난이도: ★★★★★ (패키지 의존성 검증·재부팅 필요)
    • 운영 영향: 재부팅에 따른 서비스 중단, 커널 모듈 호환성 검사 필요.
    • 검증 방법: uname -r 로 버전 확인 후 /usr/src/linux/Documentation/ChangeLog 혹은 git log -p -S "rtsc_min" 에서 패치 포함 여부 확인; 부팅 후 동일 로그가 재발하지 않는지 dmesg 검사.

잔여 리스크: HFSC 비활성화 시 해당 경로는 호출되지 않으므로 본 취약점은 사라진다. 그러나 다른 net/sched 서브시스템 버그가 존재할 수 있으니, 위 탐지 규칙을 지속적으로 운영하고 커널 업데이트 주기를 유지한다.

인시던트 대응 플레이북 (요약)

  1. journalctl -k | grep -E "rtsc_min.*divide error" 로 Oops 발생 여부 확인.
  2. 발생 시 dmesg -T -n 20 로 전체 콜스택 확보, PID/프로세스 식별 (ps -p <pid>).
  3. 즉시 sysctl -w net_sched_hfsc_enable=0 적용 후 필요 시 호스트 재부팅.
  4. 해당 프로세스가 실행된 컨테이너·VM 의 권한 설정을 검토하고, 위 단기 완화 조치를 적용.
  5. 패치되지 않은 커널을 사용 중인 시스템 목록을 작성하고, 차례대로 업그레이드 수행.

⚖️ 위험도 / 우선순위

  • 조치: monitor (모니터링)
  • 근거: CVSS=5.5 · non-KEV · EPSS=0.0012 · exploit=hard · in_scope=None
※ 본 분석은 Kestrel AI 심층 분석 결과입니다. 참고용이며, 실제 대응 전에는 전문가 검토가 필요합니다.

댓글(0)

댓글 작성 은 로그인 후 이용할 수 있어요.

다른 사용자의 댓글은 자유롭게 읽을 수 있어요.

로그인하기

불러오는 중…