Microsoft DirectX NULL Byte Overwrite Vulnerability (CVE-2009-1537)
CVE-2009-1537 is a NULL byte overwrite vulnerability in Microsoft DirectX (quartz.dll) that can be exploited via a maliciously crafted QuickTime media file. Successful exploitation allows remote code execution in the context of the logged-on user. This vulnerability is listed in the CISA Known Exploited Vulnerabilities catalog, indicating active exploitation in the wild. Addressed in MS09-028.
Vulnerability Intelligence
KEV — Known ExploitedAffected Software
- Vendor
- Microsoft
- Product
- DirectX
Timeline
- Disclosed
- May 20, 2026
CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
What is CVE-2009-1537 Microsoft DirectX NULL Byte Overwrite Vulnerability (CVE-2009-1537)?
Microsoft DirectX NULL Byte Overwrite Vulnerability (CVE-2009-1537) (CVE-2009-1537) maps to the Initial Access and Execution tactics — the adversary is trying to get into your network in MITRE ATT&CK.
This page provides production-ready detection logic for Microsoft DirectX NULL Byte Overwrite Vulnerability (CVE-2009-1537), covering the data sources and telemetry it touches: Microsoft Defender for Endpoint, Microsoft Sentinel DeviceProcessEvents, Microsoft Sentinel DeviceFileEvents. The queries below are rated critical severity at medium confidence, and ship for 7 SIEM platforms — KQL, SPL, Elastic, QRadar, Sumo, YARA-L, LogScale.
MITRE ATT&CK
- Tactic
- Initial Access Execution
union DeviceProcessEvents, DeviceFileEvents
| where TimeGenerated > ago(7d)
| where (
(ActionType == "ProcessCreated" and InitiatingProcessFileName =~ "quartz.dll") or
(FileName =~ "quartz.dll" and ActionType in ("FileModified", "FileCreated")) or
(InitiatingProcessCommandLine has_any (".mov", ".qt", ".mqv") and ProcessCommandLine has_any ("cmd.exe", "powershell.exe", "wscript.exe", "cscript.exe"))
)
| extend RiskIndicator = case(
InitiatingProcessCommandLine has_any (".mov", ".qt", ".mqv"), "QuickTime media file triggered shell process",
FileName =~ "quartz.dll" and ActionType == "FileModified", "DirectX quartz.dll modified",
"DirectX related activity"
)
| project TimeGenerated, DeviceName, AccountName, InitiatingProcessFileName, InitiatingProcessCommandLine, FileName, ProcessCommandLine, RiskIndicator
| sort by TimeGenerated desc Detects process and file activity consistent with exploitation of CVE-2009-1537 via malicious QuickTime media files triggering DirectX quartz.dll. Looks for shell processes spawned from media file contexts and unexpected quartz.dll modifications.
Data Sources
Required Tables
False Positives
- Legitimate QuickTime or media player software updating quartz.dll during patching
- Video editing applications that legitimately invoke shell processes during export
- Software installation routines that modify DirectX components
- Antivirus or EDR tools scanning media files and spawning child processes
Sigma rule & cross-platform mapping
The detection logic for Microsoft DirectX NULL Byte Overwrite Vulnerability (CVE-2009-1537) (CVE-2009-1537) 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:
Platform-specific guides for CVE-2009-1537
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.
- Test 1Simulate QuickTime File Opening via Windows Media Player
Expected signal: Sysmon Event ID 1 showing wmplayer.exe process creation with .mov file argument; DeviceProcessEvents in Defender for Endpoint capturing InitiatingProcessFileName=wmplayer.exe
- Test 2Simulate Shell Process Spawn from Media Player Context
Expected signal: Sysmon Event ID 1 with ParentImage containing wmplayer.exe and Image=cmd.exe; command line output file created in C:\AtomicTests\
- Test 3Simulate quartz.dll File Modification Event
Expected signal: Sysmon Event ID 11 (FileCreate) with TargetFilename matching quartz.dll pattern; DeviceFileEvents showing FileName=quartz.dll with ActionType=FileCreated
Response Playbook
Triage
- Confirm the affected host has not applied MS09-028 by checking the patch level: query WSUS/SCCM or run 'wmic qfe list' and look for KB971633 / KB971634 / KB971961.
- Identify the media file that triggered the alert — capture the full path, hash (SHA-256), and originating download source (browser history, email attachment, network share).
- Determine the user context under which quartz.dll was loaded and whether the triggering process ran with elevated privileges.
Containment
- Isolate the affected endpoint from the network immediately via EDR network containment or manual VLAN reassignment to prevent lateral movement or C2 callback.
- Block inbound QuickTime media file types (.mov, .qt, .mqv) at the email gateway and web proxy to prevent further delivery of exploit payloads across the environment.
Evidence Collection
- Collect a memory dump of the affected system (e.g., using WinPmem or CrowdStrike Real Time Response) to capture in-memory artifacts from the NULL byte overwrite exploitation.
- Preserve the malicious QuickTime media file in an isolated evidence store — hash and submit to sandbox for dynamic analysis to enumerate second-stage payloads.
Escalation Criteria
- ! Escalate to Incident Response if lateral movement is detected — e.g., SMB enumeration, PsExec usage, or new scheduled tasks created after the initial process anomaly.
- ! Escalate if the spawned process establishes an outbound connection to an external IP, indicating successful code execution and potential C2 communication.
Investigation Guide
Forensic Artifacts
- >
Prefetch files for wmplayer.exe or iexplore.exe indicating recent execution with QuickTime file arguments (%SystemRoot%\Prefetch\) - >
Windows Event Log entries (Event ID 4688 / Sysmon Event ID 1) showing child process creation from media player parent with unexpected command lines - >
File system artifacts of the dropped QuickTime payload file in %TEMP%, %APPDATA%, or browser download directories - >
Registry run keys or scheduled tasks created by any post-exploitation payload dropped after quartz.dll exploitation
Tuning Guidance
This rule generates the most noise in environments with active media production workflows where QuickTime files are processed routinely. Tune by adding allowlists for known media workstation hostnames and verified media pipeline service accounts. Consider scoping the quartz.dll file modification detection to exclude changes made by SYSTEM during Windows Update hours (typically 03:00–05:00 local). For the process chain detections, add a join against network connection events (DeviceNetworkEvents) to elevate confidence — a shell process that immediately establishes an external connection is near-certain exploitation.
Hunting Queries
Threat hunt for historical instances of shell processes spawned from media player parents across the environment over the last 30 days, helping identify hosts that may have been compromised via CVE-2009-1537 prior to detection rule deployment.
DeviceProcessEvents
| where TimeGenerated > ago(30d)
| where InitiatingProcessFileName in~ ("wmplayer.exe", "mplayer2.exe", "iexplore.exe", "moviemk.exe")
| where FileName in~ ("cmd.exe", "powershell.exe", "wscript.exe", "cscript.exe", "mshta.exe", "rundll32.exe")
| summarize count(), makeset(ProcessCommandLine) by DeviceName, InitiatingProcessFileName, FileName
| sort by count_ desc index=windows sourcetype=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational EventCode=1
| eval parent=lower(ParentImage), child=lower(Image)
| where match(parent, "(wmplayer|mplayer2|iexplore|moviemk)")
AND match(child, "(cmd|powershell|wscript|cscript|mshta|rundll32)")
| stats count by host, user, ParentImage, Image, CommandLine
| sort - count Atomic Red Team Tests
Simulate the delivery mechanism by opening a benign .mov file with wmplayer.exe to validate that process creation telemetry is captured for the parent-child chain monitored by this detection.
Command
Start-Process -FilePath 'C:\Program Files\Windows Media Player\wmplayer.exe' -ArgumentList 'C:\AtomicTests\test_payload.mov' Cleanup
Stop-Process -Name wmplayer -Force -ErrorAction SilentlyContinue; Remove-Item 'C:\AtomicTests\test_payload.mov' -Force -ErrorAction SilentlyContinue Expected Telemetry
Sysmon Event ID 1 showing wmplayer.exe process creation with .mov file argument; DeviceProcessEvents in Defender for Endpoint capturing InitiatingProcessFileName=wmplayer.exe
Expected Detection
Should trigger the media player QuickTime file processing indicator in KQL and SPL queries
Directly simulate the post-exploitation process chain by launching cmd.exe with wmplayer.exe as the parent process using WMI, mimicking the shell spawn that occurs after successful NULL byte overwrite exploitation.
Command
$wmi = [wmiclass]'win32_process'; $startup = [wmiclass]'win32_processstartup'; $startup.Properties['ShowWindow'].Value = 0; $wmi.Create('cmd.exe /c whoami > C:\AtomicTests\cve_2009_1537_test.txt', $null, $startup) Cleanup
Remove-Item 'C:\AtomicTests\cve_2009_1537_test.txt' -Force -ErrorAction SilentlyContinue Expected Telemetry
Sysmon Event ID 1 with ParentImage containing wmplayer.exe and Image=cmd.exe; command line output file created in C:\AtomicTests\
Expected Detection
Should trigger parent-child shell spawn detection across KQL, SPL, and Elastic EQL queries
Create a benign file named quartz.dll in a temp directory to simulate the file write telemetry that would be generated if an attacker overwrote the legitimate DirectX DLL during exploitation.
Command
New-Item -Path 'C:\AtomicTests\quartz.dll' -ItemType File -Force; Set-Content -Path 'C:\AtomicTests\quartz.dll' -Value 'ATOMIC_TEST_CVE_2009_1537' Cleanup
Remove-Item 'C:\AtomicTests\quartz.dll' -Force -ErrorAction SilentlyContinue Expected Telemetry
Sysmon Event ID 11 (FileCreate) with TargetFilename matching quartz.dll pattern; DeviceFileEvents showing FileName=quartz.dll with ActionType=FileCreated
Expected Detection
Should trigger the quartz.dll file event detection in KQL, SPL, and EQL queries; Chronicle YARA-L FILE_MODIFICATION event should fire