LongLogon 是一个未经身份验证、非破坏性的前提条件检查器,用于 CVE-2026-41089,一个在 Windows Netlogon 服务中预认证的栈缓冲区溢出漏洞。 无需凭据,也不发送溢出数据,它能报告域控制器的 DNS 域名是否足够长,足以使该漏洞导致其崩溃。

在一个普通命名的域控制器上,无效。该 CVE 的公开 exploit PoC(星标最多的那个及其后续副本)声称通过发送一个长用户名来使域控制器崩溃。它们无法使普通域上未打补丁的 DC 崩溃,原因有两个,已通过对比修补前后的 netlogon.dll 并在实验室中复现崩溃得到确认:
0x16)进行探测,这会使流量路由到边界安全的 BuildSamLogonResponseEx。只有在清除该位时才会进入有漏洞的旧版 BuildSamLogonResponse。LongLogon 使用 0x02。User 字段在二进制层面最多为 130 个宽字符,远低于 528 字节的缓冲区。导致写入越过栈 cookie 的字节是服务器自身的长 DNS 名称,任何负载长度都无法改变这一点。因此,流行的漏洞利用在普通域上失效,而 recv 超时(健康 DC 上单个 UDP 数据包丢失就会导致)会被误读为崩溃。LongLogon 不属于那些漏洞利用:它是经过修正、经二进制验证的分析,作为一个永远不会发送溢出数据的非破坏性检查器发布。经实验室确认的崩溃阈值和完整机制如下。
Netlogon DC 定位路径 NlGetLocalPingResponse → BuildSamLogonResponse → NetpLogonPutUnicodeString 中存在一个基于栈的缓冲区溢出(CWE-121,CVSS 9.8)。在响应 CLDAP 或 MAILSLOT 探测时,DC 会将自己的林、域和主机名以及一个较小的攻击者控制的字符串序列化到一个固定的 528 字节栈缓冲区(ushort local_258[264])中,栈 cookie 紧跟在后面。当服务器自身的 DNS 名称足够长时,累积的写入会到达缓冲区末尾,尾部的 L'\0' 终止符会溢出 cookie,触发 __report_gsfailure,导致 lsass.exe 因 STATUS_STACK_BUFFER_OVERRUN(0xc0000409)而终止。域控制器重启。无需身份验证,仅需一个 UDP 数据包。
如果说 Zerologon(CVE-2020-1472)滥用的是全零挑战,那么 LongLogon 滥用的则是病态地长的域名。
longlogon.py 是非破坏性的。它发送带有最小 User 字段的良性 CLDAP 探测,测量旧版构建器的响应,并报告溢出的前提条件是否成立:即该 DC 的域是否足够长,以至于未修补的 DC 会崩溃。
它不会:
要知道哪些 DC 实际上已打补丁,需要跨整个环境进行有凭据(管理员)的版本检查。这正是 ADscan 在参与中自动完成的工作(见下文)。
唯一能到达缓冲区的攻击者控制的字节来自 CLDAP User 过滤器,其上限为 130 个宽字符,本身远低于 528 字节的缓冲区。将光标推到 cookie 上的字节是服务器自身的名称,攻击者无法控制。默认命名的 DC(corp.local)无法被崩溃。这就是为什么微软将其评级为 “利用不太可能”。在实验室中,能够使 Windows Server 2016(主机名 7 个字符)崩溃的最小 DNS 域长度是 98 个字符。
使用 uv,无需设置。依赖项声明在行内(PEP 723),因此会在临时环境中自动安装 rich:
uv run longlogon.py <dc-ip> <dc-dns-domain>
或者使用 pip:
pip install rich
python3 longlogon.py <dc-ip> <dc-dns-domain>
DNS 域名必须与 DC 提供的一致。这不是秘密:rootDSE、反向 DNS 以及 CLDAP 本身都会揭示它。输出是一个前提条件判决,以及每个字段的缓冲区填充计算。
NtVer 路由至关重要。 只有当 (NtVer & 0xc) == 0 且 (NtVer & 0x2) != 0 时,才会进入有漏洞的旧版 BuildSamLogonResponse。发送 NtVer=0x16 或 0x06 的公开漏洞尝试设置了第 2 位(0x4),命中了边界安全的 BuildSamLogonResponseEx,因此永远不会触发该漏洞。LongLogon 使用 0x02。
未打补丁的 Windows Server 域控制器,2012 R2 至 2025。首次修补的版本:
仅用于授权的安全研究和防御性验证。此仓库发布的是非破坏性前提条件检查器,而非武器化的崩溃器,针对的是一个已被积极利用、可蠕虫化的 CVE。请修补您的域控制器。
研究作者:Yeray Martín Domínguez · ADscan · CVE-2026-41089 · Netlogon · Active Directory · 域控制器 · 栈缓冲区溢出 · CLDAP · 未经身份验证 · 预认证 · 概念验证
| Windows Server | 首次修补版本 |
|---|
| 2016 | 10.0.14393.9140 |
| 2019 | 10.0.17763.8755 |
| 2022 | 10.0.20348.5074 |
| 2022 23H2 | 10.0.25398.2330 |
| 2025 | 10.0.26100.32772 |