CVE-2026-21525

CVE-2026-21525 - Microsoft Windows NULL Pointer Dereference Exploitation

Detects exploitation attempts and post-exploitation activity related to CVE-2026-21525, a NULL pointer dereference vulnerability in Microsoft Windows. This vulnerability is actively exploited in the wild (CISA KEV) and may allow attackers to achieve privilege escalation or code execution via memory corruption techniques targeting Windows kernel or user-mode components.

Vulnerability Intelligence

KEV — Known Exploited

Affected Software

Vendor
Microsoft
Product
Windows

Weakness (CWE)

Timeline

Disclosed
February 10, 2026

CVSS

6.2
Medium (4.0–6.9)

CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Write-up coming soon

What is CVE-2026-21525 CVE-2026-21525 - Microsoft Windows NULL Pointer Dereference Exploitation?

CVE-2026-21525 - Microsoft Windows NULL Pointer Dereference Exploitation (CVE-2026-21525) maps to the Privilege Escalation and Defense Evasion and Execution tactics — the adversary is trying to gain higher-level permissions in MITRE ATT&CK.

This page provides production-ready detection logic for CVE-2026-21525 - Microsoft Windows NULL Pointer Dereference Exploitation, covering the data sources and telemetry it touches: Microsoft Defender for Endpoint, Windows Security Events, Windows Application Event Log. The queries below are rated high severity at medium confidence, and ship for 7 SIEM platforms — KQL, SPL, Elastic, QRadar, Sumo, YARA-L, LogScale.

MITRE ATT&CK

Tactic
Privilege Escalation Defense Evasion Execution
Microsoft Sentinel / Defender
kusto
let timeframe = 24h;
let suspiciousProcesses = dynamic(["lsass.exe", "svchost.exe", "csrss.exe", "winlogon.exe"]);
union SecurityEvent, DeviceProcessEvents, DeviceEvents
| where TimeGenerated >= ago(timeframe)
| where ActionType in ("ProcessCreated", "ProcessCrashed", "KernelDriverLoaded") or EventID in (1001, 1000, 41)
| where (FileName in~ (suspiciousProcesses) and (ProcessCommandLine contains "null" or ProcessCommandLine contains "0x00000000"))
    or (ActionType == "ProcessCrashed" and FileName in~ (suspiciousProcesses))
    or (EventID == 1001 and (ApplicationName has_any (suspiciousProcesses)))
| extend RiskScore = case(
    ActionType == "ProcessCrashed" and FileName =~ "lsass.exe", 100,
    ActionType == "KernelDriverLoaded" and InitiatingProcessIntegrityLevel != "System", 80,
    EventID == 1001, 60,
    50)
| where RiskScore >= 50
| project TimeGenerated, DeviceName, AccountName, FileName, ProcessCommandLine, ActionType, EventID, RiskScore
| sort by RiskScore desc, TimeGenerated desc

Detects process crashes, kernel driver loads, and Windows Error Reporting events consistent with NULL pointer dereference exploitation targeting Windows system processes. Focuses on LSASS, SVCHOST and other high-value processes crashing or loading unexpected drivers.

high severity medium confidence

Data Sources

Microsoft Defender for Endpoint Windows Security Events Windows Application Event Log

Required Tables

SecurityEvent DeviceProcessEvents DeviceEvents

False Positives

  • Legitimate application crashes due to software bugs unrelated to exploitation
  • Antivirus or EDR products performing kernel-level inspection that may trigger driver load events
  • System updates or patches that temporarily cause process instability
  • Memory dumps or diagnostic tools running during incident response activities

Sigma rule & cross-platform mapping

The detection logic for CVE-2026-21525 - Microsoft Windows NULL Pointer Dereference Exploitation (CVE-2026-21525) above is provided in a vendor-neutral form so you can deploy it on any SIEM. The same logic is shipped here as native KQL (Microsoft Sentinel / Defender), SPL (Splunk), Elastic (Elastic Security (EQL)), QRadar (IBM QRadar (AQL)), Sumo (Sumo Logic CSE), YARA-L (Google Chronicle / SecOps), LogScale (CrowdStrike LogScale (CQL)) queries. In Sigma terms, this detection targets the following logsource:

