[공격] 분석 — CVE-2026-31422
CVE-2026-31422 is a local null‑pointer dereference in the Linux kernel’s cls_flow scheduler that can be triggered by an unprivileged user to cause a kernel panic (DoS) and must be mitigated by patching or disabling the affected functionality.
📋 요약
- 심각도 medium · CVSS 5.5 · EPSS 0.00122 · 악용난이도 hard
🔍 공격 기법
-
트리거 조건: 로컬에서
tc명령 혹은 netlink을 이용해cls_flow필터를 생성할 때, 공유 블록(shared block)에 대해 완전한 baseclass 정보를 제공하지 않으면flow_change()가block->q가 NULL인 상태에서q->handle에 접근한다. -
공격 단계
- 정찰 – 대상 시스템이 영향을 받는 커널 버전(4.15‑6.19.x)인지 확인 (예:
/proc/version). - 초기 접근 – 일반 사용자 권한(Low privilege, PR:L)으로
tc filter add dev <if> parent <classid> protocol ip pref 1 u32 match ... flow와 같이 공유 블록을 지정한다(특수 옵션 없이). - 실행·권한 획득 – 커널 내부에서 NULL‑ptr deref가 발생, KASAN 로그와 함께 시스템이 패닉(panic) → 서비스 거부. 현재 공개된 증거는 DoS에 국한되며, 추가적인 메모리 손상(예: 권한 상승)은 **추정:**이다.
- 지속·영향 – 커널 재부팅 전까지 서비스 중단; 반복 시 시스템 가용성 심각 저하.
- 정찰 – 대상 시스템이 영향을 받는 커널 버전(4.15‑6.19.x)인지 확인 (예:
-
공격 표면
- Netlink 메시지
RTM_NEWTFILTER(net/sched/cls_api.c) tc명령 파라미터:flow_change()호출 경로에 영향을 주는shared block플래그와 baseclass 지정 여부
- Netlink 메시지
-
CVSS 벡터 ↔ 실제 조건
- AV:L → 로컬 프로세스만 필요, 원격 공격 불가.
- AC:L → 복잡도 낮음, 특별한 전처리 없이 바로 시도 가능.
- PR:L → 일반 사용자 권한으로 충분 (CAP_NET_ADMIN이 없어도 일부 상황에서 트리거 가능).
- UI:N → 사용자 상호작용 필요 없음, 스크립트 자동 실행 가능.
악용 가능성: 이 취약은 로컬 환경에서 rtnetlink 소켓을 통해 TC(traffic‑control) 필터를 생성할 때, 공유 블록에 대해 q->handle이 NULL인 상태로 진입하도록 조작하면 발생합니다. CVSS 벡터 AV:L/AC:L/PR:L/UI:N은 “공격자는 로컬에 존재하고, 복잡한 사전 준비 없이 낮은 권한(예: 컨테이너 내부에서 CAP_NET_ADMIN을 가진 사용자)만으로도 트리거 가능한” 상황을 의미합니다. 실제 공격 표면은 netlink 메시지의 TCA_OPTIONS 파라미터이며, 해당 필드에 비정상적인 값(예: baseclass가 지정되지 않은 흐름 필터)을 넣으면 flow_change()에서 NULL 포인터를 역참조해 커널 패닉을 일으킵니다. 이러한 조건은 일반 사용자 계정으로는 접근이 제한될 수 있지만, 권한이 낮아도 네트워크 네임스페이스나 컨테이너 환경에서 CAP_NET_ADMIN 권한만 확보하면 충분히 재현 가능합니다. EPSS 값 0.00122 와 KEV에 등재되지 않은 점은 현재까지 실제 악성 코드가 이 결함을 이용해 공격을 수행한 사례가 거의 없으며, 위협이 이론적인 수준에 머물러 있음을 보여줍니다. 따라서 난이도는 “hard”로 평가되지만
💥 영향 분석
- 성공 시 커널 패닉을 일으켜 시스템 전체가 다운(DoS)한다.
- 현재 알려진 바에 따르면 메모리 손상이나 권한 상승은 확인되지 않았으며, 추정: 공격자가 레이스 컨디션을 조작해 임의 코드 실행을 시도할 가능성은 존재하지만 증거 부족.
🔗 관련 취약점·체이닝
- 동일 모듈(
cls_flow)에서 발생하는 다른 NULL‑ptr deref(예: 과거CVE‑2022‑XXXX등)와 결합하면 연속적인 커널 크래시를 유발할 수 있다(추정:). - 일반적인 로컬 권한 상승 체인 패턴:
- 정보 노출 – KASAN 로그를 통해 메모리 레이아웃 파악.
- NULL‑ptr deref → 커널 스택/힙 손상 →
write‑what‑where가능성(다른 LPE 취약점과 결합).
- 현재 공개된 CVE 번호로는 직접적인 체인 사례가 없으며, 위 패턴은 일반적인 null‑pointer → memory corruption 유형(CWE‑476)에서 파생된다.
🔎 탐지
dmesg/kernel.log에 “KASAN: null-ptr-deref in range … flow_change (net/sched/cls_flow.c:508)” 문자열이 나타날 경우.auditdnetlink 이벤트(type=NETLINK, msg_type=RTM_NEWTFILTER)와 함께 커널 OOPS 로그가 기록되면 경보.- 시스템 모니터링 도구(podman, syslog)에서 “panic: kernel NULL pointer dereference” 메시지 감시.
🛡️ 완화 방안
- 즉시: 영향을 받는 커널 버전을 최신 패치(4.15‑6.19.x 최신 릴리즈 이상)로 업데이트한다.
- 임시:
CONFIG_NET_SCH_CLS_FLOW를 커널 부팅 시 옵션으로 비활성화하거나,/proc/sys/net/sched/cls_flow_enabled=0(가능한 경우) 로 설정해 해당 모듈 사용을 차단한다. - 운영: 위 탐지 지표를 SIEM·auditd와 연동하여 실시간 알림을 구축하고, 비정상적인
tc filter add시도 로그를 제한한다.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=5.5 · non-KEV · EPSS=0.00122 · exploit=hard · in_scope=None