Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-42978-PoC-Research — CVE-2026-42978 — Use-After-Free-Race-Condition in Windows Push Notifications (WpnService). Patch-Diff, Root-Cause-Analyse, TOCTOU-Labor, Sysmon/ETW-Erkennungsregeln. | Kitploit
Tools/GitHubGitHub/grizzzer/cve-2026-42978-poc-research
SchwachstellenanalyseExploitationForensikBinäranalyseLernen & BildungIncident ResponseLabs & Praxis
GitHubgrizzzer/cve-2026-42978-poc-research

CVE-2026-42978-PoC-Research

CVE-2026-42978 — Use-After-Free-Race-Condition in Windows Push Notifications (WpnService). Patch-Diff, Root-Cause-Analyse, TOCTOU-Labor, Sysmon/ETW-Erkennungsregeln.

Repository anzeigen
2872vor 2 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-42978 PoC & Forschung — Use-After-Free in Windows-Pushbenachrichtigungen

Race-Condition im Windows-Pushbenachrichtigungsdienst (WpnService), der als NT AUTHORITY\SYSTEM läuft. Ein Angreifer mit lokalem Zugriff kann während des Herunterfahrens der Plattform eine Use-After-Free auslösen und möglicherweise Privilegien erweitern.

  • CVE: CVE-2026-42978
  • BDU: BDU:2026-08249
  • Typ: CWE-362 (Race-Condition), Use-After-Free
  • CVSS: 7.8 (Hoch)
  • Betroffen: Windows 10, Windows 11, Windows Server 2016/2019/2022/2025
  • Behoben: 10. Juni 2026 (Patch Tuesday)
  • Status: Behoben. Dieses Repository dient ausschließlich der defensiven Forschung.

Wie es funktioniert

WpnService ist der Windows-Pushbenachrichtigungsdienst. Er läuft in Session 0 als LocalSystem innerhalb von svchost.exe -k netsvcs -p. Die gesamte Zustellung von Benachrichtigungen – Toasts, Kacheln, Badges – erfolgt über ihn.

Die Schwachstelle befindet sich in wpncore.dll, genauer gesagt in der Klasse PresentationEndpointFacade. Diese Klasse kapselt alle API-Aufrufe für Benachrichtigungen (Toast-Zustellung, Sitzungsverwaltung, Einstellungsabfragen usw.) und delegiert an PresentationEndpointImpl.

Der Fehler: Während des Herunterfahrens der Plattform wird das NotificationPlatform-Objekt zerstört. Die Facade-Methoden prüfen jedoch nicht, ob ein Herunterfahren im Gange ist – sie greifen auf einen Zeiger auf die Plattform zu, die Plattform wird vom Herunterfahr-Thread freigegeben, und die Facade verwendet einen hängenden Zeiger. Klassischer Use-After-Free-Race.

Angreifbarer Code (dekompiliert aus 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(...);
}

Ghidra-Disassemblierung der angreifbaren ToastUnblockAll
Ghidra: angreifbare ToastUnblockAll — keine Synchronisation vor dem Zugriff auf die Plattform

Gepatchter Code (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
    }
}

Die Behebung fügt drei Dinge hinzu:

  1. AcquireSRWLockShared – gemeinsame Leser-Schreiber-Sperre. Mehrere API-Aufrufe können parallel laufen, aber das Herunterfahren erwirbt eine exklusive Sperre und blockiert alle.
  2. s_platformShutdown-Prüfung – wenn das Herunterfahren bereits begonnen hat, sofort mit E_APPLICATION_EXITING abbrechen.
  3. RAII-Sperrenfreigabe – die Sperre wird in einem wil::unique_storage-Wrapper gehalten, sodass sie auch bei einer Ausnahme freigegeben wird.

Das Feature-Flag Feature_4097557817 dient der gestaffelten Bereitstellung über WIL (Windows Internal Library). Es ermöglicht Microsoft, die Behebung schrittweise zu aktivieren und bei Problemen zu deaktivieren.

Umfang der Behebung

Dies ist kein Ein-Funktions-Fehler. Das gleiche Sperren+Guard-Muster wurde in 49 Funktionen in wpncore.dll hinzugefügt:

KategorieFunktionen
Toast-OperationenToastUnblockAll, ToastCreateSession, ToastCloseSession, ToastRequestAllNotifications, ToastSuppress
Kachel-OperationenTileCreateSession, TileCloseSession, TileRequestResourceForeground
RegistrierungRegisterApplication, UnregisterApplication, RegisterHandler, UpdateRegistration, RegisterSystemApplication
EinstellungenChangeAppSetting, QueryAppSetting, QueryGlobalSetting, RegisterSettingCallback, UnregisterSettingCallback
ZustellungDeliver, GetPayloadForNotificationId, Submit, PostScheduledNotification
AbfragenGetRegisteredHandler, GetRegisteredHandlersFromParent, GetSettingsFromHandler, GetAssetsFromHandler