logsource:
  category: process_creation
  product: windows

Browse the community-maintained Sigma rules for this technique:


Testing Methodology

Validate this detection against 3 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.

  1. Test 1Simulate Windows Process Crash via WER Trigger

    Expected signal: EventID 1001 in Windows Application Event Log with FaultingApplicationName=CrashTest.exe and ExceptionCode=C0000005; Sysmon EventID 1 for process creation; EDR process termination event with non-zero exit code

  2. Test 2Load Unsigned Test Driver to Simulate Kernel Exploitation Activity

    Expected signal: EventID 7045 in Windows System Event Log with ServiceName=CVE202621525TestDriver and ServiceType=kernel mode driver; Sysmon EventID 12/13 for registry modifications under HKLM\SYSTEM\CurrentControlSet\Services

  3. Test 3LSASS Access Simulation via ProcDump

    Expected signal: Sysmon EventID 10 (ProcessAccess) with TargetImage=lsass.exe and GrantedAccess including 0x1FFFFF or 0x1010; Windows Defender EventID 1121 if credential protection rules are enabled; EDR LSASS access alert


Response Playbook

Triage

  1. Identify the affected Windows host(s) and correlate crash events (EventID 1000/1001) with process names to determine which Windows component is being targeted by the NULL pointer dereference.
  2. Check Windows Error Reporting (WER) logs at %LOCALAPPDATA%\CrashDumps and %WINDIR%\Minidump for crash dump files generated around the alert time — these may contain exploit shellcode artifacts.
  3. Review recently loaded kernel drivers via 'driverquery /v' and cross-reference against EventID 7045 entries to identify any unauthorized or unsigned drivers loaded prior to or after the crash.
  4. Correlate the affected host with recent patch status using 'Get-HotFix' or WSUS/Intune compliance reports to confirm whether February 2026 Patch Tuesday updates (CVE-2026-21525 patch) have been applied.
  5. Examine network connections from the affected process before crash using EDR telemetry to identify potential C2 communications that may indicate successful exploitation and post-exploitation activity.

Containment

  1. Isolate the affected endpoint from the network immediately if active exploitation is confirmed or exploitation evidence is found in crash dumps, to prevent lateral movement or data exfiltration.
  2. Apply the Microsoft security update addressing CVE-2026-21525 to all unpatched Windows systems across the environment as emergency patching, prioritizing internet-facing and high-value systems.
  3. If patching is not immediately possible, consider enabling Windows Defender Exploit Guard or EMET mitigations targeting NULL pointer dereference exploitation techniques as a temporary compensating control.

Evidence Collection

  1. Collect Windows crash dump files from %WINDIR%\Minidump and %LOCALAPPDATA%\CrashDumps, along with WER reports from the Event Log, preserving them for forensic analysis to identify exploit payload characteristics.
  2. Export relevant Windows Event Log entries (Application: 1000/1001, System: 7045/41, Security: 4688/4624) from the affected host covering a 48-hour window around the incident for timeline reconstruction.
  3. Capture a memory image of the affected system using tools like WinPmem or FTK Imager if exploitation is suspected to have succeeded, enabling analysis of in-memory artifacts and injected shellcode.

Escalation Criteria

  • ! Escalate immediately to incident response if crash dump analysis reveals shellcode, ROP chains, or exploit artifacts consistent with successful NULL pointer dereference exploitation and privilege escalation.
  • ! Escalate if multiple hosts in the environment show similar crash patterns within a short timeframe, indicating a potential mass exploitation campaign or worm-like propagation leveraging CVE-2026-21525.

Investigation Guide

Forensic Artifacts

  • > Windows crash dump files in %WINDIR%\Minidump (kernel mode) and %LOCALAPPDATA%\CrashDumps (user mode) containing call stacks at the point of the NULL pointer dereference
  • > Windows Error Reporting (WER) event entries in the Application Event Log (EventID 1001) with fault module and exception code 0xC0000005 (ACCESS_VIOLATION) or 0xC0000374 (HEAP_CORRUPTION)
  • > Prefetch files for processes that crashed, providing execution timestamps and loaded DLL lists for correlation with known exploit loader patterns
  • > Registry keys under HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps showing configured crash dump paths and retention settings

