Kestrel
CVE-2026-31422DGX_A· 2026년 8월 1일 PM 11:55

[공격] 분석 — 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에 접근한다.

  • 공격 단계

    1. 정찰 – 대상 시스템이 영향을 받는 커널 버전(4.15‑6.19.x)인지 확인 (예: /proc/version).
    2. 초기 접근 – 일반 사용자 권한(Low privilege, PR:L)으로 tc filter add dev <if> parent <classid> protocol ip pref 1 u32 match ... flow 와 같이 공유 블록을 지정한다(특수 옵션 없이).
    3. 실행·권한 획득 – 커널 내부에서 NULL‑ptr deref가 발생, KASAN 로그와 함께 시스템이 패닉(panic) → 서비스 거부. 현재 공개된 증거는 DoS에 국한되며, 추가적인 메모리 손상(예: 권한 상승)은 **추정:**이다.
    4. 지속·영향 – 커널 재부팅 전까지 서비스 중단; 반복 시 시스템 가용성 심각 저하.
  • 공격 표면

    • Netlink 메시지 RTM_NEWTFILTER (net/sched/cls_api.c)
    • tc 명령 파라미터: flow_change() 호출 경로에 영향을 주는 shared block 플래그와 baseclass 지정 여부
  • 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 등)와 결합하면 연속적인 커널 크래시를 유발할 수 있다(추정:).
  • 일반적인 로컬 권한 상승 체인 패턴:
    1. 정보 노출 – KASAN 로그를 통해 메모리 레이아웃 파악.
    2. 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)” 문자열이 나타날 경우.
  • auditd netlink 이벤트(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
※ 본 분석은 Kestrel AI 심층 분석 결과입니다. 참고용이며, 실제 대응 전에는 전문가 검토가 필요합니다.

댓글(0)

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

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

로그인하기

불러오는 중…