[방어] 분석 — CVE-2026-31422
CVE-2026-31422 is a local null‑pointer dereference in the Linux kernel’s cls_flow scheduler that can cause immediate system panic (DoS), and the fastest interim mitigation is to block creation of flow filters on shared blocks via module blacklisting or SELinux/AppArmor policies.
📋 요약
- 심각도 medium · CVSS 5.5 · EPSS 0.00122 · 악용난이도 hard
🔍 공격 기법
flow_change()함수가 공유 블록(tcf_block_shared())에 대해block->q가 NULL 인 상태에서 호출될 때 발생합니다.- 공격자는
tc filter add … cls flow와 같이 완전한 baseclass 없이 필터를 생성하면, 커널이q->handle를 역참조하면서 NULL deref가 일어나 시스템이 OOPS/패닉을 일으킵니다. - 필요 권한:
CAP_NET_ADMIN(보통 root 또는 sudo 권한).
악용 가능성: 이 취약점은 CVSS 벡터 AV:L/AC:L/PR:L/UI:N 로, 공격자는 로컬 시스템에 직접 접근해야 하며 복잡도는 낮고 권한 요구가 “로컬 특권”(CAP_NET_ADMIN 등) 수준으로 제한됩니다. UI:N 은 사용자 개입이 필요 없으므로 자동화된 악용이 가능하지만, 실제 이용을 위해서는 netlink 인터페이스를 통해 공유 블록에 대한 흐름 필터를 생성해야 하는 전제조건이 존재합니다. 공유 블록은 tcf_block_shared() 로 식별되며, 여기서 block->q 가 NULL 인 경우에만 Null‑dereference가 발생하므로, 공격자는 반드시 해당 경로의 파라미터(예: rtnetlink 메시지의 TC_NEW_TFILTER)를 조작해야 합니다. EPSS 값 0.00122 은 현재까지 관측된 실제 악용 사례가 매우 드물지만, 완전히 배제되지 않으며, KEV 에 등재되지 않은 점은 아직 대규모 공격이 보고되지 않았다는 의미입니다. 따라서 이 취약점의 난이도는 “hard” 로 평가되며, 이는 로컬 특권을 가진 사용자가 정확히 조건을 맞춘 netlink 요청을 전송해야만 성공할 수 있기 때문입니다. 공격 표면은 커널 네트워킹 스케줄러 서브시스템에 노출된 rtnetlink 소켓과 해당 API 호출, 특히 공유 블록을 사용하는 흐름 필터 생성 경로에 국한됩니다.
💥 영향 분석
- Null‑pointer dereference → 커널 OOPS → 전체 시스템 다운(DoS) 발생.
- CVSS 벡터에 따라 기밀성·무결성은 영향을 받지 않으며, 가용성만 손상됩니다.
- 영향을 받는 커널 버전: 4.15 ~ 6.19.12 전반에 걸쳐 있으므로, 해당 범위의 배포판에서 광범위하게 적용될 수 있습니다.
🔗 관련 취약점·체이닝
- 추정: 동일한 net/sched 경로에서 발생하는 NULL dereference 및 use‑after‑free 유형(CWE‑476, CWE‑416) 취약점과 연계될 가능성이 있습니다.
- 추정: 공격자는 이 DoS를 다른 로컬 권한 상승(예: CVE‑2024‑xxxx와 같은 CAP_NET_ADMIN 오용)과 결합해 시스템 장악을 시도할 수 있으나, 현재는 별도의 증거가 없습니다.
🔎 탐지
로그 지표
dmesg·/var/log/kern.log에서KASAN: null-ptr-deref와RIP: flow_change문자열이 포함된 레코드.- Netlink 메시지 로그(
rtnetlink_rcv_msg)에TC_NEW_TFILTER가 기록되는 경우.
SIEM 쿼리 예시 (Elastic Kibana)
1event.module:"kernel" and message:*"KASAN: null-ptr-deref"* 2 3## 🛡️ 완화 방안 4| 단계 | 내용 | 구현 난이도 | 운영 영향 | 검증 방법 | 5|------|------|------------|-----------|----------| 6| **즉시(긴급 차단)** | `tc` 바이너리 실행을 비루트 사용자에게 제한 (AppArmor/SELinux 프로파일 또는 `/etc/sudoers` 에서 `tc` 명령어 제거). | ★★☆☆☆ | 기존 네트워크 트래픽에 영향 없음, 관리 편의성 저하(특정 사용자만 사용 가능). | `auditd` 로 `tc` 실행 시도 로그가 차단되는지 확인. | 7| **단기( 8 9## ⚖️ 위험도 / 우선순위10- 조치: monitor (모니터링)11- 근거: CVSS=5.5 · non-KEV · EPSS=0.00122 · exploit=hard · in_scope=None