## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-MEIN-0-CVE-2026-29923
# CVE-2026-29923 — локальное повышение привилегий в pstrip64.sys
Минимальный proof-of-concept для CVE-2026-29923 — уязвимости в драйвере ядра `pstrip64.sys` (EnTech Taiwan PowerStrip ≤ 3.90.736), которая позволяет непривилегированному процессу в режиме пользователя повысить привилегии до `NT AUTHORITY\SYSTEM`.
* * *
## Суть уязвимости
`pstrip64.sys` предоставляет IOCTL (`0x80002008`), который принимает физический адрес, указанный пользователем, и напрямую отображает его в виртуальное адресное пространство вызывающего процесса, открывая `\Device\PhysicalMemory` и вызывая `ZwMapViewOfSection` с дескриптором текущего процесса. Никакой проверки привилегий, никакой валидации адресов, кроме той, что выполняет `HalTranslateBusAddress`, и никакого контроля доступа к символической ссылке `\\.\PSTRIP64`.
В результате непривилегированный процесс получает неограниченный примитив чтения/записи физической памяти.
* * *
## Эксплуатация
Имея произвольное чтение/запись физической памяти, эксплойт выполняет четыре шага.
**1\. Поиск структур EPROCESS**
Физическая память сканируется блоками по 2 МБ. В каждом блоке ищется тег пула ядра `Proc` (`0x636F7250`), который отмечает выделение пула, содержащее структуру `_EPROCESS` процесса. Кандидаты проверяются с помощью трёх лёгких эвристик, прежде чем PID начинает считаться достоверным:
* `PriorityClass == 0x2` — все активные процессы работают с обычным приоритетом
* `ProcessLock == 0x0` — поле блокировки сброшено у стабильного процесса
* `ImageFileName[0]` — печатный ASCII; мусорные данные редко удовлетворяют этому условию
**2\. Поиск обоих указателей на токен**
Нужны два целевых значения:
* **Физический адрес** поля `Token` нашего собственного процесса внутри `_EPROCESS`
* **Значение токена** , хранящееся в `_EPROCESS` системного процесса (PID 4)
**3\. Перезапись нашего токена**
Страница 4 КБ, содержащая наше поле `Token`, отображается, и поле перезаписывается значением системного токена. С этого момента ядро Windows обрабатывает наш процесс как `NT AUTHORITY\SYSTEM`.
**4\. Запуск оболочки**
`cmd.exe` запускается через `CreateProcessA`. Поскольку дочерние процессы наследуют токен родительского процесса, полученная оболочка работает как SYSTEM.
* * *
## Предостережение об MMIO
Окно физических адресов от 3 до 4 ГБ на системах x86 зарезервировано под MMIO. Попытка отобразить страницы в этом диапазоне приводит к тому, что драйвер возвращает ошибку `74` (сбой `HalTranslateBusAddress`). Сканирование пропускает это окно и продолжается с `0x100000000`, чтобы перехватить структуры ядра, которые Windows размещает выше отметки 4 ГБ.
* * *
## Требование 32-битной сборки
Обработчик отображения драйвера записывает возвращаемый виртуальный адрес в поле `DWORD` (`LowPart`), усекая 64-битный VA до 32 бит. 64-битная сборка получает повреждённый указатель и немедленно падает. **Компилируйте как x86.**
* * *
## Затронутое ПО
Программное обеспечение| Версии
---|---
EnTech Taiwan PowerStrip| ≤ 3.90.736
Хэш драйвера (SHA-256):
root@kitploit:~
ab01485bb7c8bc1a9c86096eeea6d31d8fad557bf4d44072b46373d2203faa6e
* * *
## Смещения EPROCESS
Жёстко заданные смещения рассчитаны на **Windows 10 22H2 x64**. Для других сборок требуются обновлённые значения — используйте `dt nt!_EPROCESS` в WinDbg для проверки.
* * *
## Сборка
Откройте командную строку разработчика x86 Visual Studio и выполните:
root@kitploit:~
cl /EHsc /O2 exploit.c /Fe:poc.exe
Или установите целевую платформу **x86** в Visual Studio и соберите проект в конфигурации Release. Бинарный файл не требует внешних зависимостей, кроме Windows SDK.
* * *
## Использование
Сначала загрузите `pstrip64.sys` (для загрузки драйвера требуются права администратора, но не для запуска самого эксплойта после его загрузки), затем:
root@kitploit:~
poc.exe
Откроется новое окно `cmd.exe`, работающее от имени `NT AUTHORITY\SYSTEM`.
* * *
## Меры защиты
**Заблокировать загрузку драйвера (рекомендуется)**
* Добавьте указанный выше хэш драйвера в блок-лист вашей организации
* Включите список блокировки уязвимых драйверов Microsoft через WDAC
* Включите защиту целостности кода под управлением гипервизора (HVCI)
**Обнаружение попыток эксплуатации**
* Оповещайте об установке новых сервисов режима ядра для неизвестных бинарных файлов драйверов
* Отслеживайте процессы с низким/средним уровнем целостности, порождающие дочерние процессы уровня `SYSTEM`
* Помечайте любой процесс, чей токен изменился на `NT AUTHORITY\SYSTEM` вне легитимного события аутентификации
* * *
## Отказ от ответственности
Этот код опубликован только в образовательных и защитных исследовательских целях. Используйте его только на системах, которыми вы владеете или на тестирование которых у вас есть явное письменное разрешение. Автор не несёт ответственности за любое неправомерное использование.
* * *
## Ссылки
* Microsoft Vulnerable Driver Blocklist
* Обзор WDAC
* Внутреннее устройство EPROCESS в Windows
* HalTranslateBusAddress — MSDN
* ZwMapViewOfSection — MSDN