Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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.

FeedContattoPrivacy© 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
2871164 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)

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

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

build.bat

Terminale 1:

vulnerable_service.exe

Terminale 2:

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
powershell -ExecutionPolicy Bypass .\detection\etw_wpn_monitor.ps1
Scarica lo strumento