Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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
287102vor 3 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)

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

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

build.bat

Terminal 1:

vulnerable_service.exe

Terminal 2:

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
powershell -ExecutionPolicy Bypass .\detection\etw_wpn_monitor.ps1
Tool herunterladen