跳到主要内容

Windows Netlogon 零点击远程代码执行漏洞分析(CVE-2026-41089)

· 阅读需 9 分钟
ICE Lab
Institute of Cyber Environment

摘要

2026年5月12日,Microsoft 披露了 Windows Netlogon 服务中存在一处已遭在野利用的零点击远程代码执行漏洞(CVE-2026-41089,CVSSv3 9.8)。漏洞位于 Netlogon 处理 CLDAP(Connectionless LDAP)查询的 NlGetLocalPingResponse 函数中,该函数分配的 528 字节栈缓冲区在通过 BuildSamLogonResponseNetpLogonPutUnicodeString 处理攻击者可控的用户名字段时,因字节长度与 WCHAR 长度计算混淆导致缓冲区溢出。攻击者可向目标域控制器的 UDP 389 端口发送特制 CLDAP 请求,无需身份凭证、无需用户交互,即可实现以 SYSTEM 权限执行任意代码的域控完全接管。本分析从漏洞原理、攻击向量、影响范围及修复方案四个维度展开讨论。

关键词:Netlogon;CLDAP;栈缓冲区溢出;零点击远控;域控制器;CVE-2026-41089

1. 引言

Windows Netlogon 是 Windows Server 域环境的核心身份验证服务,负责域内计算机登录、身份校验、安全通道建立与维护,是 Active Directory 认证体系的基础组件,广泛应用于政企域架构中。该服务默认在域控制器的 UDP 389 端口上监听 CLDAP 请求,无需任何身份验证即可接入。

CVE-2026-41089 是该服务近年来继 Zerologon(CVE-2020-1472)之后出现的又一起高危漏洞。与 Zerologon 聚焦于密码学初始向量缺陷不同,本文分析的漏洞根源在于 Netlogon 内部响应构造逻辑中的缓冲区长度计算错误——一个经典的字节/WCHAR 混淆问题。

2. 漏洞原理分析

2.1 Netlogon CLDAP 处理流程

CLDAP 是轻量目录访问协议的无连接变体,域控制器使用 Netlogon 服务处理来自域成员及外部机器的 CLDAP 查询请求。当域控制器收到 CLDAP ping 请求时,NlGetLocalPingResponse 函数负责构造响应消息。

该函数在栈上分配一个固定大小的响应缓冲区,随后调用 BuildSamLogonResponse 将域控域名、站点名、用户名等可变长度字段写入该缓冲区。NetpLogonPutUnicodeString 辅助函数负责将 Unicode 字符串以 Length 字段前缀的方式写入缓冲区指定偏移。

2.2 字节/WCHAR 长度计算混淆

漏洞的核心缺陷发生在 NetpLogonPutUnicodeString 的调用方与实现方之间对长度单位的不一致理解。在 Win32 API 约定中,涉及 Unicode 字符串的长度字段存在两种表达方式:以字节为单位(Length)和以 WCHAR 数量为单位。当调用方以字节长度计算所需缓冲区空间,但实现方以 WCHAR 数量执行内存复制时,会发生以下溢出:

  • 调用方按字节计数,认为 N 字节的栈缓冲区剩余空间足以容纳 B 字节的用户名字段
  • 实现方以 WCHAR 数量解释长度字段,实际写入 B 个 WCHAR = B × 2 字节
  • 攻击者通过 CLDAP 请求中的可控用户名长度精确控制溢出量,覆盖栈上的返回地址或 SEH 链

NlGetLocalPingResponse 分配的 528 字节栈缓冲区正是这一长度混淆的溢出目标代。攻击者构造远超缓冲区剩余空间的 WCHAR 字符串,导致栈溢出,进而以 SYSTEM 权限执行任意代码。

2.3 攻击向量特征

该漏洞的攻击向量具有以下显著特征:

  • 零点击:攻击者仅需发送 UDP 报文至域控制器 389 端口,无需任何用户交互
  • 无认证:CLDAP 查询无需身份凭证,攻击者仅需网络可达性
  • SYSTEM 权限:Netlogon 服务以 NT AUTHORITY\SYSTEM 身份运行,溢出后的代码执行直接获得最高权限
  • 域控完全接管:成功利用后攻击者立即获得域控制器控制权,进而可实现凭据窃取与全域横向移动

3. 影响范围

3.1 受影响版本

以下 Windows Server 版本的 Netlogon 受该漏洞影响:

操作系统版本修复版本
Windows Server 2012≥ 6.2.9200.26079
Windows Server 2012 R2≥ 6.3.9600.23181
Windows Server 2016≥ 10.0.14393.9140
Windows Server 2019≥ 10.0.17763.8755
Windows Server 2022≥ 10.0.20348.5074 / 10.0.20348.5139
Windows Server 2022, 23H2≥ 10.0.25398.2330
Windows Server 2025≥ 10.0.26100.32772 / 10.0.26100.32860

3.2 影响评估

该漏洞影响量级为千万级。鉴于 Netlogon 是域控制器的强制启用服务,且 CLDAP 端口在域环境中默认对外暴露,全球范围内大量未打补丁的域控制器面临直接威胁。CVSSv3 评分 9.8 反映了其对机密性、完整性及可用性的全面影响。

4. 在野利用

本漏洞的特殊性在于其在公开披露前已被发现活跃利用。已观测到的在野利用活动表明,攻击者已将该漏洞武器化为域控制器渗透的初始入口。利用成功后,攻击者可实现域控完全接管,进而通过 DCSync 等域内凭据窃取技术向全域范围横向扩展。

Zerologon(CVE-2020-1472)的历史经验表明,此类 Netlogon 零点击漏洞的武器化周期通常较短,且一旦利用代码进入攻击框架,大规模扫描与利用将迅速跟进。

5. 修复方案

Microsoft 已在 2026 年 5 月安全更新中发布补丁。建议通过以下路径完成修复:

  1. 启用 Windows Update 自动更新,检测并安装安全累积更新
  2. 对于无法自动更新的环境,从 Microsoft 更新目录手动下载对应版本补丁:https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-41089
  3. 重启域控制器以应用更新

临时缓解措施:对无法立即安装补丁的环境,可通过防火墙 ACL 限制对域控制器 UDP 389 端口的外部网络访问,阻断来自非受信网络的 CLDAP 流量。但需注意,此措施仅缩小攻击面,不能根除漏洞。

结论

CVE-2026-41089 是 Netlogon 服务内部响应构造逻辑中一处字节/WCHAR 长度计算混淆导致的栈缓冲区溢出漏洞,其零点击、无认证、SYSTEM 权限远程代码执行的攻击面特征使其成为域环境中最危险类型的漏洞之一。已在野利用的观测进一步提升了其紧急程度。域控制器管理员需立即确认域控版本并应用 2026 年 5 月安全更新。

参考文献

[1] Microsoft Security Response Center. "CVE-2026-41089: Windows Netlogon Remote Code Execution Vulnerability." https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-41089

[2] CyberSecurityNews. "Windows Netlogon 0-Click RCE Exploited in the Wild – Microsoft Confirms." https://cybersecuritynews.com/windows-netlogon-0-click-rce/