Tuning Guidance

Reduce false positives by baselining normal crash rates per process in your environment and alerting only on deviations above two standard deviations. Whitelist known-good driver publishers using certificate thumbprints rather than company name strings to avoid bypass. Filter EventID 1001 alerts to focus on processes running at elevated integrity levels (High or System) as these represent higher-risk crash events. Consider adding host asset criticality weighting so the same crash event on a domain controller generates higher priority than on a standard workstation.


Hunting Queries

Threat hunting query to identify hosts with elevated crash rates potentially indicative of repeated exploitation attempts for CVE-2026-21525, correlated with network activity and driver installation events to surface compromised systems

Hunting — KQL
kql
DeviceEvents
| where TimeGenerated >= ago(7d)
| where ActionType == "ProcessCrashed" or ActionType == "ExploitGuardExploitDetected"
| summarize CrashCount=count(), AffectedProcesses=make_set(FileName), FirstSeen=min(TimeGenerated), LastSeen=max(TimeGenerated) by DeviceName, bin(TimeGenerated, 1h)
| where CrashCount >= 3
| join kind=leftouter (DeviceNetworkEvents | where TimeGenerated >= ago(7d) | summarize NetworkConnections=count() by DeviceName, bin(TimeGenerated, 1h)) on DeviceName, TimeGenerated
| project DeviceName, TimeGenerated, CrashCount, AffectedProcesses, NetworkConnections
| sort by CrashCount desc
Hunting — SPL
spl
index=windows sourcetype="WinEventLog:Application" EventCode=1001
| bin _time span=1h
| stats count as crash_count, values(ApplicationName) as affected_apps, values(host) as hosts by _time
| where crash_count >= 3
| join type=left _time [
    index=windows sourcetype="WinEventLog:System" EventCode=7045
    | bin _time span=1h
    | stats count as driver_installs, values(ServiceName) as new_drivers by _time
  ]
| table _time, hosts, crash_count, affected_apps, driver_installs, new_drivers
| sort - crash_count

Atomic Red Team Tests

Test 1 Simulate Windows Process Crash via WER Trigger
windows

Triggers a controlled application crash to simulate the Windows Error Reporting events that would be generated during CVE-2026-21525 exploitation, validating detection coverage for EventID 1001 without actual exploitation.

Command

powershell
# Lab only - creates a controlled crash to test WER detection
$code = @'
using System;
using System.Runtime.InteropServices;
class CrashTest {
    [DllImport("kernel32.dll")] static extern void RaiseException(uint dwExceptionCode, uint dwExceptionFlags, uint nNumberOfArguments, IntPtr lpArguments);
    static void Main() {
        Console.WriteLine("[*] Simulating NULL pointer dereference crash event for detection testing");
        // Trigger access violation (0xC0000005) to simulate NULL ptr deref
        RaiseException(0xC0000005, 0, 0, IntPtr.Zero);
    }
}
'@
$tempDir = "$env:TEMP\\CrashTest"
New-Item -ItemType Directory -Force -Path $tempDir | Out-Null
$csFile = "$tempDir\\CrashTest.cs"
$exeFile = "$tempDir\\CrashTest.exe"
$code | Out-File -FilePath $csFile -Encoding ASCII
csc.exe /out:$exeFile $csFile 2>&1
if (Test-Path $exeFile) {
    Write-Host "[*] Executing crash simulation..."
    & $exeFile
} else {
    Write-Host "[-] Compilation failed - ensure .NET SDK is available"
}

Cleanup

powershell
Remove-Item -Recurse -Force "$env:TEMP\\CrashTest" -ErrorAction SilentlyContinue

Expected Telemetry

EventID 1001 in Windows Application Event Log with FaultingApplicationName=CrashTest.exe and ExceptionCode=C0000005; Sysmon EventID 1 for process creation; EDR process termination event with non-zero exit code

