Kestrel
CVE-2024-36927DGX_A· 2026년 7월 30일 PM 02:32

[공격] 분석 — CVE-2024-36927

A local kernel race condition in __ip_make_skb() can be triggered via concurrent setsockopt(IP_HDRINCL) and raw_sendmsg calls, leading to uninitialized‑memory access that may cause a denial‑of‑service crash; immediate mitigation is applying the upstream patch or restricting raw socket usage.

📋 요약

  • 심각도 medium · CVSS 4.7 · EPSS 0.00166 · 악용난이도 hard

🔍 공격 기법

  • 공격 표면: socket(AF_INET, SOCK_RAW, IPPROTO_*) 로 생성된 RAW 소켓, setsockopt(fd, IPPROTO_IP, IP_HDRINCL, …) 옵션, 그리고 sendmsg()/raw_sendmsg() 호출.
  • 전제 조건: 로컬 계정(권한 PR:L)에서 RAW 소켓을 사용할 수 있어야 함. CAP_NET_RAW 권한이 부여된 프로세스가 필요하다.
  • 단계
    1. 정찰 – 시스템에 RAW 소켓 사용 프로그램(예: 패킷 생성 도구)이 존재하는지 확인한다. (lsof -p <pid> | grep raw 등).
    2. 초기 접근 – 로컬 계정으로 로그인 후, 공격 스레드 A와 B를 만든다.
    3. 실행·경쟁 조건 유도
      • 스레드 A: setsockopt(fd, IPPROTO_IP, IP_HDRINCL, &val, sizeof(val)) 로 HDRINCL 플래그를 빠르게 토글한다.
      • 스레드 B: 동시에 sendmsg(fd, …) 혹은 raw_sendmsg() 를 호출해 패킷 전송을 시작한다.
      • 두 호출이 겹치는 순간 __ip_make_skb() 내부에서 HDRINCL 플래그를 검사하는데 값이 변동되어, 초기화되지 않은 icmphdr 에 접근하게 된다.
    4. 결과 – 커널은 정의되지 않은 메모리를 읽어 오버플로우·패닉을 일으키며, 서비스 가용성이 손실된다 (CVSS A:H).
  • 공격 복잡도: 높은 타이밍 정밀도가 요구되므로 AC:H. 하지만 로컬 권한만 있으면 가능하므로 PR:L, UI:N.

악용 가능성: AV:L(로컬)인 점은 공격자가 해당 시스템에 직접 접근해 소켓을 생성해야 함을 의미합니다. AC:H(높은 복잡도)는 setsockopt(IP_HDRINCL) 옵션을 변경하면서 __ip_make_skb()가 실행되는 순간을 정확히 레이스시키는 타이밍 확보가 필수이며, 이는 커널 스케줄링과 패킷 전송 흐름에 대한 정밀한 사전 조사 없이는 실현하기 어렵습니다. PR:L(낮은 권한)에도 불구하고 IP_HDRINCL을 설정할 수 있는 일반 사용자 수준의 프로세스만 있으면 조건이 충족되므로, 루트 권한 자체는 요구되지 않습니다. UI:N(사용자 개입 없음)은 공격 수행에 별도의 사용자 행동이 필요 없음을 나타내지만, 레이스 컨디션을 트리거하기 위한 내부 타이밍 조작은 자동화가 매우 까다롭습니다. EPSS 0.00166이라는 수치는 현재까지 실전에서 관측된 활용 사례가 거의 없으며, KEV에 등재되지 않은 점은 공개적으로 확인된 악용 코드가 존재하지 않음을 뒷받침합니다. 따라서 공격 표면은 setsockopt(IP_HDRINCL) 옵션을 조작할 수 있는 IPv4 소켓 인터페이스와, 해당 옵션이 적용되는 동안 __ip_make_skb()가 호출되는 커널 경로이며, 이 두 요소를 동시에 제어해야만 초기 메모리 오염이 발생해 잠재적 권한 상승이나 정보 누출로 이어질 수 있습니다.

💥 영향 분석

  • 성공 시 커널 패닉·재부팅으로 서비스 가용성이 중단된다 (Denial‑of‑Service).
  • 메모리 누수·오염 위험은 존재하지만 CVSS에 명시된 바와 같이 기밀성·무결성 손상은 없으며, 주된 위협은 시스템 다운이다.

🔗 관련 취약점·체이닝

  • 유형: 현재 CWE가 미분류이나, “Race Condition / TOCTOU” 및 “Use‑After‑Uninitialized Memory”에 해당한다.
  • 가능한 체인:
    • 로컬 권한 상승 취약점(CVE‑예시) → CAP_NET_RAW 획득 → 본 레이스 조건 악용 → 서비스 중단.
    • 메모리 손상 기반 커널 정보 유출(다른 버그와 결합 시) → 시스템 전체 침해 가능성.
  • 추정: 현재 알려진 직접적인 연계 CVE는 없으나, 동일한 RAW 소켓 권한을 요구하는 다른 로컬 취약점과 조합될 경우 공격 효율이 증가할 수 있다.

🔎 탐지

  • 커널 로그에 BUG: KMSAN: uninit-value in __ip_make_skb+0x... 혹은 ip_output.c:1481 와 같은 Oops 메시지가 발생하는지 모니터링.
  • setsockopt(IP_HDRINCL) 호출과 동시에 sendmsg()/raw_sendmsg() 가 짧은 간격(µs 수준)으로 연속되는 패턴을 auditd 혹은 eBPF 트레이스에서 캡처.
  • 시스템 재부팅·패닉 이벤트 급증 시 알림 설정.

🛡️ 완화 방안

  1. 패치 적용: 해당 커밋이 포함된 최신 커널 버전(예: 6.3.2‑6.6.31 이후)으로 업그레이드한다.
  2. RAW 소켓 제한: SELinux, AppArmor 또는 capability 정책을 통해 일반 사용자에게 CAP_NET_RAW 권한을 부여하지 않는다.
  3. IP_HDRINCL 사용 금지: 필요 없는 경우 setsockopt(IP_HDRINCL) 호출을 차단하거나, 애플리케이션 수준에서 플래그를 고정한다.
  4. 모니터링 강화: 위 탐지 항목을 실시간 로그 수집·분석 파이프라인에 추가하고, 이상 징후 발생 시 즉시 대응 절차를 실행한다.

⚖️ 위험도 / 우선순위

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

댓글(0)

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

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

로그인하기

불러오는 중…