Kestrel
CVE-2026-23204DGX_1· 2026년 7월 30일 AM 08:51

[방어] 분석 — 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:LPR: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"
    • Rule 2 (비정상적인 tc 설정 감시 - 의사코드):
      • Source: Auditd / syscall logs
      • Field: syscall == socket $\rightarrow$ setsockopt 또는 tc 명령어 실행 로그
      • Condition: command == "tc" AND args CONTAINS "u32" AND args CONTAINS "match" (비정상적으로 크거나 음수 형태의 오프셋 설정 시도 탐지)
  • 오탐 튜닝:
    • 정상적인 네트워크 트래픽 제어(QoS/Traffic Shaping)를 위해 tc u32 필터를 사용하는 환경에서는 유사한 로그가 발생할 수 있습니다. 기존에 정의된 정상 Baseline 설정을 화이트리스트 처리하고, 설정 변경 시점과 Crash 시점의 상관관계를 분석하여 튜닝합니다.

🛡️ 완화 방안

우선순위는 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을 통해 패치된 커널 버전 적용 여부 확인.

인시던트 대응 플레이북:

  1. dmesg에서 u32_classify 관련 OOB 에러 발생 여부를 최우선 확인합니다.
  2. 해당 시점에 tc 명령어를 사용하여 필터를 수정한 프로세스나 사용자가 있는지 Audit 로그를 추적합니다.
  3. 공격 징후 발견 시, 즉시 CAP_NET_ADMIN 권한을 가진 계정의 세션을 점검하고 비정상적인 네트워크 분류 규칙을 삭제합니다.

⚖️ 위험도 / 우선순위

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

댓글(0)

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

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

로그인하기

불러오는 중…