Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-42978-PoC-Research — CVE-2026-42978 — Condição de corrida Use-After-Free nas Notificações de Push do Windows (WpnService). Diff de patch, análise de causa raiz, laboratório TOCTOU, regras de detecção Sysmon/ETW. | Kitploit
Ferramentas/GitHubGitHub/grizzzer/cve-2026-42978-poc-research
Análise de VulnerabilidadesExploraçãoAnálise ForenseAnálise de BináriosAprendizado e EducaçãoResposta a IncidentesLabs e Prática
GitHubgrizzzer/cve-2026-42978-poc-research

CVE-2026-42978-PoC-Research

CVE-2026-42978 — Condição de corrida Use-After-Free nas Notificações de Push do Windows (WpnService). Diff de patch, análise de causa raiz, laboratório TOCTOU, regras de detecção Sysmon/ETW.

Ver Repositório
2872há 2 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-42978 PoC & Pesquisa — Uso Após Liberação no Windows Push Notifications

Condição de corrida no serviço Windows Push Notifications (WpnService), que é executado como NT AUTHORITY\SYSTEM. Um atacante com acesso local pode acionar um uso após liberação durante o desligamento da plataforma e potencialmente elevar privilégios.

  • CVE: CVE-2026-42978
  • BDU: BDU:2026-08249
  • Tipo: CWE-362 (Condição de Corrida), Uso Após Liberação
  • CVSS: 7.8 (Alta)
  • Afetados: Windows 10, Windows 11, Windows Server 2016/2019/2022/2025
  • Corrigido: 10 de junho de 2026 (Patch Tuesday)
  • Status: Corrigido. Este repositório é apenas para pesquisa defensiva.

Como Funciona

WpnService é o serviço Windows Push Notification. Ele é executado na sessão 0 como LocalSystem dentro de svchost.exe -k netsvcs -p. Toda a entrega de notificações — toasts, tiles, badges — passa por ele.

A vulnerabilidade está em wpncore.dll, especificamente na classe PresentationEndpointFacade. Essa classe encapsula todas as chamadas da API de notificações (entrega de toasts, gerenciamento de sessão, consultas de configurações etc.) e delega para PresentationEndpointImpl.

O bug: durante o desligamento da plataforma, o objeto NotificationPlatform é destruído. Mas os métodos da Facade não verificam se o desligamento está em andamento — eles obtêm um ponteiro para a plataforma, a plataforma é liberada pela thread de desligamento e a Facade usa um ponteiro pendente. Uma clássica condição de corrida de uso após liberação.

Código vulnerável (decompilado do wpncore.dll build 26100.8521)

root@kitploit:~
// PresentationEndpointFacade::ToastUnblockAll — VULNERABLE
long ToastUnblockAll(PresentationEndpointFacade *this) {
    // No lock. No shutdown check. Just grab the platform pointer and go.
    NotificationPlatformHandle::Get(this + 0x50);
    if (platform == NULL) Throw_Hr(...);
    // If shutdown frees the platform right here — use-after-free
    return PresentationEndpointImpl::UnblockToastsForEachApp(...);
}

Desmontagem no Ghidra do ToastUnblockAll vulnerável
Ghidra: ToastUnblockAll vulnerável — nenhuma sincronização antes de acessar a plataforma

Código corrigido (wpncore.dll build 26100.8655)

root@kitploit:~
// PresentationEndpointFacade::ToastUnblockAll — PATCHED
long ToastUnblockAll(PresentationEndpointFacade *this) {
    if (Feature_4097557817::IsEnabled()) {
        AcquireSRWLockShared(&Wns::s_platformLock);    // 1. shared lock
        if (Wns::s_platformShutdown)                    // 2. shutdown guard
            Throw_Hr(E_APPLICATION_EXITING);
        NotificationPlatformHandle::Get(this + 0x50);
        // ... do work ...
        ReleaseSRWLockShared(&Wns::s_platformLock);     // 3. RAII release
    } else {
        // feature flag off — old behavior preserved for rollback
    }
}

A correção adiciona três coisas:

  1. AcquireSRWLockShared — bloqueio compartilhado de leitores-gravadores. Várias chamadas de API podem ser executadas simultaneamente, mas o desligamento adquire um bloqueio exclusivo e bloqueia todas elas.
  2. Verificação de s_platformShutdown — se o desligamento já começou, saia imediatamente com E_APPLICATION_EXITING.
  3. Liberação do bloqueio via RAII — o bloqueio é mantido em um wrapper wil::unique_storage, portanto é liberado mesmo se uma exceção for lançada.

