
DEMO Доказательство концепции: временная несогласованность памяти в cldflt.sys (CVE-2025-62221) CVE-2025-62221:
Этот репозиторий содержит всесторонний технический анализ и демонстрацию Proof-of-Concept (PoC) вектора вертикального повышения привилегий. Уязвимость представляет собой примитив использования после освобождения (Use-After-Free, UAF), находящийся в драйвере мини-фильтра облачных файлов Windows (cldflt.sys). В данной документации подробно описан механизм, с помощью которого непривилегированный объект в пользовательском режиме может перейти в контекст безопасности Ring 0 (NT AUTHORITY\SYSTEM).
Уязвимость CVE-2025-62221 возникает из-за критического сбоя во временном управлении жизненным циклом объектов памяти в подсистеме исполнительной системы Windows в режиме ядра. В частности, драйвер cldflt.sys не реализует атомарный подсчёт ссылок при обработке асинхронных запросов ввода-вывода для точек повторной обработки (reparse points), размещённых в облаке. Организуя недетерминированное состояние гонки с помощью некорректных процедур диспетчеризации кодов управления вводом-выводом (IOCTL), локальный субъект может вызвать сценарий с висячим указателем. Это состояние допускает подготовку пула ядра, обеспечивая примитивы произвольной записи и последующую подмену маркеров безопасности.
Методология эксплуатации разбита на несколько отдельных этапов:
Процедура начинается с аудита целевой среды ядра для проверки наличия модуля cldflt.sys. Далее вычисляются необходимые смещения для структуры EPROCESS и связанных полей маркеров безопасности относительно конкретной версии Windows.
Эксплойт создаёт серию разреженных каталоговых структур, размещённых в облаке. Эти структуры служат основной поверхностью взаимодействия с драйвером-фильтром, позволяя манипулятору влиять на шаблоны выделения памяти в нестраничном пуле ядра (Non-Paged Kernel Pool).
Посредством отправки конкурентных некорректных запросов ввода-вывода эксплойт вызывает асинхронное состояние, при котором объект памяти освобождается, в то время как активная ссылка на него сохраняется в стеке выполнения драйвера.
Используется техника распыления кучи (Heap Spraying) для заполнения недавно освобождённого участка памяти. Эксплойт заполняет пул управляемыми структурами данных, фактически превращая условие «использование после освобождения» в «путаницу типов» или «контролируемое переопределение указателя».
После успешного перехвата выполнения в режиме ядра полезная нагрузка выполняет операцию кражи токена (Token Stealing). Она идентифицирует процесс SYSTEM (PID 4) и реплицирует его основной маркер доступа в дескриптор безопасности процесса эксплойта.
[!CAUTION] Экспериментальное предупреждение: Данное исследование предназначено для академической валидации и формального аудита безопасности режима ядра. Неправильная реализация может привести к аварийной остановке ядра (BSOD) или повреждению файловой системы. Все испытания должны проводиться в строго изолированной среде гипервизора.
Инициализация сетевой топологии:
sudo python3 topo.py
Откройте терминалы для облачного и пользовательского узлов:
xterm cloud user
В облачном терминале перейдите в каталог проекта и запустите сервер:
cd ~/Downloads/sps_test
python3 server.py
В терминале пользователя запустите автоматизированный скрипт эксплойта (необязательно):
python3 run_all.py
В качестве альтернативы вы можете выполнить каждый этап вручную для детального наблюдения.
Последовательно выполните следующие процедуры в терминале пользователя, чтобы наблюдать переходы состояний памяти:
Step 1 — Allocated FileObject | REF=ref-12345
python3 1.py
Step 2 — Object freed
python3 2.py
Step 3 — DANGLING REF
python3 3.py
Step 4 — Heap reuse
python3 4.py
Step 5 — Handler overwritten
python3 5.py
Step 6 — MALICIOUS HANDLER EXECUTED
python3 6.py
Примечание: при успешном переходе на этапе 6 система выполнит вредоносную последовательность команд, определённую в malware.json. Вы увидите сообщения о выполнении в облачном терминале и получите вредоносную команду в терминале пользователя.
Документация и код, содержащиеся в этом репозитории, предоставлены исключительно для развития исследований в области кибербезопасности. Автор не несёт ответственности за ущерб, причинённый в результате использования этой информации. Цель данного исследования — способствовать всестороннему пониманию уязвимостей драйверов мини-фильтров и оценить эффективность существующих стратегий смягчения последствий.
Ссылка: Microsoft Security Response Center (MSRC) — CVE-2025-62221
Выполнено для задания SPS UPB 2026
| Параметр | Спецификация |
|---|
| Класс уязвимости | Временное повреждение памяти / Использование после освобождения (CWE-416) |
| Целевая подсистема | Мини-фильтр облачных файлов Windows (cldflt.sys) |
| Примитив эксплуатации | Подготовка пула ядра и эксфильтрация токенов |
| Граница привилегий | Пользовательский режим → Ядро / Обычный пользователь → SYSTEM |
| Вектор CVSS v3.1 | AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H (Базовый балл: 7.8) |
| Временной контекст | Обнаружено в Q4 2025; Исправление выпущено в январе 2026 |
| Файл | Назначение |
|---|
| topo.py | Скрипт оркестрации Mininet, определяющий сетевую границу |
| server.py | Имитация службы драйвера cldflt.sys, содержащая логику UAF |
| run_all.py | Автоматизированный скрипт эксплуатации для эффективного тестирования |
| user.py | Альтернативный автоматизированный скрипт эксплуатации |
| 1.py – 6.py | Отдельные этапы эксплуатации для детального технического анализа |
| malware.json | Вредоносная нагрузка, используемая для демонстрации примитива выполнения кода : Вредоносная нагрузка, используемая для демонстрации примитива выполнения кода |