Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-42978-PoC-Research — CVE-2026-42978 — Condizione di gara Use-After-Free in Windows Push Notifications (WpnService). Diff della patch, analisi della causa principale, laboratorio TOCTOU, regole di rilevamento Sysmon/ETW. | Kitploit
Strumenti/GitHubGitHub/grizzzer/cve-2026-42978-poc-research
Analisi delle VulnerabilitàExploitInformatica ForenseAnalisi di BinariApprendimento e FormazioneRisposta agli IncidentiLab e Pratica
GitHubgrizzzer/cve-2026-42978-poc-research

CVE-2026-42978-PoC-Research

CVE-2026-42978 — Condizione di gara Use-After-Free in Windows Push Notifications (WpnService). Diff della patch, analisi della causa principale, laboratorio TOCTOU, regole di rilevamento Sysmon/ETW.

Vedi Repository
28722 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-42978 PoC e Ricerca — Windows Push Notifications Use-After-Free

Condizione di gara nel servizio Windows Push Notifications (WpnService) che viene eseguito come NT AUTHORITY\SYSTEM. Un attaccante con accesso locale può innescare un use-after-free durante l'arresto della piattaforma e potenzialmente elevare i privilegi.

  • CVE: CVE-2026-42978
  • BDU: BDU:2026-08249
  • Tipo: CWE-362 (Race Condition), Use-After-Free
  • CVSS: 7.8 (Alto)
  • Sistemi interessati: Windows 10, Windows 11, Windows Server 2016/2019/2022/2025
  • Patch: 10 giugno 2026 (Patch Tuesday)
  • Stato: Risolto. Questo repository è solo per ricerca difensiva.

Come funziona

WpnService è il servizio Windows Push Notification. Viene eseguito nella sessione 0 come LocalSystem all'interno di svchost.exe -k netsvcs -p. Tutta la consegna delle notifiche — toast, tile, badge — passa attraverso di esso.

La vulnerabilità risiede in wpncore.dll, in particolare nella classe PresentationEndpointFacade. Questa classe incapsula tutte le chiamate API di notifica (consegna dei toast, gestione delle sessioni, query delle impostazioni, ecc.) e delega a PresentationEndpointImpl.

Il bug: durante l'arresto della piattaforma, l'oggetto NotificationPlatform viene distrutto. Ma i metodi della Facade non verificano se l'arresto è in corso — ottengono un puntatore alla piattaforma, la piattaforma viene liberata dal thread di arresto e la Facade usa un puntatore pendente. Classica condizione di gara use-after-free.

Codice vulnerabile (decompilato da 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(...);
}

Disassemblamento Ghidra del ToastUnblockAll vulnerabile
Ghidra: ToastUnblockAll vulnerabile — nessuna sincronizzazione prima dell'accesso alla piattaforma