Expected Detection

Alert triggered by WER crash detection rules monitoring EventID 1001 with access violation exception codes; medium risk score assigned due to non-system-process crash context

Test 2 Load Unsigned Test Driver to Simulate Kernel Exploitation Activity
windows

Attempts to load a test kernel driver to generate EventID 7045 entries simulating the type of driver installation activity that may follow successful kernel NULL pointer dereference exploitation for privilege escalation.

Command

powershell
# Lab only - requires admin privileges and test signing enabled
# Enable test signing (requires reboot in lab): bcdedit /set testsigning on
# This simulates the driver installation event (EventID 7045) generated post-exploitation

$driverName = "CVE202621525TestDriver"
$driverPath = "$env:SystemRoot\\System32\\drivers\\test_null_deref.sys"

# Create a benign placeholder to simulate the installation event
# In a real exploitation scenario, this would be a malicious driver
Write-Host "[*] Simulating driver service registration (EventID 7045)"
sc.exe create $driverName binPath= $driverPath type= kernel start= demand DisplayName= "CVE-2026-21525 Test Driver" 2>&1
if ($LASTEXITCODE -eq 0) {
    Write-Host "[+] Driver service registration successful - check EventID 7045"
} else {
    Write-Host "[-] Service creation returned: $LASTEXITCODE (expected in lab without actual .sys file)"
}
sc.exe query $driverName 2>&1

Cleanup

powershell
sc.exe delete CVE202621525TestDriver 2>&1 | Out-Null; Write-Host "[*] Test driver service removed"

Expected Telemetry

EventID 7045 in Windows System Event Log with ServiceName=CVE202621525TestDriver and ServiceType=kernel mode driver; Sysmon EventID 12/13 for registry modifications under HKLM\SYSTEM\CurrentControlSet\Services

Expected Detection

Alert triggered by driver installation detection rule monitoring EventID 7045; high risk score if driver publisher cannot be verified as Microsoft or known security vendor

Test 3 LSASS Access Simulation via ProcDump
windows

Uses the legitimate Sysinternals ProcDump tool to access LSASS memory, simulating the type of LSASS interaction that may occur during post-exploitation of CVE-2026-21525 when an attacker escalates to SYSTEM and attempts credential harvesting.

Command

powershell
# Lab only - simulates LSASS access event post-exploitation
# Requires admin privileges and ProcDump from Sysinternals
# Download: https://docs.microsoft.com/sysinternals/downloads/procdump

$procDumpPath = "$env:TEMP\\procdump64.exe"
$dumpOutput = "$env:TEMP\\lsass_test_dump.dmp"

if (-not (Test-Path $procDumpPath)) {
    Write-Host "[-] ProcDump not found at $procDumpPath - download from Sysinternals first"
    Write-Host "    Simulating LSASS open handle instead..."
    # Alternative: open a handle to LSASS to trigger Sysmon EventID 10
    $lsassPid = (Get-Process lsass).Id
    $handle = [System.Diagnostics.Process]::GetProcessById($lsassPid)
    Write-Host "[*] Opened handle to LSASS PID: $lsassPid - Sysmon EventID 10 should fire"
    $handle.Dispose()
} else {
    Write-Host "[*] Attempting LSASS memory access via ProcDump"
    & $procDumpPath -accepteula -ma lsass $dumpOutput 2>&1
    Write-Host "[*] Check Sysmon EventID 10 and Windows Defender alerts"
}

Cleanup

powershell
Remove-Item -Force "$env:TEMP\\lsass_test_dump.dmp" -ErrorAction SilentlyContinue; Write-Host "[*] Cleanup complete"

Expected Telemetry

Sysmon EventID 10 (ProcessAccess) with TargetImage=lsass.exe and GrantedAccess including 0x1FFFFF or 0x1010; Windows Defender EventID 1121 if credential protection rules are enabled; EDR LSASS access alert

Expected Detection

LSASS access detection rules alert on Sysmon EventID 10 targeting lsass.exe; correlated with process crash events from other atomic tests to build higher-confidence exploitation detection chain

Related Detections