
CVE-2026-42978 Windows Push Notifications (WpnService) Use-After-Free y condición de carrera: investigación PoC, escáner de diagnóstico y módulo de auditoría de seguridad para AI Security Tool.
Navegación del sitio web: Inicio · Actualizaciones · Descargas · Módulos
Producto: AI Security Tool
Sitio: zerodayevil.github.io
Documentación: https://zerodayevil.github.io/ai-security-tool
Este módulo es un análisis revisado y un perfil de verificación segura para AI Security Tool.
Utilice únicamente los módulos listados en el sitio del proyecto o en el catálogo oficial. Cargue este módulo dentro de la aplicación aprobada, contra endpoints que usted posea o esté autorizado por escrito a evaluar.
Este repositorio no incluye un exploit armado contra WpnService. El laboratorio bajo lab/ es una simulación independiente de la clase de vulnerabilidad (TOCTOU / doble lectura). No se comunica con el servicio real de notificaciones push.
Instale primero la aplicación anfitriona. Luego habilite este módulo desde Módulos → Windows / EoP Local → CVE-2026-42978.
| SO / plataforma | Versión | Arquitectura / formato | Actualizado | Estado | Descarga |
|---|---|---|---|---|---|
| Windows | v6.3.20 | Instalador x64 (.exe) | 2026-09-08 | Última | Descargar .exe |
| Windows | v6.3.20 | Portátil x64 (.tar.gz) | 2026-09-08 | Última | Descargar .tar.gz |
| macOS | v5.3.29 | Apple Silicon (.dmg) | 2026-09-05 | Estable | Descargar .dmg |
| Linux | v5.3.27 | Universal x64 (.tar.gz) | 2026-09-01 | Estable | Descargar .tar.gz |
| Android | v5.3.27 | APK ARM64 (.apk) | 2026-09-01 | Estable | Descargar .apk |
Solo fuentes oficiales:
CVE-2026-42978 es una elevación de privilegios local en las Notificaciones Push de Windows. Microsoft describe el acceso concurrente a un recurso compartido sin la sincronización adecuada (CWE-362). La investigación sobre wpncore.dll parcheado vs. sin parchear muestra una condición de carrera de use-after-free en PresentationEndpointFacade durante el apagado de la plataforma.
WpnService se ejecuta en la sesión 0 como NT AUTHORITY\SYSTEM (svchost.exe -k netsvcs -p). La entrega de notificaciones toast, mosaico e insignia pasa por él. Ganar la carrera contra ese proceso es un problema de SYSTEM en la máquina local — no un fallo remoto de pre-autenticación en un DC.
Estado: parcheado el 10 de junio de 2026 (Patch Tuesday). Esta página es investigación defensiva.
No es CVE-2026-41089 (RCE de Netlogon). Componente diferente, modelo de privilegios diferente, fecha de parche diferente.
| Campo | Valor |
|---|---|
| CVE | CVE-2026-42978 |
| BDU | BDU:2026-08249 |
| Aviso del proveedor | MSRC — Windows Push Notifications EoP |
| Severidad | Alta · CVSS 3.1 7.8 |
| Debilidad | Condición de carrera CWE-362 · use-after-free en la ruta de apagado |
| Componente | Windows Push Notifications · WpnService · wpncore.dll |
| Vector de ataque | Local |
| Privilegios requeridos | Bajos (usuario local autorizado) |
| Interacción del usuario | Ninguna |
| Patch Tuesday | 10 de junio de 2026 |
| Tipo de módulo | Análisis de investigación + verificación segura en la aplicación + paquete de detección |
SKUs de cliente y servidor que incluyen Push Notifications. Confirme el KB exacto en MSRC antes de cerrar un ticket.
| Familia | Notas |
|---|---|
| Windows 10 | 1809, 21H2, 22H2 (x86 / x64 / ARM64 según corresponda) |
| Windows 11 | 23H2, 24H2, 25H2, 26H1 |
| Windows Server | 2016 / 2019 / 2022 / 2025 (completo y Server Core donde exista el componente) |
Compilaciones orientativas según notas de servicio públicas (verifique siempre en MSRC):
| Rama | Compilación parcheada indicativa |
|---|---|
| Windows 11 23H2 | 22631.7219 |
| Windows 11 24H2 | 26100.8655 |
| Windows 11 25H2 | 26200.8655 |
| Windows 11 26H1 | 28000.2269 |
Ejemplo de wpncore.dll (24H2) | vulnerable 26100.8521 → parcheado 26100.8655 |
La fachada envuelve las llamadas a la API de notificaciones y delega en PresentationEndpointImpl. Durante el apagado de la plataforma, el objeto NotificationPlatform se destruye. Varios métodos de la fachada tomaban históricamente un puntero a la plataforma sin una bandera de apagado ni un bloqueo compartido. Si el desmontaje gana la carrera, la siguiente llamada utiliza un puntero colgante.
El mismo patrón de bloqueo y guarda se aplicó en 49 métodos PresentationEndpointFacade::*. Los métodos de implementación subyacentes se dejaron como estaban — el agujero estaba en la fachada.
wpncore.dll 26100.8521)// PresentationEndpointFacade::ToastUnblockAll — unpatched
long ToastUnblockAll(PresentationEndpointFacade *this) {
NotificationPlatformHandle::Get(this + 0x50);
if (platform == NULL)
Throw_Hr(...);
return PresentationEndpointImpl::UnblockToastsForEachApp(...);
}
wpncore.dll 26100.8655)// PresentationEndpointFacade::ToastUnblockAll — patched
long ToastUnblockAll(PresentationEndpointFacade *this) {
if (Feature_4097557817::IsEnabled()) {
AcquireSRWLockShared(&Wns::s_platformLock);
if (Wns::s_platformShutdown)
Throw_Hr(E_APPLICATION_EXITING);
NotificationPlatformHandle::Get(this + 0x50);
ReleaseSRWLockShared(&Wns::s_platformLock);
}
}
Lo que añade el parche:
AcquireSRWLockShared — bloqueo de lectores-escritores; el apagado toma el exclusivo.s_platformShutdown — aborta con E_APPLICATION_EXITING si el desmontaje ha comenzado.unique_storage, de modo que el bloqueo se libera en rutas de excepción.Feature_4097557817 para despliegue por fases / reversión.| Categoría | Funciones de ejemplo |
|---|---|
| Toast | ToastUnblockAll, ToastCreateSession, ToastCloseSession, ToastRequestAllNotifications, ToastSuppress |
| Mosaico | TileCreateSession, TileCloseSession, TileRequestResourceForeground |
| Registro | RegisterApplication, UnregisterApplication, RegisterHandler, UpdateRegistration |
| Configuración | ChangeAppSetting, QueryAppSetting, QueryGlobalSetting |
| Entrega | Deliver, GetPayloadForNotificationId, Submit, PostScheduledNotification |
| Consultas | GetRegisteredHandler, GetSettingsFromHandler, GetAssetsFromHandler |
Notas de PE de reports/:
.text creció 18.432 bytes.data creció 96 bytes (Wns::s_platformLock, Wns::s_platformShutdown)WpnService es SYSTEM. Si se gana la carrera, una llamada a vtable colgante puede convertirse en ejecución de código SYSTEM local. Ese paso — heap spray, secuestro de vtable, payload — está fuera del alcance aquí.
Este módulo es para comprensión de la causa raíz, verificación de parches y detección.
detection/) en una máquina de laboratorio.No ejecute bucles de fallo o de carrera contra WpnService en producción.
authorized operator
│
▼
AI Security Tool → module 42978
│
▼
authorized Windows endpoint
│
├─ patch / wpncore.dll age
└─ SIEM / Sysmon / Event Log notes
lab/ es una demostración en C independiente de doble lectura / TOCTOU. Utiliza una tubería con nombre y memoria compartida. No carga wpncore.dll y no inicia ni detiene WpnService.
vulnerable_service.exe — valida una longitud, duerme, vuelve a leer la longitud.race_attacker.exe — cambia el valor compartido durante esa ventana.--patched — lectura única en una variable local; el mismo atacante debería ver cero carreras.Requiere GCC (MinGW). Desde lab/:
build.bat
Terminal 1: vulnerable_service.exe
Terminal 2: race_attacker.exe 5
Luego compare con vulnerable_service.exe --patched.
detection/etw_wpn_monitor.ps1Siete comprobaciones:
WpnServicewpncore.dll)powershell -ExecutionPolicy Bypass .\detection\etw_wpn_monitor.ps1
detection/sysmon_wpn_race_detect.xml| Regla | Para qué sirve |
|---|---|
WPN_EoP_ChildProcess | svchost (netsvcs) generando cmd / powershell / wscript |
WPN_PipeAccess | Conexiones a tuberías con nombre relacionadas con WPN |
WPN_FileCreation | Creación de archivos bajo directorios de datos de notificaciones |
WPN_RegistryTampering | Escrituras bajo claves de PushNotifications |
WPN_ProcessAccess | PROCESS_ALL_ACCESS a svchost |
WPN_ThreadInjection | CreateRemoteThread en svchost |
sysmon64.exe -accepteula -i detection\sysmon_wpn_race_detect.xml
Canal: Microsoft-Windows-PushNotifications-Platform/Operational
wpncore.dll coincide con la fila parcheada para esa ramasvchost -k netsvcs genera un shellSi etw_wpn_monitor.ps1 indica sin parchear — instale la actualización de junio de 2026 y vuelva a verificar.
| CVE | Clase |
|---|---|
| CVE-2026-42977 | EoP · carrera |
| CVE-2026-42978 | EoP · carrera (este módulo) |
| CVE-2026-42979 | EoP · carrera |
| CVE-2026-42991 | EoP · carrera |
| CVE-2026-42969 | Divulgación de información · carrera |
| CVE-2026-42970 | Divulgación de información · carrera |
| CVE-2026-42973 | Divulgación de información · carrera |
| CVE-2026-26167 | EoP |
| CVE-2026-32160 | EoP |
CVE-2026-42978/
├── README.md
├── LICENSE
├── lab/
│ ├── vulnerable_service.c
│ ├── race_attacker.c
│ └── build.bat
├── detection/
│ ├── etw_wpn_monitor.ps1
│ └── sysmon_wpn_race_detect.xml
└── reports/
├── PE_DIFF_REPORT.txt
└── FUNCTION_DIFF_REPORT.txt
Requisitos: Windows 10/11 para los scripts de detección · MinGW para el laboratorio simulado · Sysmon opcional.
Las capturas de pantalla de este README se cargan desde URLs de imágenes públicas. No están almacenadas en este árbol.
4 modules@ZeroDayEvil@ZeroDayEvil@ZeroDayEvil@ZeroDayVPN2 modules@ZeroDayVPN@ZeroDayEvil2 modules@ZeroDayEvil@ZeroDayVPNTrabajo útil:
No abra un PR que añada un exploit armado de WpnService, un asistente de heap-spray o un PoC de exploit contra el servicio en vivo.
Publicado bajo la Licencia MIT. Consulte LICENSE.
Solo para investigación defensiva autorizada y administración de sistemas.
Las pruebas de escalada de privilegios local sin autorización por escrito son ilegales.
La vulnerabilidad está parcheada. Mantenga Windows actualizado. Este repositorio no incluye un exploit armado contra el servicio en vivo.
AI Security Tool — flujo de trabajo de terminal y automatización para profesionales de ciberseguridad.
Módulo defensivo para zerodayevil.github.io · Sin exploit independiente de WpnService · Verifique los datos en MSRC