CVE-2024-38063 — Уязвимость стека IPv6 в Windows (анализ и PoC)
-red)
Технический анализ и Proof-of-Concept (PoC) для CVE-2024-38063 — критической уязвимости удалённого выполнения кода (RCE) в стеке IPv6 Windows (tcpip.sys). Обнаруженная KunLun Lab, эта проблема относится к классу zero-click, то есть может быть вызвана специально сформированными пакетами без взаимодействия с пользователем.
Академический контекст: итоговый проект по курсу «Основы сетевой безопасности».
Демонстрация
Содержание
Обзор
Этот репозиторий содержит:
- структурированный анализ уязвимости,
- демонстрацию PoC с использованием Scapy,
- а также полную документацию по курсу и инструкции по лабораторной работе.
Техническое резюме
Основная проблема — целочисленное переполнение снизу (integer underflow) в tcpip.sys при разборе расширенных заголовков IPv6 во фрагментированном трафике.
- Логическая ошибка: проверка длины заголовка не срабатывает при вычислении.
- Повреждение памяти: переполнение снизу приводит к переполнению буфера и небезопасной записи в память.
- Воздействие: потенциальный BSOD и RCE при определённых условиях.
Содержимое репозитория
- CVE-2024-38063 Analysis.pdf — слайды с описанием предыстории, первопричины и мер защиты.
- CVE-2024-38063.py — PoC-скрипт на основе Scapy (демонстрирует поведение при сбое).
- WriteUP.pdf — полное описание, требования к лаборатории и заметки по выполнению.
Настройка лаборатории
Чтобы воспроизвести окружение в контролируемой учебной лаборатории:
- Жертва: Windows 10/11 до патча августа 2024 / 24H2, с включённым IPv6.
- Атакующий: Linux VM с Python 3 и Scapy.
- Сеть: IPv6-связность между обеими машинами в одном сегменте сети.
Логика PoC (общий уровень)
PoC формирует последовательность пакетов для вызова переполнения снизу:
- Destination Options с нераспознанным типом опции, чтобы задействовать пути обработки ошибок.
- Фрагмент 1 для запуска фрагментации и передачи полезной нагрузки.
- Фрагмент 2 для завершения последовательности.
Скрипт повторяет эти пакеты, варьируя Hop Limit, чтобы повысить вероятность попадания на уязвимый путь разбора.
Использование
- Определите целевой IPv6-адрес.
- Измените
ip_addr и iface в CVE-2024-38063.py.
- Запустите скрипт с машины атакующего:
pip install scapy
pip install getmac
python3 CVE-2024-38063.py
Если цель уязвима, BSOD обычно возникает в течение 30–60 секунд, пока ядро обрабатывает некорректно сформированные заголовки.
Меры защиты
- Установите обновления безопасности: патч Microsoft (13 августа 2024 г.).
- Отключите IPv6, если установка патча невозможна.
- Фильтрация на межсетевом экране: блокируйте фрагментированные пакеты IPv6 на периметре.
Чему я научился
- Архитектура заголовков IPv6: углубил понимание цепочек next-header (Hop-by-Hop, Destination Options и Fragmentation) и того, как вложенность заголовков расширяет поверхность сетевой атаки.
- Обработка пакетов на уровне ядра (
tcpip.sys): наблюдал обработку пакетов в Ring 0 вживую. Поскольку сборка фрагментов и разбор происходят глубоко внутри сетевого драйвера до того, как данные достигают сокетов пользовательского режима, уязвимости на этом уровне обходят программные средства контроля хоста и позволяют эксплуатировать их без действий пользователя (zero-click).
- Механика уязвимости на уровне первопричины: проанализировал, как целочисленное переполнение вниз при вычислении длины заголовка искажает смещения указателей, превращая арифметическую ошибку в запись за границы буфера в памяти ядра и системные паники (BSOD).
- Создание собственных пакетов с помощью Scapy: получил практический опыт конструирования пакетов, не соответствующих RFC, внедрения некорректных TLV (Type-Length-Value) в Destination Option и упорядочивания фрагментов, чтобы вызвать обработку граничных случаев в целевом ядре.
Отказ от ответственности
Этот проект предназначен только для образовательных и исследовательских целей. Несанкционированное тестирование или доступ к системам, которыми вы не владеете и на оценку которых у вас нет явного разрешения, является незаконным. Авторы не несут ответственности за неправомерное использование.