Jede PresentationEndpointFacade::*-Methode, die auf die Plattform zugreift, erhielt die gleiche Behebung. Die darunterliegenden PresentationEndpointImpl::*-Methoden sind unverändert – das Problem lag nur in der Facade-Schicht.

Auswirkungen

WpnService läuft als SYSTEM. Wenn der Race gewonnen wird:

  1. Der Speicher des freigegebenen NotificationPlatform-Objekts kann zurückgefordert und mit vom Angreifer kontrollierten Daten gefüllt werden (Heap-Spray)
  2. Ein anschließender virtueller Methodenaufruf auf dem hängenden Zeiger springt zu einer vom Angreifer kontrollierten Adresse
  3. Codeausführung als NT AUTHORITY\SYSTEM

Die eigentliche Ausnutzung – Heap-Spray, Vtable-Hijacking, Erreichen der Codeausführung – liegt außerhalb des Rahmens dieser Forschung. Dieses Repository konzentriert sich auf das Verständnis der Ursache und den Aufbau von Erkennung.

TOCTOU-Race-Condition-Labor

Das Verzeichnis lab/ enthält eine eigenständige C-Demo, die die Fehlerklasse reproduziert, ohne WpnService zu berühren. Es verwendet eine Named-Pipe- und Shared-Memory-Architektur ähnlich wie WpnService.

So funktioniert es:

  • vulnerable_service.exe liest eine Nachrichtenlänge aus dem Shared Memory, validiert sie, schläft 50 ms und liest die Länge erneut (Double-Fetch).
  • race_attacker.exe setzt eine sichere Länge, löst den Dienst aus und überschreibt dann sofort den Shared Memory mit einem Überlaufwert.
  • Wenn das Timing stimmt, liest der Dienst den Überlaufwert beim zweiten Fetch – Pufferüberlauf.

Führen Sie vulnerable_service.exe --patched aus, um die Behebung zu sehen: Single-Fetch-Erfassung in eine lokale Variable.

TOCTOU-Race-Condition-Demo
Links: Dienst erkennt Race (5/5). Rechts: Angreifer überschreibt Shared-Memory-Werte.

Erstellen und ausführen

Erfordert GCC (MinGW). Führen Sie im Verzeichnis lab/ Folgendes aus:

root@kitploit:~
build.bat

Terminal 1:

root@kitploit:~
vulnerable_service.exe

Terminal 2:

root@kitploit:~
race_attacker.exe 5

Vergleichen Sie dann mit vulnerable_service.exe --patched – gleicher Angriff, null erkannte Races.

Erkennung

ETW-Monitor (detection/etw_wpn_monitor.ps1)

PowerShell-Skript, das 7 Indikatoren prüft:

  1. WpnService-Status und PID
  2. Absturz-/Neustartverlauf (fehlgeschlagene Ausnutzung hinterlässt Absturzspuren)
  3. Burst-Erkennung im Ereignisprotokoll der Push-Benachrichtigungsplattform
  4. WPN-bezogene Named Pipes
  5. Patch-Überprüfung (prüft Datum von wpncore.dll)
  6. Prozesse mit geladenen WPN-Modulen
  7. Symlink/Junction-Überprüfung in Benachrichtigungsdatenpfaden
root@kitploit:~
powershell -ExecutionPolicy Bypass .\detection\etw_wpn_monitor.ps1

ETW-Monitor-Ausgabe
ETW-Monitor: WpnService läuft (PID 6432), keine Abstürze, 100 Ereignisse/Stunde, System gepatcht

Sysmon-Regeln (detection/sysmon_wpn_race_detect.xml)

Sechs Regelgruppen für kontinuierliche Überwachung:

RegelWas es erfasst
WPN_EoP_ChildProcesssvchost (netsvcs) startet cmd/powershell/wscript
WPN_PipeAccessVerbindungen zu WPN-bezogenen Named Pipes
WPN_FileCreationDateierstellung in Benachrichtigungsdatenverzeichnissen
WPN_RegistryTamperingRegistrierungsschreibvorgänge auf PushNotifications-Schlüssel
WPN_ProcessAccessPROCESS_ALL_ACCESS-Handles auf svchost
WPN_ThreadInjectionCreateRemoteThread in svchost

Installieren:

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

Ereignisanzeige

