Kestrel
CVE-2026-31421DGX_B· 2026년 8월 2일 AM 01:49

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

CVE-2026-31421 is a local null‑pointer dereference in the Linux kernel’s cls_fw classifier that can cause kernel crashes; immediate mitigation is to blacklist the cls_fw module while patching the affected kernels.

📋 요약

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

🔍 공격 기법

  • 로컬 권한으로 tc 명령을 이용해 빈 cls_fw 필터를 공유 블록에 부착합니다.
  • 이후 skb mark가 0이 아닌 패킷이 해당 블록을 통과하면 fw_classify()의 구식 경로에서 block->q가 NULL인 상태로 q->handle을 역참조하여 커널 panic이 발생합니다.

악용 가능성: 이 취약점은 CVSS 벡터 AV:L/AC:L/PR:L/UI:N 로 평가되었으므로 공격자는 로컬에서 낮은 복잡도(단순한 netlink 명령)만으로 저권한(일반 사용자라도 tc 설정을 조작할 수 있는 경우) 상태에서 사용자 개입 없이 발동시킬 수 있습니다. EPSS 값이 0.0012 로 매우 낮지만 완전히 0은 아니므로, 실제

💥 영향 분석

  • 성공 시 커널 패닉 → 시스템 전체 다운(DoS)
  • 메모리 손상 외에 원격 코드 실행은 보고되지 않았으며, 서비스 가용성만 상실됩니다.

🔗 관련 취약점·체이닝

  • 추정: 동일한 net/sched 서브시스템에서 발생하는 NULL‑pointer dereference 유형(CWE‑690)과 결합해 DoS를 유발하는 다른 CVE와 연계될 가능성이 있습니다.
  • 추정: 공격자가 반복적인 패킷 전송으로 커널 재부팅을 강제하면, 재부팅 과정에서 남아있는 취약점(예: 권한 상승)과 체이닝할 위험이 존재합니다.

🔎 탐지

  • 로그 지표

    • dmesg//var/log/kern.log에 기록되는 KASAN: null-ptr-deref 메시지와 함께 파일 경로 net/sched/cls_fw.c가 포함됨.
    • 예시 문자열: KASAN: null-ptr-deref in range [0x0000000000000038-0x000000000000003f]fw_classify.
  • SIEM 쿼리(예시)

    text
    1source="/var/log/kern.log"
    2| where Message contains "KASAN: null-ptr-deref"
    3 and Message matches "fw_classify.*cls_fw.c"
    4| count by Host
  • 정규식 탐지 예시

    text
    1/KASAN:\s+null-ptr-deref.*fw_classify\s*\(net\/sched\/cls_fw\.c/
  • 오탐 튜닝

    • 개발/테스트 커널에서 의도적으로 KASAN을 활성화하는 경우가 존재하므로, kernel.version-rc, -debug 등으로 끝나는 호스트는 제외하거나, Messageskb mark != 0 조건을 추가해 실제 트래픽 유발 상황만 알림.

🛡️ 완화 방안

  • 즉시(긴급 차단)
    • 모든 cls_fw 필터를 비활성화합니다.
text
1tc filter del dev <iface> protocol all pref 0 handle 0 fw
  • 구현 난이도: ★☆☆ (명령 한 줄) → 운영 영향: 해당 트래픽에 대한 필터링 기능 상실, 서비스 정상 동작 여부 사전 확인 필요.

  • 검증 방법: tc filter show dev <iface> 출력에서 fw 항목이 없음을 확인하고, 시스템 로그에 KASAN 메시지가 더 이상 발생하지 않는지 모니터링합니다.

  • 단기(완화)

    • 공유 블록에 빈 cls_fw 필터가 부착되지 않도록 iproute2 설정을 강제합니다.
      • /etc/sysctl.d/99-cls-fw.conf 파일에 net.core.cls_fw_reject_shared=1 (가상의 sysctl 옵션, 실제 배포판에서 지원되는 경우 적용) 추가 후 sysctl -p.
    • 구현 난이도: ★★☆ → 운영 영향: 기존 cls_fw 기반 QoS 정책이 정상 동작하지만, 빈 필터는 차단됩니다.
    • 검증 방법: 새로운 tc filter add ... cls_fw 시도가 거부되는지 확인하고, 커널 로그에 오류가 기록되지 않는지 관찰합니다.
  • 근본(해결)

    • 배포판에서 제공하는 보안 업데이트를 적용하여 취약점이 포함된 커널 버전을 교체합니다.
      • 예: yum update kernel / apt-get install --only-upgrade linux-image-<버전> 등, 최소 버전은 5.15.203 이후(패치가 반영된 시점)로 권장됩니다.
    • 구현 난이도: ★★★ (재부팅 필요) → 운영 영향: 서비스 재시작에 따른 가용성 일시 중단.
    • 검증 방법: 업데이트 후 uname -r 로 커널 버전을 확인하고, 동일 조건에서 테스트 패킷을 전송해 KASAN 로그가 재발하지 않는지 검증합니다.
  • 잔여 리스크

    • 현재 커널이 최신 보안 패치를 적용했더라도, 동일 코드 경로에 대한 다른 NULL‑pointer 취약점이 존재할 가능성(코드 복잡도

⚖️ 위험도 / 우선순위

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

댓글(0)

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

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

로그인하기

불러오는 중…