Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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
287102há 3 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)

// 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)

// 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/:

build.bat

Terminal 1:

vulnerable_service.exe

Terminal 2:

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
powershell -ExecutionPolicy Bypass .\detection\etw_wpn_monitor.ps1
Baixar ferramenta