Die WpnService-Aktivität wird in Microsoft-Windows-PushNotifications-Platform/Operational protokolliert. Wichtige Ereignisse, die beobachtet werden sollten:

  • Ereignis 1225: transportbezogene WPN-Befehle
  • Schnelle Ereignisausbrüche (>20/Min.) – mögliches Race-Spray
  • Fehler-/Kritische Ereignisse – möglicher Absturz durch fehlgeschlagene Ausnutzung

Ereignisanzeige WPN-Ereignis
Ereignisanzeige: PushNotifications-Platform-Betriebsprotokoll, Ereignis-ID 1225

Patch-Diffing

Wichtige Erkenntnisse aus dem Diffing von wpncore.dll:

  • .text-Abschnitt um 18.432 Bytes gewachsen (neuer Sperren/Guard-Code in 49 Funktionen)
  • .data-Abschnitt um 96 Bytes gewachsen (neue globale Variablen Wns::s_platformLock und Wns::s_platformShutdown)
  • Keine neuen Importe hinzugefügt – AcquireSRWLockShared/ReleaseSRWLockShared waren bereits in der Importtabelle
  • Neuer RAII-Destruktor: ~unique_any_t<...ReleaseSRWLockExclusive...> bestätigt Hinzufügung des Sperren-Wrappers

Vollständige Berichte finden Sie in reports/.

Verwandte CVEs

CVE-2026-42978 ist Teil eines Clusters von 9 WPN-bezogenen Schwachstellen, die im Juni 2026 behoben wurden:

CVETypCWE
CVE-2026-42977EoPRace Condition
CVE-2026-42978EoPRace Condition
CVE-2026-42979EoPRace Condition
CVE-2026-42991EoPRace Condition
CVE-2026-42969InformationspreisgabeRace Condition
CVE-2026-42970InformationspreisgabeRace Condition
CVE-2026-42973InformationspreisgabeRace Condition
CVE-2026-26167EoP—
CVE-2026-32160EoP—

Projektstruktur

root@kitploit:~
CVE-2026-42978/
├── README.md
├── lab/
│   ├── vulnerable_service.c    # Mock-WpnService mit Double-Fetch-Fehler
│   ├── race_attacker.c         # Angreifer, der den Double-Fetch ausnutzt
│   └── build.bat               # GCC-Build-Skript
├── detection/
│   ├── etw_wpn_monitor.ps1     # 7-Check-PowerShell-Detektor
│   └── sysmon_wpn_race_detect.xml  # Sysmon-Regelkonfiguration
├── reports/
│   ├── PE_DIFF_REPORT.txt      # PE-Abschnitts-/Import-Diff-Ergebnisse
│   └── FUNCTION_DIFF_REPORT.txt # Funktions-Diff (49 geändert)
└── img/                        # Screenshots für dieses README

Anforderungen

  • Windows 10/11 (zum Ausführen des Labors und der Erkennungstools)
  • GCC / MinGW (zum Erstellen des C-Labors)
  • Python 3.9+ (für Diffing-Skripte)
  • Ghidra 11+ (für headless Dekompilierung, optional)
  • Sysmon (für Erkennungsregeln, optional)

Haftungsausschluss

Dieses Projekt dient der defensiven Sicherheitsforschung. Die Schwachstelle wurde behoben. Es ist kein weaponisierter Exploit-Code enthalten. Das TOCTOU-Labor demonstriert die Fehlerklasse an einem eigenständigen Mock-Dienst – es interagiert nicht mit WpnService oder einer Systemkomponente.

Stellen Sie sicher, dass Ihr Windows auf dem neuesten Stand ist. Wenn etw_wpn_monitor.ps1 Ihr System als ungepatcht meldet – installieren Sie umgehend das kumulative Update von Juni 2026.

Mitwirken

Wenn Sie etwas hinzuzufügen haben – bessere Erkennungsregeln, einen Sploit-PoC, eine Ghidra-Versionsverfolgungssitzung, YARA-Signaturen oder die Analyse der verwandten CVEs in diesem Cluster – Pull-Requests sind willkommen.

Ideen für Beiträge:

  • Sigma-Regeln für die SIEM-Seite der Erkennung
  • Tiefere Analyse von CVE-2026-42977/42979/42991 (gleiche WPN-Race-Familie)
  • WinDbg-basierte Heap-Analyse des Use-After-Free
  • Verbesserter ETW-Monitor mit Echtzeit-ALPC-Burst-Erkennung
  • Empfehlungen für Windows-Defender-ASR-Regeln

Eröffnen Sie ein Issue, wenn Sie Fragen haben oder die Forschung diskutieren möchten.

Lizenz

MIT

Tool herunterladen