CVE-2026-66804: registro COM pendente leva a SYSTEM no Windows

James Forshaw, do Google Project Zero, analisou CVE-2026-66804 — uma LPE no Windows causada por uma correção incompleta para a anterior CVE-2026-50343 (Dark Elevator).
O sistema manteve um registro COM CrossDevice com o CLSID {E9F83CF2-E0C0-4CA7-AF01-E90C70BEF496}, apontando para um %PROGRAMDATA%\CrossDevice\CrossDevice.Streaming.Source.dll ausente. Como usuários comuns podem criar diretórios em C:\ProgramData, um atacante pode plantar sua própria DLL no caminho esperado.
O principal desafio é fazer um processo privilegiado carregá-la. Forshaw usou marshaling COM personalizado: um objeto que implementa IMarshal pode especificar um CLSID arbitrário para usar durante o unmarshaling, fazendo com que o runtime COM procure o servidor in-process correspondente e carregue sua DLL. A exploração, portanto, exige um servidor COM privilegiado que não desabilite o marshaling personalizado. Forshaw encontrou um no Shell Create Object Handler, hospedado em dllhost.exe como NT AUTHORITY\SYSTEM com CustomMarshalAllowed=True.
Um usuário comum pode iniciar o servidor privilegiado por meio da tarefa agendada \Microsoft\Windows\Shell\CreateObjectTask, após criar o evento global ShellCreateObjectTaskReadyEvent. O atacante pode então passar um objeto COM especialmente criado para a interface ICreateObject. Durante o unmarshaling, o COM resolve o CLSID CrossDevice e carrega a DLL plantada de %PROGRAMDATA% no processo SYSTEM, resultando em escalação de privilégios.
Forshaw publicou um exploit totalmente funcional. Ele também incluiu um script PowerShell usando OleViewDotNet e NtObjectManager para identificar outras classes COM in-process registradas cujas DLLs não podem ser encontradas por LoadLibrary. Os caminhos resultantes devem então ser verificados manualmente para determinar se um atacante pode plantar uma DLL ali.
Forshaw observa que a mesma técnica de exploração pode simplificar a exploração de outros registros COM pendentes e também pode ser aplicada a unmarshalers COM personalizados com bugs.
Vulnerabilidades
7.8
CVE-2026-50343
7.8
CVE-2026-66804
Fornecedor
Microsoft
Google
Produto
Com
Createobjecttask
Crossdevice
Crossdevice.Streaming.Source.Dll
Dllhost.Exe
Icreateobject
Mais