[방어] 분석 — CVE-2024-36903
CVE‑2024‑36903 is a local IPv6 kernel race condition that may cause uninitialized‑value access and DoS; the fastest mitigation today is to disable IPv6 on affected hosts.
📋 요약
- 심각도 medium · CVSS 5.5 · EPSS 0.0023 · 악용난이도 hard
🔍 공격 기법
IPv6 스택의 __ip6_make_skb() 함수에서 FLOWI_FLAG_KNOWN_NH 플래그를 검사하지 않고 소켓의 HDRINCL 값을 사용함으로써 발생하는 레이스 조건을 이용한다. 공격자는 특수히 조작된 IPv6 패킷(예: 비정상적인 확장 헤더와 타이밍 제어)을 로컬에서 전송하거나, 원격에서 라우터에 전달해 커널 내부 플로우 정보를 경쟁 상태에 빠뜨린다. 레이스가 성공하면 초기화되지 않은 메모리 값을 읽게 되어 커널 Oops/패닉이 발생하고 서비스 거부(DoS) 상황으로 이어진다.
악용 가능성: 이 취약점은 CVSS 벡터 AV:L/AC:L/PR:L/UI:N 로 정의되어 있어, 공격자가 로컬 시스템에 직접 접근할 수 있을 때만 이용 가능하고, 복잡도는 낮으며 권한 요구가 최소(로컬 사용자)이며 사용자 개입도 필요하지 않다는 전제조건을 의미합니다. 그러나 실제 악용이 어려운 이유는 __ip6_make_skb() 내부에서 발생하는 레이스 컨디션과 FLOWI_FLAG_KNOWN_NH 플래그 검증에 의존하기 때문에, 공격자가 정확히 타이밍을 맞추어 특수한 IPv6 패킷을 전송해야 하는 고난이도 트리거가 존재합니다. EPSS 값이
💥 영향 분석
- 서비스 가용성: 커널 패닉 → 시스템 재부팅 필요, 즉시 서비스 중단.
- 보안 경계 확대: 로컬 권한만 있으면 트리거 가능하지만, IPv6가 활성화된 네트워크 장비에서는 원격 공격자가 특수 IPv6 패킷을 전송해 동일 현상을 유발할 수 있음(동료 토론 참고).
- 범위: 커널 4.14.313‑4.15, 4.19.281‑4.20, 5.4.241‑5.5, 5.10.178‑5.11, 5.15.107‑5.16, 6.1.24‑6.2, 6.2.11‑6.6.31, 6.7‑6.8.10 전 버전 모두 영향받음.
🔗 관련 취약점·체이닝
- IPv4 버전
__ip_make_skb()초기화 미사용 버그(CVE‑2023‑xxxx)와 동일한 패턴(플로우 플래그 검증 누락). - 다른 커널 레이스 조건(CVE‑2022‑XXXX)과 결합해 권한 상승이나 메모리 손상으로 이어질 수 있음.
🔎 탐지
로그 지표
dmesg·/var/log/kern.log에 “uninitialized value” 혹은 “ip6_make_skb” 문자열이 포함된 Oops 메시지.- 시스템 콜 감사(
auditd)에서socket(AF_INET6, SOCK_RAW, …)호출 후 짧은 시간 내에 커널 재시작 이벤트가 기록될 경우.
SIEM 쿼리 예시 (예: Elastic Security)
1event.module:"kernel" and 2message:*ip6_make_skb* and message:/uninitialized|race/정규식 탐지
.*(ip6_make_skb|ipv6).*(uninitialized|race).*→ 커널 로그에 해당 패턴이 나타나면 경보.
오탐 튜닝
- 정상적인 IPv6 디버깅 메시지는 “debug” 레벨에서만 발생하므로,
log.level:"error"혹은"kernel.oops"필터를 추가해 오탐을 감소시킨다. - 시스템 재부팅 로그와 혼동되지 않도록
event.action:"reboot"과는 AND NOT 조건을 적용한다.
🛡️ 완화 방안
-
Raw IPv6 소켓 제한
capsh --drop=cap_net_raw+ep혹은 SELinux/AppArmor 정책으로socket(AF_INET6, SOCK_RAW, …)호출 차단.
난이도: 중간 (프로파일 수정 필요).
영향: 정상적인 패킷 캡처·진단 도구가 제한될 수 있음.
검증:auditctl -l | grep socket로 정책 적용 확인.
-
iptables/nftables IPv6 차단 (IPv6 전체를 차단하지 않으면서도 위험을 감소)
nft add rule ip6 filter input drop(필요 시 특정 포트/주소만 허용).
난이도: 중간.
영향: 모든 IPv6 트래픽 차단 → 서비스에 영향 검토 후 적용.
검증:nft list ruleset | grep ip6로 규칙 확인.
-
커널 파라미터 강화 –
kernel.kptr_restrict=2등으로 커널 내부 정보 노출 최소화(보조적).
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=5.5 · non-KEV · EPSS=0.0023 · exploit=hard · in_scope=None