Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-42978-PoC-Research — CVE-2026-42978 — Condición de carrera de Use-After-Free en Notificaciones Push de Windows (WpnService). Diff de parche, análisis de causa raíz, laboratorio TOCTOU, reglas de detección de Sysmon/ETW. | Kitploit
Herramientas/GitHubGitHub/grizzzer/cve-2026-42978-poc-research
Análisis de VulnerabilidadesExplotaciónAnálisis ForenseAnálisis de BinariosAprendizaje y EducaciónRespuesta a IncidentesLabs y Práctica
GitHubgrizzzer/cve-2026-42978-poc-research

CVE-2026-42978-PoC-Research

CVE-2026-42978 — Condición de carrera de Use-After-Free en Notificaciones Push de Windows (WpnService). Diff de parche, análisis de causa raíz, laboratorio TOCTOU, reglas de detección de Sysmon/ETW.

Ver Repositorio
287102hace 3 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-42978 PoC e Investigación — Use-After-Free en Notificaciones Push de Windows

Condición de carrera en el servicio de Notificaciones Push de Windows (WpnService) que se ejecuta como NT AUTHORITY\SYSTEM. Un atacante con acceso local puede desencadenar un use-after-free durante el apagado de la plataforma y potencialmente elevar privilegios.

  • CVE: CVE-2026-42978
  • BDU: BDU:2026-08249
  • Tipo: CWE-362 (Condición de Carrera), Use-After-Free
  • CVSS: 7.8 (Alta)
  • Afectado: Windows 10, Windows 11, Windows Server 2016/2019/2022/2025
  • Corregido: 10 de junio de 2026 (Patch Tuesday)
  • Estado: Corregido. Este repositorio es solo para investigación defensiva.

Cómo Funciona

WpnService es el servicio de Notificaciones Push de Windows. Se ejecuta en la sesión 0 como LocalSystem dentro de svchost.exe -k netsvcs -p. Toda la entrega de notificaciones — toasts, mosaicos, insignias — pasa por él.

La vulnerabilidad reside en wpncore.dll, específicamente en la clase PresentationEndpointFacade. Esta clase encapsula todas las llamadas a la API de notificaciones (entrega de toasts, gestión de sesiones, consultas de configuración, etc.) y delega en PresentationEndpointImpl.

El error: durante el apagado de la plataforma, el objeto NotificationPlatform se destruye. Pero los métodos de Facade no verifican si el apagado está en progreso — toman un puntero a la plataforma, la plataforma es liberada por el hilo de apagado, y Facade usa un puntero colgante. Clásica condición de carrera de use-after-free.

Código vulnerable (descompilado de 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(...);
}

Desensamblado en Ghidra de ToastUnblockAll vulnerable
Ghidra: ToastUnblockAll vulnerable — sin sincronización antes de acceder a la plataforma

Código corregido (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
    }
}

La corrección añade tres cosas:

  1. AcquireSRWLockShared — bloqueo compartido de lectores-escritores. Múltiples llamadas API pueden ejecutarse concurrentemente, pero el apagado toma un bloqueo exclusivo y las bloquea a todas.
  2. Verificación de s_platformShutdown — si el apagado ya comenzó, salir inmediatamente con E_APPLICATION_EXITING.
  3. Liberación RAII del bloqueo — el bloqueo se mantiene en un envoltorio wil::unique_storage, por lo que se libera incluso si se lanza una excepción.

El indicador de funcionalidad Feature_4097557817 es para un despliegue gradual mediante WIL (Windows Internal Library). Permite a Microsoft habilitar la corrección gradualmente y deshabilitarla si algo falla.

Escala de la corrección

No es un error de una sola función. El mismo patrón de bloqueo+guardia se añadió a 49 funciones en wpncore.dll:

CategoríaFunciones
Operaciones de ToastToastUnblockAll, ToastCreateSession, ToastCloseSession, ToastRequestAllNotifications, ToastSuppress
Operaciones de TileTileCreateSession, TileCloseSession, TileRequestResourceForeground
RegistroRegisterApplication, UnregisterApplication, RegisterHandler, UpdateRegistration, RegisterSystemApplication
ConfiguraciónChangeAppSetting, QueryAppSetting, QueryGlobalSetting, RegisterSettingCallback, UnregisterSettingCallback
EntregaDeliver, GetPayloadForNotificationId, Submit, PostScheduledNotification
ConsultasGetRegisteredHandler, GetRegisteredHandlersFromParent, GetSettingsFromHandler, GetAssetsFromHandler

Cada método PresentationEndpointFacade::* que toca la plataforma recibió la misma corrección. Los métodos PresentationEndpointImpl::* subyacentes no se modificaron — el problema era solo en la capa de fachada.

Impacto

WpnService se ejecuta como SYSTEM. Si se gana la carrera:

  1. La memoria del objeto NotificationPlatform liberada puede ser reclamada y llenada con datos controlados por el atacante (heap spray)
  2. Una llamada a un método virtual posterior sobre el puntero colgante salta a una dirección controlada por el atacante
  3. Ejecución de código como NT AUTHORITY\SYSTEM

La explotación real — heap spray, secuestro de vtable, lograr ejecución de código — está fuera del alcance de esta investigación. Este repositorio se centra en comprender la causa raíz y construir detección.

Laboratorio de Condición de Carrera TOCTOU

El directorio lab/ contiene una demostración independiente en C que reproduce la clase de error sin tocar WpnService. Utiliza una arquitectura de tubería con nombre + memoria compartida similar a WpnService.

Cómo funciona:

  • vulnerable_service.exe lee una longitud de mensaje desde la memoria compartida, la valida, duerme 50ms, luego lee la longitud nuevamente (doble lectura).
  • race_attacker.exe establece una longitud segura, desencadena el servicio, luego inmediatamente cambia la memoria compartida a un valor de desbordamiento.
  • Si el momento es el adecuado, el servicio lee el valor de desbordamiento en la segunda lectura — desbordamiento de búfer.

Ejecute vulnerable_service.exe --patched para ver la corrección: captura de una sola lectura en una variable local.

Demostración de condición de carrera TOCTOU
Izquierda: el servicio detecta la carrera (5/5). Derecha: atacante cambiando valores de memoria compartida.

Compilar y ejecutar

Requiere GCC (MinGW). Desde el directorio lab/:

build.bat

Terminal 1:

vulnerable_service.exe

Terminal 2:

race_attacker.exe 5

Luego compare con vulnerable_service.exe --patched — mismo ataque, cero carreras detectadas.

Detección

Monitor ETW (detection/etw_wpn_monitor.ps1)

Script de PowerShell que verifica 7 indicadores:

  1. Estado y PID de WpnService
  2. Historial de fallos/reinicios (la explotación fallida deja rastros de bloqueo)
  3. Detección de ráfagas en el registro de eventos de la plataforma de notificaciones push
  4. Tuberías con nombre relacionadas con WPN
  5. Verificación de parches (comprueba la fecha de wpncore.dll)
  6. Procesos con módulos WPN cargados
  7. Auditoría de symlinks/junctions en rutas de datos de notificaciones
powershell -ExecutionPolicy Bypass .\detection\etw_wpn_monitor.ps1
Descargar herramienta