CVE-2020-0986 Overview
CVE-2020-0986 is a privilege escalation vulnerability in the Windows kernel that occurs when the kernel fails to properly handle objects in memory. This vulnerability specifically affects the splWOW64 component, which is responsible for handling 32-bit print operations on 64-bit Windows systems. An attacker who successfully exploits this vulnerability can execute arbitrary code with elevated privileges, potentially gaining full control over the affected system.
Critical Impact
This vulnerability is listed in CISA's Known Exploited Vulnerabilities (KEV) catalog and has been actively exploited in the wild. Attackers with local access can leverage this flaw to escalate privileges from a low-privileged user to SYSTEM level access, enabling complete system compromise.
Affected Products
- Microsoft Windows 10 (versions 1507, 1607, 1709, 1803, 1809, 1903, 1909, 2004)
- Microsoft Windows 8.1 and Windows RT 8.1
- Microsoft Windows Server 2012, 2012 R2, 2016, and 2019
- Microsoft Windows Server Semi-Annual Channel (1803, 1903, 1909, 2004)
Discovery Timeline
- June 9, 2020 - CVE-2020-0986 published to NVD
- October 29, 2025 - Last updated in NVD database
Technical Details for CVE-2020-0986
Vulnerability Analysis
The vulnerability resides in the Windows Print Spooler's splWOW64 component, which provides a compatibility layer for 32-bit printing applications running on 64-bit Windows systems. The flaw is classified as CWE-787 (Out-of-bounds Write), indicating that the kernel improperly validates memory boundaries when handling specific objects.
When the splWOW64 service processes certain memory operations, it fails to adequately validate pointers passed between user-mode and kernel-mode. This allows an attacker to craft malicious input that corrupts kernel memory structures, ultimately enabling arbitrary code execution in the kernel context.
The vulnerability requires local access to exploit, meaning an attacker must already have the ability to run code on the target system. However, once exploited, it provides complete system compromise by elevating privileges to SYSTEM level. This makes it particularly dangerous in post-exploitation scenarios or when chained with other vulnerabilities that provide initial access.
Root Cause
The root cause of CVE-2020-0986 is improper validation of memory object pointers within the splWOW64 user-mode to kernel-mode transition. When the Print Spooler processes requests through the WOW64 compatibility layer, it fails to properly sanitize memory addresses, allowing an attacker to specify arbitrary memory locations for write operations. This out-of-bounds write condition enables corruption of critical kernel data structures.
Attack Vector
The attack vector is local, requiring the attacker to execute code on the target system with low privileges. The exploitation flow involves:
- An attacker with local user access creates a specially crafted application that interacts with the Print Spooler service
- The malicious application sends crafted requests to the splWOW64 service containing controlled memory pointers
- The service processes these requests without proper validation, leading to an out-of-bounds write condition
- The attacker leverages this memory corruption to overwrite kernel memory structures
- By carefully controlling the corrupted data, the attacker achieves arbitrary code execution in kernel mode
- The attacker gains SYSTEM-level privileges on the compromised host
The exploitation does not require user interaction, making it suitable for automated attack chains. For technical details on the exploitation mechanism, refer to the Packet Storm Exploit Report.
Detection Methods for CVE-2020-0986
Indicators of Compromise
- Unusual process creation or privilege escalation events originating from the Print Spooler service (spoolsv.exe)
- Suspicious API calls or memory operations targeting splWOW64 from untrusted processes
- Unexpected SYSTEM-level processes spawned from low-privileged user sessions
- Anomalous kernel memory access patterns detected by endpoint protection solutions
Detection Strategies
- Monitor for privilege escalation attempts involving the Print Spooler service using Endpoint Detection and Response (EDR) solutions
- Implement kernel-level monitoring to detect out-of-bounds write attempts in protected memory regions
- Deploy behavioral analysis to identify unexpected process chains where Print Spooler spawns high-privilege processes
- Configure audit policies to log Print Spooler service access and modification events
Monitoring Recommendations
- Enable Windows Security Event logging for privilege use (Event ID 4672) and process creation (Event ID 4688)
- Configure SentinelOne or similar EDR platforms to alert on suspicious Print Spooler behavior and memory manipulation
- Monitor for exploitation attempts using SIEM rules that correlate Print Spooler activity with privilege escalation patterns
- Regularly review patch compliance across all Windows systems to ensure CVE-2020-0986 mitigations are applied
How to Mitigate CVE-2020-0986
Immediate Actions Required
- Apply Microsoft security updates immediately as this vulnerability is actively exploited in the wild
- Prioritize patching based on asset criticality and exposure, focusing on systems accessible to untrusted users
- Consider disabling the Print Spooler service on systems where printing is not required
- Implement application control policies to restrict untrusted code execution on sensitive systems
Patch Information
Microsoft has released security updates to address CVE-2020-0986 as part of the June 2020 Patch Tuesday release. Organizations should apply the appropriate cumulative updates for their Windows versions. For detailed patch information and download links, refer to the Microsoft Security Advisory CVE-2020-0986.
Given that this vulnerability is listed in CISA's Known Exploited Vulnerabilities catalog, federal agencies and organizations following CISA guidance should treat remediation as a priority.
Workarounds
- Disable the Print Spooler service on domain controllers and systems that do not require print functionality using Group Policy or PowerShell
- Restrict Print Spooler service access to trusted users only through service-level permissions
- Implement network segmentation to limit lateral movement in case of compromise
- Deploy endpoint protection with behavioral monitoring to detect and block exploitation attempts
# Disable Print Spooler service on systems where printing is not required
Stop-Service -Name Spooler -Force
Set-Service -Name Spooler -StartupType Disabled
# Verify service status
Get-Service -Name Spooler | Select-Object Name, Status, StartType
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


