【已复现】CVSS9.8WindowsDNS栈溢出漏洞(CVE-2026-62878)细节分析

admin 2026-08-18 05:16:15 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 360漏洞研究院披露WindowsDNSServer栈溢出漏洞CVE-2026-62878,CVSS评分9.8。未经身份验证的远程攻击者可发送特制数据包触发远程代码执行。根因在于NTree重哈希时使用固定500指针栈数组且无容量检查,当遍历到500个节点时写入结束NULL导致越界。影响多个WindowsServer版本,建议立即通过WindowsUpdate或手动安装补丁修复。 综合评分: 91 文章分类: 漏洞分析,应急响应,安全建设,解决方案,漏洞预警


cover_image

【已复现】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 :&nbsp;3;canon_len = Dns_DowncaseNameLabel(canonical, Src, Size, mode);if&nbsp;(canon_len == -1) {&nbsp; &nbsp;SetLastError(ERROR_INVALID_NAME); &nbsp; &nbsp;&nbsp;// 123return&nbsp;NULL;}//Dns_DowncaseNameLabelfor&nbsp;(i =&nbsp;0; i < Size; ++i) { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;// 显式长度,而非遇 NUL 停止&nbsp; &nbsp;canonical[i] = Src[i];if&nbsp;(invalid_character(Src[i]))&nbsp; &nbsp; &nbsp; &nbsp;flags |= INVALID;}if&nbsp;((flags & INVALID) && mode !=&nbsp;3)return&nbsp;-1;

因此默认名称检查会在节点创建前阻断该类标签;NameCheckFlag=3 会改变这个策略结果,并不修复后续 NTree 数据结构缺陷。

3.2.2. 节点比较能区分,而哈希分桶不能区分

节点插入时,NTree_FindOrCreateChildNodeEx 先基于规范化标签的前四字节产生 quick-compare 值,再由 walkBinaryTree 用 quick 值和显式标签长度定位节点。实验标签在前四字节中保留差异,因而可以成为不同节点。

// walkBinaryTree 的关键比较顺序if&nbsp;(input_quick < node->quick) go_left();if&nbsp;(input_quick > node->quick) go_right();diff&nbsp;= input_len - node->label_length;if&nbsp;(input_len >&nbsp;4&nbsp;&& node->label_length >&nbsp;4)&nbsp; &nbsp;diff&nbsp;= strncmp(input_canonical, node->canonical_label, input_len);if&nbsp;(diff&nbsp;==&nbsp;0)&nbsp; &nbsp;return&nbsp;node;

但重哈希时,NTree_HashTableIndexEx 的行为不同:它从 canonical 副本中读取字符;一旦读到 NUL,立即返回桶 0,并没有使用保存的标签长度继续读取。

// NTree_HashTableIndexEx 的关键逻辑for&nbsp;(i =&nbsp;0; ; ++p) {&nbsp; &nbsp;ch = *p;&nbsp; &nbsp;if&nbsp;(ch ==&nbsp;0)&nbsp; &nbsp; &nbsp; &nbsp;return&nbsp;0; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 所有首字节 NUL 的标签均进入桶 0&nbsp; &nbsp;if&nbsp;(++i > hash->depth)&nbsp; &nbsp; &nbsp; &nbsp;return&nbsp;ch;}

这就是语义不一致:同一份逻辑标签在“是否为不同树节点”上使用显式长度/quick 值,在“进入哪个 hash 桶”上却使用 NUL 终止语义。

3.2.3. 同桶累积触发重复重哈希

每次新节点插入后,普通兄弟树超过阈值会创建哈希节点;若已经处于哈希节点,则 NTree_AddNodeInHashBucket 对对应桶计数加一,到达阈值后再次调用 NTree_CreateHashAtNode。目标版在这个调用点没有观察到与深度相关的停止条件。

bucket = NTree_HashTableIndexEx(new_node, NULL,&nbsp;hash->depth);count = ++hash->bucket_count[bucket];if&nbsp;(count >= 0x40)&nbsp; &nbsp;NTree_CreateHashAtNode(hash->bucket[bucket])

因为第二步使这些节点反复落入桶 0,每一层哈希都无法把它们真正分散开,从而持续满足下一次重哈希的条件。

3.2.4. 重哈希把无上限遍历写入固定栈数组

NTree_CreateHashAtNode 在栈上分配 500 个指针,但没有把容量传给 btreeReadToArray;后者只知道输出首地址。500 个节点并不是安全上限,因为还需要一个结束项。

// NTree_CreateHashAtNodeNode *items[500];btreeReadToArray(root, items);// btreeReadToArrayi =&nbsp;0;do&nbsp;{&nbsp; &nbsp;out[i++] = node; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;// 无 i < 500 检查&nbsp; &nbsp;node = NTree_NextSibling(node);}&nbsp;while&nbsp;(node !=&nbsp;NULL);out[i] =&nbsp;NULL; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;// 第 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倍

超清流畅

 您的浏览器不支持 video 标签

继续观看

【已复现】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)细节分析》

评论:0   参与:  0