[방어] 분석 — 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 쿼리(예시)
text1source="/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 -
정규식 탐지 예시
text1/KASAN:\s+null-ptr-deref.*fw_classify\s*\(net\/sched\/cls_fw\.c/ -
오탐 튜닝
- 개발/테스트 커널에서 의도적으로 KASAN을 활성화하는 경우가 존재하므로,
kernel.version이-rc,-debug등으로 끝나는 호스트는 제외하거나,Message에skb mark != 0조건을 추가해 실제 트래픽 유발 상황만 알림.
- 개발/테스트 커널에서 의도적으로 KASAN을 활성화하는 경우가 존재하므로,
🛡️ 완화 방안
- 즉시(긴급 차단)
- 모든
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