O feature flag Feature_4097557817 serve para implantação em fases via WIL (Windows Internal Library). Ele permite que a Microsoft habilite a correção gradualmente e a desative se algo quebrar.

Escala da correção

Este não é um bug de uma única função. O mesmo padrão de bloqueio+proteção foi adicionado a 49 funções em wpncore.dll:

CategoriaFunções
Operações de ToastToastUnblockAll, ToastCreateSession, ToastCloseSession, ToastRequestAllNotifications, ToastSuppress
Operações de TileTileCreateSession, TileCloseSession, TileRequestResourceForeground
RegistroRegisterApplication, UnregisterApplication, RegisterHandler, UpdateRegistration, RegisterSystemApplication
ConfiguraçõesChangeAppSetting, QueryAppSetting, QueryGlobalSetting, RegisterSettingCallback, UnregisterSettingCallback
EntregaDeliver, GetPayloadForNotificationId, Submit, PostScheduledNotification
ConsultasGetRegisteredHandler, GetRegisteredHandlersFromParent, GetSettingsFromHandler, GetAssetsFromHandler

Todos os métodos PresentationEndpointFacade::* que tocam a plataforma receberam a mesma correção. Os métodos PresentationEndpointImpl::* subjacentes não foram alterados — o problema estava apenas na camada de facade.

Impacto

O WpnService é executado como SYSTEM. Se a corrida for vencida:

  1. A memória do objeto NotificationPlatform liberado pode ser recuperada e preenchida com dados controlados pelo atacante (heap spray)
  2. Uma chamada subsequente a um método virtual no ponteiro pendente salta para um endereço controlado pelo atacante
  3. Execução de código como NT AUTHORITY\SYSTEM

A exploração real — heap spray, sequestro de vtable, obtenção de execução de código — está fora do escopo desta pesquisa. Este repositório foca em entender a causa raiz e construir detecção.

Laboratório de Condição de Corrida TOCTOU

O diretório lab/ contém uma demonstração C independente que reproduz a classe de bug sem tocar no WpnService. Ela usa uma arquitetura de pipe nomeado + memória compartilhada semelhante à do WpnService.

Como funciona:

  • vulnerable_service.exe lê um comprimento de mensagem da memória compartilhada, valida, dorme por 50ms e então lê o comprimento novamente (double-fetch).
  • race_attacker.exe define um comprimento seguro, aciona o serviço e imediatamente altera a memória compartilhada para um valor de estouro.
  • Se o timing estiver certo, o serviço lê o valor de estouro na segunda leitura — estouro de buffer.

Execute vulnerable_service.exe --patched para ver a correção: captura de leitura única em uma variável local.

Demonstração de condição de corrida TOCTOU
Esquerda: serviço detecta corrida (5/5). Direita: atacante alterando valores da memória compartilhada.

Compilar e executar

Requer GCC (MinGW). A partir do diretório lab/:

root@kitploit:~
build.bat

Terminal 1:

root@kitploit:~
vulnerable_service.exe

Terminal 2:

root@kitploit:~
race_attacker.exe 5

Depois compare com vulnerable_service.exe --patched — mesmo ataque, zero corridas detectadas.

Detecção

Monitor ETW (detection/etw_wpn_monitor.ps1)

Script PowerShell que verifica 7 indicadores:

  1. Estado e PID do WpnService
  2. Histórico de falhas/reinicializações (exploração malsucedida deixa rastros de falha)
  3. Detecção de rajadas no log de eventos do Push Notifications Platform
  4. Pipes nomeados relacionados a WPN
  5. Verificação de patch (verifica a data do wpncore.dll)
  6. Processos com módulos WPN carregados
  7. Auditoria de symlinks/junctions nos caminhos de dados de notificação
root@kitploit:~
powershell -ExecutionPolicy Bypass .\detection\etw_wpn_monitor.ps1

Saída do monitor ETW
Monitor ETW: WpnService em execução (PID 6432), sem falhas, 100 eventos/hora, sistema corrigido

Regras do Sysmon (detection/sysmon_wpn_race_detect.xml)

Seis grupos de regras para monitoramento contínuo:

RegraO que ela captura
WPN_EoP_ChildProcesssvchost (netsvcs) gerando cmd/powershell/wscript
WPN_PipeAccessConexões a pipes nomeados relacionados a WPN
WPN_FileCreationCriação de arquivos nos diretórios de dados de notificação
WPN_RegistryTamperingGravações no registro em chaves do PushNotifications
WPN_ProcessAccessHandles PROCESS_ALL_ACCESS para svchost
WPN_ThreadInjectionCreateRemoteThread em svchost

