CVE-2024-38063 — Windows IPv6 스택 취약점 (분석 및 PoC)
-red)
Windows IPv6 스택(tcpip.sys)의 치명적인 원격 코드 실행(RCE) 취약점인 CVE-2024-38063에 대한 기술 분석 및 개념 증명(PoC)입니다. KunLun Lab에서 발견한 이 취약점은 제로 클릭(zero-click) 방식으로, 사용자 상호작용 없이 특수하게 조작된 패킷만으로 트리거될 수 있습니다.
학술적 맥락: “네트워크 보안의 기초” 과정의 최종 프로젝트입니다.
데모
목차
개요
이 저장소에는 다음이 포함되어 있습니다:
- 취약점에 대한 구조화된 분석,
- Scapy를 사용한 PoC 시연,
- 그리고 전체 과정 문서 및 실습 지침.
기술 요약
핵심 문제는 단편화된 트래픽 내에서 IPv6 확장 헤더를 파싱하는 과정에서 tcpip.sys에 발생하는 정수 언더플로입니다.
- 로직 오류: 계산 중 헤더 길이 검증이 실패합니다.
- 메모리 손상: 언더플로로 인해 버퍼 오버플로와 안전하지 않은 메모리 쓰기가 발생합니다.
- 영향: 특정 조건에서 BSOD 및 RCE 가능성.
저장소 내용
- CVE-2024-38063 Analysis.pdf — 배경, 근본 원인, 완화 방안을 다루는 슬라이드.
- CVE-2024-38063.py — Scapy 기반 PoC 스크립트 (충돌 동작을 시연).
- WriteUP.pdf — 전체 분석 문서, 실습 요구 사항, 실행 노트.
실습 환경 구성
통제된 교육용 실습 환경에서 환경을 재현하려면:
- 피해자: 2024년 8월 패치 / 24H2 이전의 Windows 10/11, IPv6 활성화 상태.
- 공격자: Python 3와 Scapy가 설치된 Linux VM.
- 네트워크: 동일 네트워크 세그먼트상의 두 머신 간 IPv6 연결.
PoC 로직 (상위 수준)
PoC는 언더플로를 트리거하기 위해 일련의 패킷을 생성합니다:
- Destination Options에 인식되지 않는 옵션 유형을 사용하여 오류 처리 경로를 유도합니다.
- Fragment 1로 단편화를 시작하고 페이로드를 제공합니다.
- Fragment 2로 시퀀스를 종료합니다.
스크립트는 취약한 파싱 경로에 도달할 확률을 높이기 위해 Hop Limit을 변경하면서 이러한 배치를 반복합니다.
사용법
- 대상 IPv6 주소를 식별합니다.
CVE-2024-38063.py에서 ip_addr과 iface를 업데이트합니다.
- 공격자 머신에서 스크립트를 실행합니다:
pip install scapy
pip install getmac
python3 CVE-2024-38063.py
대상이 취약한 경우, 커널이 잘못된 헤더를 처리하면서 일반적으로 30~60초 이내에 BSOD가 발생합니다.
완화 방안
- 보안 업데이트 적용: Microsoft 패치 (2024년 8월 13일).
- IPv6 비활성화: 패치가 불가능한 환경에서.
- 방화벽 필터링: 경계에서 단편화된 IPv6 패킷을 차단합니다.
배운 점
- IPv6 헤더 아키텍처: next-header 체이닝(Hop-by-Hop, Destination Options, Fragmentation)과 중첩된 헤더의 복잡성이 네트워크 공격 표면을 어떻게 넓히는지에 대한 이해를 심화했습니다.
- 커널 수준 패킷 수집(
tcpip.sys): Ring 0 패킷 처리를 직접 관찰했습니다. 단편화 재조립과 파싱이 사용자 모드 소켓에 도달하기 전 네트워크 드라이버 깊숙한 곳에서 이루어지기 때문에, 이 계층의 결함은 호스트 수준 소프트웨어 제어를 우회하고 제로 클릭 익스플로잇을 가능하게 합니다.
- 근본 원인 취약점 메커니즘: 헤더 길이 계산에서의 정수 언더플로가 포인터 오프셋을 손상시켜, 산술 결함이 커널 메모리 범위를 벗어난 쓰기와 시스템 패닉(BSOD)으로 이어지는 과정을 분석했습니다.
- Scapy를 이용한 사용자 정의 패킷 제작: RFC를 준수하지 않는 패킷을 구성하고, 잘못된 Destination Option TLV(Type-Length-Value)를 주입하며, 단편을 순서대로 배치하여 대상 커널의 예외 상황 오류 처리를 강제하는 실습 경험을 쌓았습니다.
면책 조항
이 프로젝트는 교육 및 연구 목적으로만 사용됩니다. 소유하지 않았거나 평가에 대한 명시적 허가를 받지 않은 시스템에 대한 무단 테스트 또는 접근은 불법입니다. 저자는 오용에 대해 어떠한 책임도 지지 않습니다.