文章总结: 360漏洞研究院披露WindowsDNSServer栈溢出漏洞CVE-2026-62878,CVSS评分9.8。未经身份验证的远程攻击者可发送特制数据包触发远程代码执行。根因在于NTree重哈希时使用固定500指针栈数组且无容量检查,当遍历到500个节点时写入结束NULL导致越界。影响多个WindowsServer版本,建议立即通过WindowsUpdate或手动安装补丁修复。 综合评分: 91 文章分类: 漏洞分析,应急响应,安全建设,解决方案,漏洞预警
【已复现】CVSS 9.8 Windows DNS 栈溢出漏洞(CVE-2026-62878)细节分析
原创
360漏洞研究院 360漏洞研究院
360漏洞研究院
2026年8月17日 16:11 四川
在小说阅读器读本章
去阅读
Windows DNS Server 曝出严重栈缓冲区溢出漏洞(CVE-2026-62878,CVSS 9.8)。未经身份验证的远程攻击者只需向目标 DNS 服务器发送特制数据包,即可触发栈溢出,实现远程代码执行。
利用前置条件:
- 攻击者能够通过网络访问目标 Windows DNS 服务
目前 360漏洞挖掘智能体已成功复现该漏洞。本文包含完整影响范围、修复方案、技术原理与复现细节,建议用户立即升级。
| | | | | | — | — | — | — | | 漏洞概述 | | | | | 漏洞名称 | Windows DNS 服务器远程代码执行漏洞 | | | | 漏洞编号 | CVE-2026-62878 | | | | 公开时间 | 2026-08-11 | POC状态 | 未公开 | | 漏洞类型 | 栈溢出 | EXP状态 | 未公开 | | 利用可能性 | 低 | 技术细节状态 | 未公开 | | CVSS 3.1 | 9.8 | 在野利用状态 | 未发现 |
01
漏洞影响范围
已确认受影响版本:
Windows Server 2012 R2 < 6.3.9600.23338
Windows Server 2012 < 6.2.9200.26280
Windows Server 2016 < 10.0.14393.9418
Windows 10 Version 1607 < 10.0.14393.9418
Windows Server 2019 < 10.0.17763.9121
Windows 10 Version 1809 < 10.0.17763.9121
以下产品同时支持常规安全更新和 Hotpatch:
Windows Server 2025:常规修复版本 10.0.26100.33296,Hotpatch 修复版本 10.0.26100.33222
Windows Server 2022:常规修复版本 10.0.20348.5499,Hotpatch 修复版本 10.0.20348.5440
上述范围包括 Microsoft 公告列出的 x64、ARM64、32 位及 Server Core 平台。对于支持 Hotpatch 的系统,应以对应安全更新是否已经安装作为漏洞修复判断依据。
02
修复建议
正式防护方案
方法一.使用Windows Update更新
自动更新:
Microsoft Update默认启用,当系统检测到可用更新时,将会自动下载更新并在下一次启动时安装。
手动更新:
1、点击“开始菜单”或按Windows快捷键,点击进入“设置”。
2、选择“更新和安全”,进入“Windows更新”。
3、选择“检查更新”,等待系统将自动检查并下载可用更新。
4、重启计算机,安装更新系统重新启动后,可通过进入“Windows更新”->“查看更新历史记录”查看是否成功安装了更新。对于没有成功安装的更新,可以点击该更新名称进入微软官方更新描述链接,点击最新的SSU名称并在新链接中点击“Microsoft 更新目录”,然后在新链接中选择适用于目标系统的补丁进行下载并安装。
方法二. 手动安装补丁
Microsoft官方下载相应补丁进行更新。
安全更新下载链接:https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-62878
1.点击打开上述链接。
2.在微软公告页面底部左侧【产品】选择相应的系统类型,点击右侧【下载】处打开补丁下载链接。
3.点击【安全更新】,打开补丁下载页面,下载相应补丁并进行安装。
4.安装完成后重启计算机。
03
漏洞描述
3.1 漏洞简述
Windows DNS Server 的 dns.exe 维护区域、缓存与策略所使用的名称树(NTree)。当一个节点下的兄弟节点较多时,NTree 可将同一桶转换为下一层哈希表;哈希层深度使用标签中后续字节继续区分节点。
本问题位于这种“桶转下一层哈希”的重建流程中,问题的根因是目标函数在栈上使用固定的 500 指针数组,却调用一个没有容量参数的遍历复制函数。若遍历到 500 个节点,节点指针已填满数组,随后写入结束 NULL 会落到数组外。
3.2 详细分析
与该漏洞相关的标志位是NameCheckFlag,是Windows DNS Server 协议里的一个 DWORD 配置值,用于控制 DNS 服务器对 FQDN(完全限定域名)字符语法检查的严格程度,NameCheckFlag的现代取值为:0 严格 RFC ANSI、1 非 RFC 可打印 ANSI、2 UTF-8(默认)、3 所有字符。漏洞需要设置为 NameCheckFlag=3。
3.2.1 策略允许后,NTree 按显式长度接收标签
NTree_FindOrCreateChildNodeEx 把网络解析阶段保存的 Src 与 Size 直接交给 Dns_DowncaseNameLabel。后者不是 strlen 风格循环,而是按 Size 逐字节复制;所以标签载荷中的 NUL 不会让复制提前结束。真正的拒绝条件是字符策略:当非法字符标记存在且 mode != 3 时返回失败。
// NTree_FindOrCreateChildNodeEx,语义化伪代码mode = is_primary_zone(zone) ? NameCheckFlag : 3;canon_len = Dns_DowncaseNameLabel(canonical, Src, Size, mode);if (canon_len == -1) { SetLastError(ERROR_INVALID_NAME); // 123return NULL;}//Dns_DowncaseNameLabelfor (i = 0; i < Size; ++i) { // 显式长度,而非遇 NUL 停止 canonical[i] = Src[i];if (invalid_character(Src[i])) flags |= INVALID;}if ((flags & INVALID) && mode != 3)return -1;
因此默认名称检查会在节点创建前阻断该类标签;NameCheckFlag=3 会改变这个策略结果,并不修复后续 NTree 数据结构缺陷。
3.2.2. 节点比较能区分,而哈希分桶不能区分
节点插入时,NTree_FindOrCreateChildNodeEx 先基于规范化标签的前四字节产生 quick-compare 值,再由 walkBinaryTree 用 quick 值和显式标签长度定位节点。实验标签在前四字节中保留差异,因而可以成为不同节点。
// walkBinaryTree 的关键比较顺序if (input_quick < node->quick) go_left();if (input_quick > node->quick) go_right();diff = input_len - node->label_length;if (input_len > 4 && node->label_length > 4) diff = strncmp(input_canonical, node->canonical_label, input_len);if (diff == 0) return node;
但重哈希时,NTree_HashTableIndexEx 的行为不同:它从 canonical 副本中读取字符;一旦读到 NUL,立即返回桶 0,并没有使用保存的标签长度继续读取。
// NTree_HashTableIndexEx 的关键逻辑for (i = 0; ; ++p) { ch = *p; if (ch == 0) return 0; // 所有首字节 NUL 的标签均进入桶 0 if (++i > hash->depth) return ch;}
这就是语义不一致:同一份逻辑标签在“是否为不同树节点”上使用显式长度/quick 值,在“进入哪个 hash 桶”上却使用 NUL 终止语义。
3.2.3. 同桶累积触发重复重哈希
每次新节点插入后,普通兄弟树超过阈值会创建哈希节点;若已经处于哈希节点,则 NTree_AddNodeInHashBucket 对对应桶计数加一,到达阈值后再次调用 NTree_CreateHashAtNode。目标版在这个调用点没有观察到与深度相关的停止条件。
bucket = NTree_HashTableIndexEx(new_node, NULL, hash->depth);count = ++hash->bucket_count[bucket];if (count >= 0x40) NTree_CreateHashAtNode(hash->bucket[bucket])
因为第二步使这些节点反复落入桶 0,每一层哈希都无法把它们真正分散开,从而持续满足下一次重哈希的条件。
3.2.4. 重哈希把无上限遍历写入固定栈数组
NTree_CreateHashAtNode 在栈上分配 500 个指针,但没有把容量传给 btreeReadToArray;后者只知道输出首地址。500 个节点并不是安全上限,因为还需要一个结束项。
// NTree_CreateHashAtNodeNode *items[500];btreeReadToArray(root, items);// btreeReadToArrayi = 0;do { out[i++] = node; // 无 i < 500 检查 node = NTree_NextSibling(node);} while (node != NULL);out[i] = NULL; // 第 500 节点时写 out[500]
遍历到 500 个节点,节点指针已填满数组,随后写入结束 NULL 会落到数组外
04
漏洞复现
360漏洞研究院已成功复现 Windows DNS 服务器远程代码执行漏洞(CVE-2026-62878),向目标 Windows DNS 服务器端口发送请求,成功触发栈缓冲区溢出。
已关注
关注
重播 分享 赞
关闭
观看更多
更多
退出全屏
切换到竖屏全屏退出全屏
360漏洞研究院已关注
分享视频
,时长00:19
0/0
00:00/00:19
切换到横屏模式
继续播放
[ ]
进度条,百分之0
播放
00:00
/
00:19
00:19
倍速
全屏
倍速播放中
0.5倍0.75倍1.0倍1.5倍2.0倍
超清流畅
继续观看
【已复现】CVSS 9.8 Windows DNS 栈溢出漏洞(CVE-2026-62878)细节分析
观看更多
原创
,
【已复现】CVSS 9.8 Windows DNS 栈溢出漏洞(CVE-2026-62878)细节分析
360漏洞研究院已关注
分享点赞在看
已同步到看一看写下你的评论
视频详情
CVE-2026-62878
Windows DNS 服务器远程代码执行漏洞复现
05
时间线
2026年8月17日,360漏洞研究院发布本安全风险通告。
06
参考链接
https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-62878
07
更多漏洞情报
“扫描下方二维码,进入公众号粉丝交流群。更多一手网安资讯、漏洞预警、技术干货和技术交流等您参与!”
建议您订阅360数字安全-漏洞情报服务,获取更多漏洞情报详情以及处置建议,让您的企业远离漏洞威胁。
邮箱:[email protected]
网址:https://vi.loudongyun.360.net
“洞”悉网络威胁,守护数字安全
关于我们
360 漏洞研究院,隶属于360数字安全集团。其成员常年入选谷歌、微软、华为等厂商的安全精英排行榜, 并获得谷歌、微软、苹果史上最高漏洞奖励。研究院是中国首个荣膺Pwnie Awards“史诗级成就奖”,并获得多个Pwnie Awards提名的组织。累计发现并协助修复谷歌、苹果、微软、华为、高通等全球顶级厂商CVE漏洞3000多个,收获诸多官方公开致谢。研究院也屡次受邀在BlackHat,Usenix Security,Defcon等极具影响力的工业安全峰会和顶级学术会议上分享研究成果,并多次斩获信创挑战赛、天府杯等顶级黑客大赛总冠军和单项冠军。研究院将凭借其在漏洞挖掘和安全攻防方面的强大技术实力,帮助各大企业厂商不断完善系统安全,为数字安全保驾护航,筑造数字时代的安全堡垒。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:360漏洞研究院 360漏洞研究院 360漏洞研究院《【已复现】CVSS 9.8 Windows DNS 栈溢出漏洞(CVE-2026-62878)细节分析》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论