Skip to content
KitploitKITPLOIT
HerramientasBlog
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
2872hace 2 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)

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(...);
}

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)

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
    }
}

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

root@kitploit:~
build.bat

Terminal 1:

root@kitploit:~
vulnerable_service.exe

Terminal 2:

root@kitploit:~
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
root@kitploit:~
powershell -ExecutionPolicy Bypass .\detection\etw_wpn_monitor.ps1

Salida del monitor ETW
Monitor ETW: WpnService ejecutándose (PID 6432), sin fallos, 100 eventos/hora, sistema parcheado

Reglas de Sysmon (detection/sysmon_wpn_race_detect.xml)

Seis grupos de reglas para monitoreo continuo:

ReglaQué captura
WPN_EoP_ChildProcesssvchost (netsvcs) generando cmd/powershell/wscript
WPN_PipeAccessConexiones a tuberías con nombre relacionadas con WPN
WPN_FileCreationCreación de archivos en directorios de datos de notificaciones
WPN_RegistryTamperingEscrituras en el registro en claves de PushNotifications
WPN_ProcessAccessHandles PROCESS_ALL_ACCESS hacia svchost
WPN_ThreadInjectionCreateRemoteThread hacia svchost

Instalación:

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

Visor de Eventos

La actividad de WpnService se registra en Microsoft-Windows-PushNotifications-Platform/Operational. Eventos clave a observar:

  • Evento 1225: comandos WPN a nivel de transporte
  • Ráfagas rápidas de eventos (>20/min) — posible spray de carrera
  • Eventos de Error/Crítico — posible bloqueo por explotación fallida

Evento WPN en el Visor de Eventos
Visor de Eventos: registro operativo de PushNotifications-Platform, ID de evento 1225

Diff de Parches

Hallazgos clave al comparar wpncore.dll:

  • La sección .text creció en 18,432 bytes (nuevo código de bloqueo/guardia en 49 funciones)
  • La sección .data creció en 96 bytes (nuevas globales Wns::s_platformLock y Wns::s_platformShutdown)
  • No se añadieron nuevas importaciones — AcquireSRWLockShared/ReleaseSRWLockShared ya estaban en la tabla de importaciones
  • Nuevo destructor RAII: ~unique_any_t<...ReleaseSRWLockExclusive...> confirma la adición del envoltorio de bloqueo

Los informes completos están en reports/.

CVEs Relacionados

CVE-2026-42978 es parte de un grupo de 9 vulnerabilidades relacionadas con WPN corregidas en junio de 2026:

CVETipoCWE
CVE-2026-42977EoPCondición de Carrera
CVE-2026-42978EoPCondición de Carrera
CVE-2026-42979EoPCondición de Carrera
CVE-2026-42991EoPCondición de Carrera
CVE-2026-42969Divulgación de InformaciónCondición de Carrera
CVE-2026-42970Divulgación de InformaciónCondición de Carrera
CVE-2026-42973Divulgación de InformaciónCondición de Carrera
CVE-2026-26167EoP—
CVE-2026-32160EoP—

Estructura del Proyecto

root@kitploit:~
CVE-2026-42978/
├── README.md
├── lab/
│   ├── vulnerable_service.c    # servicio WpnService simulado con error de doble lectura
│   ├── race_attacker.c         # atacante que explota la doble lectura
│   └── build.bat               # script de compilación GCC
├── detection/
│   ├── etw_wpn_monitor.ps1     # detector PowerShell de 7 comprobaciones
│   └── sysmon_wpn_race_detect.xml  # configuración de reglas de Sysmon
├── reports/
│   ├── PE_DIFF_REPORT.txt      # resultados de diff de secciones/importaciones PE
│   └── FUNCTION_DIFF_REPORT.txt # diff a nivel de funciones (49 cambiadas)
└── img/                        # capturas de pantalla para este README

Requisitos

  • Windows 10/11 (para ejecutar el laboratorio y las herramientas de detección)
  • GCC / MinGW (para compilar el laboratorio en C)
  • Python 3.9+ (para scripts de diff)
  • Ghidra 11+ (para descompilación headless, opcional)
  • Sysmon (para reglas de detección, opcional)

Descargo de responsabilidad

Este proyecto es para investigación defensiva de seguridad. La vulnerabilidad está corregida. No se incluye código de explotación armado. El laboratorio TOCTOU demuestra la clase de error en un servicio simulado independiente — no interactúa con WpnService ni con ningún componente del sistema.

Asegúrese de que su Windows esté actualizado. Si etw_wpn_monitor.ps1 reporta su sistema como no parcheado — instale la actualización acumulativa de junio de 2026 inmediatamente.

Contribuciones

Si tiene algo que añadir — mejores reglas de detección, PoC de explotación, una sesión de Ghidra Version Tracking, firmas YARA, o análisis de los CVEs relacionados en este grupo — las solicitudes de extracción son bienvenidas.

Ideas para contribuciones:

  • Reglas Sigma para el lado SIEM de la detección
  • Análisis más profundo de CVE-2026-42977/42979/42991 (misma familia de carreras WPN)
  • Análisis de heap basado en WinDbg del use-after-free
  • Monitor ETW mejorado con detección de ráfagas ALPC en tiempo real
  • Recomendaciones de reglas ASR de Windows Defender

Abra un issue si tiene preguntas o desea discutir la investigación.

Licencia

MIT

Descargar herramienta