Instalação:

root@kitploit:~
sysmon64.exe -accepteula -i detection\sysmon_wpn_race_detect.xml

Visualizador de Eventos

A atividade do WpnService é registrada em Microsoft-Windows-PushNotifications-Platform/Operational. Principais eventos a observar:

  • Evento 1225: comandos WPN em nível de transporte
  • Rajadas rápidas de eventos (>20/min) — possível spray de corrida
  • Eventos de Erro/Crítico — possível falha de exploração malsucedida

Evento WPN no Visualizador de Eventos
Visualizador de Eventos: log operacional do PushNotifications-Platform, ID do evento 1225

Diffing de Patch

Principais descobertas do diff de wpncore.dll:

  • A seção .text cresceu 18.432 bytes (novo código de bloqueio/proteção em 49 funções)
  • A seção .data cresceu 96 bytes (novos globais Wns::s_platformLock e Wns::s_platformShutdown)
  • Nenhum novo import foi adicionado — AcquireSRWLockShared/ReleaseSRWLockShared já estavam na tabela de importação
  • Novo destruidor RAII: ~unique_any_t<...ReleaseSRWLockExclusive...> confirma a adição do wrapper de bloqueio

Relatórios completos estão em reports/.

CVEs Relacionados

O CVE-2026-42978 faz parte de um conjunto de 9 vulnerabilidades relacionadas a WPN corrigidas em junho de 2026:

CVETipoCWE
CVE-2026-42977EoPCondição de Corrida
CVE-2026-42978EoPCondição de Corrida
CVE-2026-42979EoPCondição de Corrida
CVE-2026-42991EoPCondição de Corrida
CVE-2026-42969Divulgação de InformaçõesCondição de Corrida
CVE-2026-42970Divulgação de InformaçõesCondição de Corrida
CVE-2026-42973Divulgação de InformaçõesCondição de Corrida
CVE-2026-26167EoP—
CVE-2026-32160EoP—

Estrutura do Projeto

root@kitploit:~
CVE-2026-42978/
├── README.md
├── lab/
│   ├── vulnerable_service.c    # mock WpnService with double-fetch bug
│   ├── race_attacker.c         # attacker that exploits the double-fetch
│   └── build.bat               # GCC build script
├── detection/
│   ├── etw_wpn_monitor.ps1     # 7-check PowerShell detector
│   └── sysmon_wpn_race_detect.xml  # Sysmon rule config
├── reports/
│   ├── PE_DIFF_REPORT.txt      # PE section/import diff results
│   └── FUNCTION_DIFF_REPORT.txt # function-level diff (49 changed)
└── img/                        # screenshots for this README

Requisitos

  • Windows 10/11 (para executar o laboratório e as ferramentas de detecção)
  • GCC / MinGW (para compilar o laboratório em C)
  • Python 3.9+ (para scripts de diff)
  • Ghidra 11+ (para decompilação headless, opcional)
  • Sysmon (para regras de detecção, opcional)

Aviso Legal

Este projeto é para pesquisa de segurança defensiva. A vulnerabilidade foi corrigida. Nenhum código de exploit armado está incluído. O laboratório TOCTOU demonstra a classe de bug em um serviço simulado independente — ele não interage com o WpnService nem com qualquer componente do sistema.

Certifique-se de que seu Windows esteja atualizado. Se etw_wpn_monitor.ps1 informar que seu sistema não está corrigido — instale a atualização cumulativa de junho de 2026 imediatamente.

Contribuindo

Se você tiver algo a acrescentar — melhores regras de detecção, PoC de exploit, uma sessão de Version Tracking no Ghidra, assinaturas YARA ou análise dos CVEs relacionados deste conjunto — PRs são bem-vindos.

Ideias para contribuições:

  • Regras Sigma para o lado SIEM da detecção
  • Análise mais aprofundada de CVE-2026-42977/42979/42991 (mesma família de corrida do WPN)
  • Análise de heap baseada em WinDbg do uso após liberação
  • Monitor ETW aprimorado com detecção de rajadas ALPC em tempo real
  • Recomendações de regras do Windows Defender ASR

Abra uma issue se tiver dúvidas ou quiser discutir a pesquisa.

Licença

MIT

Baixar ferramenta