[공격] 분석 — CVE-2024-36903
CVE‑2024‑36903 is a local kernel race condition in __ip6_make_skb() that can be triggered via crafted IPv6 packets, leading to an uninitialized‑value access and potential denial‑of‑service; immediate mitigation is to apply the upstream patch or upgrade to a non‑vulnerable kernel.
📋 요약
- 심각도 medium · CVSS 5.5 · EPSS 0.0023 · 악용난이도 hard
🔍 공격 기법
- 트리거 조건
- 로컬 프로세스가
AF_INET6RAW 소켓을 열고IPV6_HDRINCL(또는 동일한 플래그) 옵션을 설정한 뒤, 특수히 조작된 IPv6 헤더를 포함한 패킷을 전송한다. - 커널은
__ip6_make_skb()내부에서fl6->flowi6_flags & FLOWI_FLAG_KNOWN_NH검사를 수행하기 전에 레이스가 발생하면, 초기화되지 않은 메모리 영역을 읽어 kernel panic(A:H) 을 일으킨다.
- 로컬 프로세스가
- 공격 단계
- 정찰 – 시스템에 IPv6 스택이 활성화돼 있는지 확인(
sysctl net.ipv6.conf.all.disable_ipv6). - 초기 접근 – 로컬 권한(L)으로 RAW 소켓을 생성 (
socket(AF_INET6, SOCK_RAW, IPPROTO_RAW)). - 실행·권한 획득 – 조작된 IPv6 패킷 전송 → 레이스 조건 발생 → 커널 내부에서 미초기화 값 접근 → 시스템 크래시(DoS).
- 지속/영향 – 서비스 중단, 재부팅 필요; 권한 상승은 직접 제공되지 않으나, 지속적인 DoS는 운영 환경을 마비시킬 수 있다.
- 정찰 – 시스템에 IPv6 스택이 활성화돼 있는지 확인(
- 공격 표면
- 노출 엔드포인트: 로컬 RAW IPv6 소켓 (
/proc/net/raw등) - 파라미터:
IPV6_HDRINCL플래그, IPv6 헤더 필드(next header,hop limit등)
- 노출 엔드포인트: 로컬 RAW IPv6 소켓 (
- CVSS 벡터와 실제 조건 매핑
- AV:L → 로컬 접근 필요 (루트가 아니어도 RAW 소켓 생성 가능)
- AC:L → 레이스를 유발하기 위한 타이밍 조작은 비교적 쉬움(특정 패킷 전송 간격만 맞추면 됨)
- PR:L → 일반 사용자 권한으로도 공격 가능
- UI:N → 사용자의 추가 입력 필요 없음
악용 가능성: AV:L·AC:L·PR:L·UI:N 벡터는 로컬 환경에서 비특권 사용자가 복잡한 사전 준비 없이도 공격을 시도할 수 있음을 의미하지만, 실제 트리거가 되는 __ip6_make_skb() 내의 레이스 조건은 매우 짧은 시간 창에 정확히 FLOWI_FLAG_KNOWN_NH 플래그가 설정되는 상황을 요구하므로 구현 난이도는 높게 평가됩니다.
EPSS 0.0023이라는 수치는 현재까지 관측된 실제 악용 사례가 거의 없음을 보여주며, KEV에 등재되지 않은 점은 이 취약점이 아직 실전 위협으로 전환되지 않았다는 추가 증거입니다.
공격 표면은 IPv6 스택의 __ip6_make_skb() 함수와 이를 호출하는 경로인 IPv6 소켓 API(예: raw socket, AF_INET6)이며, 공격자는 패킷 헤더에 포함된 HDRINCL 비트를 조작해 fl6->flowi6_flags 값을 영향을 미칠 수 있습니다.
정찰 단계에서는 대상 커널 버전과 해당 함수가 존재하는지 확인하고, 로컬에서 raw IPv6 패킷을 전송할 수 있는 권한만 있으면 초기 접근이 가능합니다.
그 후 정확히 레이스 윈도우에 맞춰 FLOWI_FLAG_KNOWN_NH 플
💥 영향 분석
- 성공 시 시스템 전체 가용성이 상실된다. 커널 OOPS가 발생해 시스템이 멈추고 자동 재부팅(또는 수동 복구)까지 요구된다.
- 데이터 손실, 서비스 중단, SLA 위반 등 비즈니스 연속성에 직접적인 영향을 미친다.
🔗 관련 취약점·체이닝
- IPv4 유사 버그:
CVE‑2023‑xxxx(예시, 실제 번호는 확인 필요)에서__ip_make_skb()의 동일한 레이스가 패치된 바 있다. IPv6와 IPv4 스택은 비슷한 코드 경로를 공유하므로, 동일한 공격 로직을 양쪽에 적용할 수 있다. - 가능한 체인
- 정보 노출 → 커널 로그(
dmesg)에uninit-value경고가 남으면 공격자는 존재 여부를 확인한다. - 권한 상승 → DoS 후 재부팅 시, 부트 파라미터나 init 스크립트를 변조할 수 있는 별도 취약점(예: CVE‑2024‑xxxx)과 결합하면 권한 상승으로 이어질 수 있다. (추정)
- 정보 노출 → 커널 로그(
🔎 탐지
- 커널 로그:
__ip6_make_skb에서 “uninitialized value” 혹은 “BUG: KASAN: uninit-value” 메시지가 기록될 경우 경보. - 시스템 안정성 모니터링: 비정상적인 재부팅, OOPS 발생률 급증,
dmesg에 “kernel panic” 로그가 나타나면 탐지 가능. - 네트워크 트래픽: 로컬 RAW IPv6 패킷 전송량이 평소와 크게 차이나는 경우(
tcpdump -i lo ip6) 경고 신호로 활용.
🛡️ 완화 방안
- 패치 적용: 커밋
fc1092f51567을 포함한 최신 커널(4.14.313‑4.15, 4.19.281‑4.20, 5.4.241‑5.5, … 6.8.10)으로 업데이트하거나 백포트 패치를 적용한다. - 임시 방어: IPv6 사용이 불필요한 경우
sysctl -w net.ipv6.conf.all.disable_ipv6=1로 비활성화하고, RAW 소켓 생성을 제한하는 SELinux/AppArmor 정책을 강화한다. - 모니터링 우선순위: 다중 소스에서 일관성이 확인된 점([교차검증])과 EPSS 0.0023이라는 낮은 실제 악용 확률([실측 악용예측])을 근거로, 현재는 monitor 수준으로 분류했으나, 패치 적용이 가장 신속하고 확실한 완화이다.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=5.5 · non-KEV · EPSS=0.0023 · exploit=hard · in_scope=None