m0n1x90/CVE-2026-41096

GitHub: m0n1x90/CVE-2026-41096

一个堆溢出漏洞 CVE-2026-41096 的概念验证工具,包含恶意 DNS 服务器和触发客户端,用于确认 Windows DNS 客户端在处理特殊响应时是否发生崩溃。

Stars: 2 | Forks: 2

# CVE-2026-41096 - 崩溃概念验证 `DnsRawTruncateMessageForUdp()`(dnsapi.dll)中存在堆溢出。当截断逻辑错误计算目标指针时,精心构造的包含 `QDCOUNT=0` 和大 OPT 记录的 DNS 响应会导致 604 字节的堆溢出。 **MSRC 公告:** https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-41096 ## 组件 | 文件 | 描述 | |---|---| | `rogue_dns_server.py` | 恶意 DNS 服务器(Python 3)。对每个查询回复 QDCOUNT=0 + OPT 响应(623 字节)。 | | `trigger_client.c` | 触发客户端(C/Win32)。调用指向恶意服务器的 `DnsQueryRaw`。通过 `SetUnhandledExceptionFilter` 捕获崩溃。 | ## 要求 **攻击者(恶意服务器):** - Python 3 - root/管理员权限(端口 53) **受害者(触发客户端):** - 运行 DnsCache 服务的 Windows 操作系统(需要 `DnsQueryRaw`) - 存在漏洞的 `dnsapi.dll` 版本 - Visual Studio / Windows SDK(用于编译) ## 使用方法 **1. 启动恶意服务器:** ``` sudo python3 rogue_dns_server.py ``` **2. 编译并运行触发客户端:** ``` cl /W4 /O2 trigger_client.c /link ws2_32.lib trigger_client.exe ``` **3. (可选)启用 Page Heap 以获得确定性崩溃:** ``` gflags /p /enable trigger_client.exe /full trigger_client.exe ``` ## 退出代码 | 代码 | 含义 | |---|---| | 0 | 系统已修补(`DNS_ERROR_BAD_PACKET` 正常返回) | | 1 | 错误(未找到 DnsQueryRaw、网络问题等) | | 2 | 检测到崩溃(确认堆溢出) | ## 示例输出 **存在漏洞(Page Heap):** ``` [*] 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. ``` **存在漏洞(无 Page Heap):** ``` [*] 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. ```
标签:CVE, dnsapi.dll, DnsQueryRaw, DNS协议, Linux, ODS, PoC, Python, UDP, Win32 API, Windows, Windows DNS客户端, 内存破坏, 堆溢出, 安全漏洞, 客户端加密, 恶意DNS服务器, 拒绝服务, 数字签名, 无后门, 暴力破解, 系统漏洞, 缓冲区溢出, 远程攻击