Codice corretto (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 correzione aggiunge tre elementi:

  1. AcquireSRWLockShared — blocco lettori-scrittori condiviso. Più chiamate API possono essere eseguite in concorrenza, ma l'arresto acquisisce un blocco esclusivo e le blocca tutte.
  2. Controllo di s_platformShutdown — se l'arresto è già iniziato, esce immediatamente con E_APPLICATION_EXITING.
  3. Rilascio del blocco RAII — il blocco è contenuto in un wrapper wil::unique_storage, quindi viene rilasciato anche se viene lanciata un'eccezione.

Il feature flag Feature_4097557817 serve per il rollout graduale tramite WIL (Windows Internal Library). Consente a Microsoft di abilitare la correzione gradualmente e di disabilitarla se qualcosa si rompe.

Portata della correzione

Non è un bug di una singola funzione. Lo stesso pattern blocco+guardia è stato aggiunto a 49 funzioni in wpncore.dll:

CategoriaFunzioni
Operazioni toastToastUnblockAll, ToastCreateSession, ToastCloseSession, ToastRequestAllNotifications, ToastSuppress
Operazioni tileTileCreateSession, TileCloseSession, TileRequestResourceForeground
RegistrazioneRegisterApplication, UnregisterApplication, RegisterHandler, UpdateRegistration, RegisterSystemApplication
ImpostazioniChangeAppSetting, QueryAppSetting, QueryGlobalSetting, RegisterSettingCallback, UnregisterSettingCallback
ConsegnaDeliver, GetPayloadForNotificationId, Submit, PostScheduledNotification
QueryGetRegisteredHandler, GetRegisteredHandlersFromParent, GetSettingsFromHandler, GetAssetsFromHandler

Ogni metodo PresentationEndpointFacade::* che tocca la piattaforma ha ricevuto la stessa correzione. I metodi PresentationEndpointImpl::* sottostanti sono invariati — il problema era solo a livello di facade.

Impatto

WpnService viene eseguito come SYSTEM. Se la gara viene vinta:

  1. La memoria dell'oggetto NotificationPlatform liberato può essere rioccupata e riempita con dati controllati dall'attaccante (heap spray)
  2. Una successiva chiamata a un metodo virtuale sul puntatore pendente salta a un indirizzo controllato dall'attaccante
  3. Esecuzione di codice come NT AUTHORITY\SYSTEM

Lo sfruttamento vero e proprio — heap spray, hijacking della vtable, ottenimento dell'esecuzione di codice — è fuori dallo scopo di questa ricerca. Questo repository si concentra sulla comprensione della causa principale e sulla costruzione di strumenti di rilevamento.

Lab sulla condizione di gara TOCTOU

La directory lab/ contiene una demo C standalone che riproduce la classe di bug senza toccare WpnService. Usa un'architettura a named pipe + memoria condivisa simile a WpnService.

Come funziona:

  • vulnerable_service.exe legge una lunghezza del messaggio dalla memoria condivisa, la valida, dorme per 50 ms, poi legge di nuovo la lunghezza una seconda volta (double-fetch).
  • race_attacker.exe imposta una lunghezza sicura, attiva il servizio, poi inverte immediatamente la memoria condivisa a un valore di overflow.
  • Se il tempismo è giusto, il servizio legge il valore di overflow al secondo fetch — buffer overflow.

Esegui vulnerable_service.exe --patched per vedere la correzione: acquisizione singola (single-fetch) in una variabile locale.

Demo della condizione di gara TOCTOU
Sinistra: il servizio rileva la gara (5/5). Destra: l'attaccante inverte i valori della memoria condivisa.

Compilazione ed esecuzione

Richiede GCC (MinGW). Dalla directory lab/:

root@kitploit:~
build.bat

Terminale 1:

root@kitploit:~
vulnerable_service.exe

Terminale 2:

root@kitploit:~
race_attacker.exe 5

Quindi confronta con vulnerable_service.exe --patched — stesso attacco, zero gare rilevate.

Rilevamento

Monitor ETW (detection/etw_wpn_monitor.ps1)

Script PowerShell che controlla 7 indicatori:

  1. Stato di WpnService e PID
  2. Cronologia crash/riavvii (uno sfruttamento fallito lascia tracce di crash)
  3. Rilevamento di burst nel registro eventi della piattaforma Push Notifications
  4. Named pipe relative a WPN
  5. Verifica della patch (controlla la data di wpncore.dll)
  6. Processi con moduli WPN caricati
  7. Verifica di symlink/junction nei percorsi dei dati delle notifiche
root@kitploit:~
powershell -ExecutionPolicy Bypass .\detection\etw_wpn_monitor.ps1

Uscita del monitor ETW
Monitor ETW: WpnService in esecuzione (PID 6432), nessun crash, 100 eventi/ora, sistema patchato

Regole Sysmon (detection/sysmon_wpn_race_detect.xml)

Sei gruppi di regole per il monitoraggio continuo:

RegolaCosa rileva
WPN_EoP_ChildProcesssvchost (netsvcs) che genera cmd/powershell/wscript
WPN_PipeAccessConnessioni a named pipe relative a WPN
WPN_FileCreationCreazione di file nelle directory dei dati delle notifiche
WPN_RegistryTamperingScritture nel registro relative alle chiavi PushNotifications
WPN_ProcessAccessHandle PROCESS_ALL_ACCESS verso svchost
WPN_ThreadInjectionCreateRemoteThread in svchost

Installazione:

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

Visualizzatore eventi

L'attività di WpnService viene registrata in Microsoft-Windows-PushNotifications-Platform/Operational. Eventi chiave da osservare:

  • Evento 1225: comandi WPN a livello di trasporto
  • Burst rapidi di eventi (>20/min) — possibile race spray
  • Eventi di errore/critici — possibile crash dovuto a uno sfruttamento fallito

Evento WPN nel Visualizzatore eventi
Visualizzatore eventi: registro operativo PushNotifications-Platform, ID evento 1225

Diffing delle patch

Risultati principali dal diff di wpncore.dll:

  • La sezione .text è cresciuta di 18.432 byte (nuovo codice lock/guardia in 49 funzioni)
  • La sezione .data è cresciuta di 96 byte (nuove variabili globali Wns::s_platformLock e Wns::s_platformShutdown)
  • Nessuna nuova importazione aggiunta — AcquireSRWLockShared/ReleaseSRWLockShared erano già nella tabella delle importazioni
  • Nuovo distruttore RAII: ~unique_any_t<...ReleaseSRWLockExclusive...> conferma l'aggiunta del wrapper del blocco

I rapporti completi sono in reports/.

CVE correlati

CVE-2026-42978 fa parte di un cluster di 9 vulnerabilità relative a WPN corrette a giugno 2026:

CVETipoCWE
CVE-2026-42977EoPRace Condition
CVE-2026-42978EoPRace Condition
CVE-2026-42979EoPRace Condition
CVE-2026-42991EoPRace Condition
CVE-2026-42969Info DisclosureRace Condition
CVE-2026-42970Info DisclosureRace Condition
CVE-2026-42973Info DisclosureRace Condition
CVE-2026-26167EoP—
CVE-2026-32160EoP—

Struttura del progetto

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

Requisiti

  • Windows 10/11 (per eseguire il lab e gli strumenti di rilevamento)
  • GCC / MinGW (per compilare il lab in C)
  • Python 3.9+ (per gli script di diffing)
  • Ghidra 11+ (per la decompilazione headless, opzionale)
  • Sysmon (per le regole di rilevamento, opzionale)

Avvertenza

Questo progetto è per ricerca di sicurezza difensiva. La vulnerabilità è stata corretta. Nessun codice exploit weaponizzato è incluso. Il lab TOCTOU dimostra la classe di bug su un servizio mock standalone — non interagisce con WpnService né con alcun componente di sistema.

Assicurati che il tuo Windows sia aggiornato. Se etw_wpn_monitor.ps1 segnala il tuo sistema come non patchato — installa immediatamente l'aggiornamento cumulativo di giugno 2026.

Contributi

Se hai qualcosa da aggiungere — migliori regole di rilevamento, sploit PoC, una sessione Ghidra Version Tracking, firme YARA o analisi delle CVE correlate in questo cluster — le PR sono benvenute.

Idee per i contributi:

  • Regole Sigma per il lato SIEM del rilevamento
  • Analisi più approfondita di CVE-2026-42977/42979/42991 (stessa famiglia di race WPN)
  • Analisi dell'heap del use-after-free basata su WinDbg
  • Monitor ETW migliorato con rilevamento burst ALPC in tempo reale
  • Raccomandazioni per le regole ASR di Windows Defender

Apri una issue se hai domande o vuoi discutere la ricerca.

Licenza

MIT

Scarica lo strumento