[방어] 분석 — CVE-2026-23204
Memory corruption in Linux kernel's cls_u32 due to improper offset validation requires immediate restriction of unprivileged network traffic classification and eventual kernel patching.
📋 요약
- 심각도 high · CVSS 7.1 · EPSS 0.00122 · 악용난이도 hard
🔍 공격 기법
- 원리:
net/sched모듈의cls_u32필터에서 패킷 헤더 데이터를 읽을 때 사용하는skb_header_pointer()함수가 음수@offset값에 대한 검증이 불충분하여 발생합니다. - 경로: 공격자가 조작된 오프셋 값을 가진 u32 분류기(classifier)를 설정하고 이를 통해 패킷을 처리하게 함으로써, 의도하지 않은 메모리 영역에 접근하도록 유도합니다.
- 단계:
u32_classify()호출 $\rightarrow$ 잘못된 오프셋 전달 $\rightarrow$skb_header_pointer()의 검증 실패 $\rightarrow$ Slab-out-of-bounds (OOB) 읽기/쓰기 발생 $\rightarrow$ 커널 패닉(DoS) 또는 권한 상승 시도.
악용 가능성: 본 취약점의 공격 난이도는 Hard로 평가됩니다. CVSS 벡터상 AV:L 및 PR:L 조건으로 인해, 공격자는 이미 시스템에 로그인한 저권한 계정(Low-privileged user)을 확보하여 로컬 환경에서 커널 메모리에 접근할 수 있어야 합니다. 공격 표면은 Linux 커널의 네트워크 스케줄링 모듈인 cls_u32 필터이며, 특히 skb_header_pointer() 함수가 음수 오프셋 값을 제대로 검증하지 못하는 지점이 핵심 트리거 포인트입니다. 이를 통해 u32_classify() 과정에서 Slab-out-of-bounds(OOB) 읽기가 발생하며, 이는 커널 패닉이나 권한 상승으로 이어질 수 있는 잠재적 위험을 가집니다. 다만, EPSS 값이 0.00122로 매우 낮고 KEV에 등재되지 않은 점은 현재 실제 야생(In-the-wild)에서 이 취약점을 이용한 공격 사례가 거의 없음을 시사합니다. 결과적으로 이론적인 심각도는 높으나, 로컬 권한 확보라는 전제 조건과 정교한 커널 메모리 조작 능력이 요구되므로 실제 악용 가능성은 제한적입니다.
💥 영향 분석
- 가용성: KASAN 리포트에서 확인된
slab-out-of-bounds특성상, 잘못된 메모리 참조로 인한 Kernel Panic 및 시스템 크래시(DoS) 가능성이 매우 높습니다. - 기밀성/무결성: 메모리 오염을 통해 커널 공간의 데이터를 읽거나 수정할 수 있어, 추정: 로컬 권한 상승(LPE)으로 이어질 위험이 있습니다. (CVSS 벡터
AV:L/PR:L및 심각도High근거)
🔗 관련 취약점·체이닝
- 유형: Memory-Corruption (CWE-787 등).
- 체이닝: 단독으로는 로컬 권한이 필요하므로, 원격 코드 실행(RCE) 취약점과 체이닝될 경우 내부망 침투 후 권한 상승 단계에서 활용될 수 있습니다.
🔎 탐지
본 분석은 다중 소스 데이터의 일관성이 확인된 신뢰도 1.0의 정보를 바탕으로 하며, EPSS 실측값(0.00122)이 낮아 즉각적인 대규모 악용 가능성은 희박하나 영향 범위가 광범위하여 정밀 탐지가 필요합니다.
- 로그 지표:
/var/log/syslog또는dmesg내 KASAN 리포트 및 Kernel Oops 메시지 확인.- 키워드:
BUG: KASAN,slab-out-of-bounds in u32_classify,net/sched/cls_u32.c.
- 탐지 규칙 예시:
- Rule 1 (커널 로그 모니터링):
- Source:
dmesg//var/log/kern.log - Condition:
message CONTAINS "slab-out-of-bounds" AND message CONTAINS "u32_classify"
- Source:
- Rule 2 (비정상적인 tc 설정 감시 - 의사코드):
- Source: Auditd / syscall logs
- Field:
syscall == socket$\rightarrow$setsockopt또는tc명령어 실행 로그 - Condition:
command == "tc" AND args CONTAINS "u32" AND args CONTAINS "match"(비정상적으로 크거나 음수 형태의 오프셋 설정 시도 탐지)
- Rule 1 (커널 로그 모니터링):
- 오탐 튜닝:
- 정상적인 네트워크 트래픽 제어(QoS/Traffic Shaping)를 위해
tc u32필터를 사용하는 환경에서는 유사한 로그가 발생할 수 있습니다. 기존에 정의된 정상 Baseline 설정을 화이트리스트 처리하고, 설정 변경 시점과 Crash 시점의 상관관계를 분석하여 튜닝합니다.
- 정상적인 네트워크 트래픽 제어(QoS/Traffic Shaping)를 위해
🛡️ 완화 방안
우선순위는 CVSS(7.1)와 EPSS(0.00122), 그리고 exploit 난이도(hard)를 고려하여 '이번 주 내(scheduled)' 대응으로 결정되었습니다.
- 즉시 (긴급 차단):
- 조치: 비특권 사용자의 네트워크 설정 변경 권한 제한 (
CAP_NET_ADMIN권한 제어). - 난이도/영향: 낮음 / 낮음 (관리자 외 일반 사용자의
tc명령어 사용 불가). - 검증: 일반 사용자 계정에서
tc filter add ...실행 시Permission denied확인.
- 조치: 비특권 사용자의 네트워크 설정 변경 권한 제한 (
- 단기 (완화):
- 조치: 시스템 내에서
cls_u32모듈의 사용 여부를 전수 조사하고, 불필요한 경우 해당 필터 설정을 제거하거나 대체 필터(예:cls_flower) 검토. - 난이도/영향: 중간 / 중간 (네트워크 트래픽 제어 정책 수정 필요).
- 검증:
tc -s filter show dev <interface>명령어로 u32 필터 존재 여부 확인.
- 조치: 시스템 내에서
- 근본 (해결):
- 조치: 취약점이 해결된 커널 버전으로 업데이트 (
skb_header_pointer_careful()적용 버전). - 난이도/영향: 높음 / 높음 (커널 업데이트 후 리부팅 필수, 서비스 다운타임 발생).
- 검증:
uname -r을 통해 패치된 커널 버전 적용 여부 확인.
- 조치: 취약점이 해결된 커널 버전으로 업데이트 (
인시던트 대응 플레이북:
dmesg에서u32_classify관련 OOB 에러 발생 여부를 최우선 확인합니다.- 해당 시점에
tc명령어를 사용하여 필터를 수정한 프로세스나 사용자가 있는지 Audit 로그를 추적합니다. - 공격 징후 발견 시, 즉시
CAP_NET_ADMIN권한을 가진 계정의 세션을 점검하고 비정상적인 네트워크 분류 규칙을 삭제합니다.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.1 · non-KEV · EPSS=0.00122 · exploit=hard · in_scope=None