CVE-2026-41096 — Windows DNS Client Remote Code Execution Vulnerability
Executive Summary
Heap-based buffer overflow in Microsoft Windows DNS allows an unauthorized attacker to execute code over a network.
Overview
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C
EPSS Score
Affected Products
| Product | KB Article | Severity | Impact | Restart Required |
|---|---|---|---|---|
| Windows 11 Version 23H2 for ARM64-based Systems | 5087420 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 11 Version 23H2 for x64-based Systems | 5093998 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 11 Version 24H2 for ARM64-based Systems 5089549 (Security Update) 5089466 (Security Hotpatch Update) Critical Remote Code Execution 5082063 Base: 9.8 Temporal: 8.5 Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.26100.8457 10.0.26100.8390 Yes None Windows 11 Version 24H2 for x64-based Systems 5089549 (Security Update) 5089466 (Security Hotpatch Update) Critical Remote Code Execution 5082063 Base: 9.8 Temporal: 8.5 Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.26100.8457 10.0.26100.8390 Yes None Windows 11 Version 25H2 for ARM64-based Systems 5089549 (Security Update) 5089466 (Security Hotpatch Update) Critical Remote Code Execution 5083769 Base: 9.8 Temporal: 8.5 Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.26200.8457 10.0.26200.8390 Yes None Windows 11 Version 25H2 for x64-based Systems 5089549 (Security Update) 5089466 (Security Hotpatch Update) Critical Remote Code Execution 5083769 Base: 9.8 Temporal: 8.5 Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 10.0.26200.8457 10.0.26200.8390 Yes None Windows 11 Version 26H1 for ARM64-based Systems | 5089548 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 11 version 26H1 for x64-based Systems | 5089548 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server 2022, 23H2 Edition (Server Core installation) | 5087541 (Security Update) |
Critical | Remote Code Execution | Yes |
Patches
| Article | Type | Restart |
|---|---|---|
5087420 |
Security Update | Yes |
5093998 |
Security Update | Yes |
5089548 |
Security Update | Yes |
5087541 |
Security Update | Yes |
Patch Diff
Heap-based buffer overflow (CWE-122) in the Windows DNS client dnsapi.dll DNS-response UDP-truncation path, unauthenticated remote code execution (Critical, AV:N, CVSS 9.8). When the DNS client processes a response and prepares/truncates the message for UDP, DnsRawTruncateMessageForUdp relocates the OPT (EDNS0) record within the message buffer via memmove(_Dst, source, length) and recomputes the message length. PRE: the destination/source pointer relationship and the moved length were not adequately bounded, so a crafted DNS response (attacker-controlled record layout / OPT record) could drive the memmove to write past the heap message buffer - a heap overflow. Because the DNS client parses responses received over the network with no authentication, this is a remote code-execution primitive (Microsoft rates it Critical 9.8). Diff of dnsapi.dll 10.0.26100.8328 -> .8457 (May 12 2026, KB5089549) confirms the fix: gated behind CFR flag Feature_2032384314, DnsRawTruncateMessageForUdp adds validation before the OPT-record move - it checks the source/destination pointer relationship (local_48 < _Dst) and bounds the recomputed offset/length to below 0x10000 (if (pbVar4 < 0x10000) ...) before setting the truncated length, so the move and length can no longer overflow the buffer.
| Function | Address | Change | Note |
|---|---|---|---|
DnsRawTruncateMessageForUdp |
code change |
code (OPT-record move now bounds-checked, CFR-gated) | Pre: memmove of the OPT/EDNS0 record during UDP truncation with an unbounded dest/length. Post (Feature_2032384314): validates source<dest (local_48 < _Dst) and bounds the computed offset/length (< 0x10000) before the memmove and before storing the truncated length at +0x2ba. |
DnsRawCreateQueryResult / DnsRawFindOptRecord / Dns_CacheServiceInitEx |
code change |
code (response-parsing hardening) | Related DNS raw-response parsing/OPT handling updated in the same May DNS-client hardening update. |
Feature_2032384314 |
gate |
added (CFR gate) | CFR flag gating the bounds checks in DnsRawTruncateMessageForUdp; the original unbounded move still ships when disabled. (Several other DNS feature flags present in this update.) |
Attack Path
A crafted DNS response drives an unbounded OPT-record memmove during UDP truncation, overflowing the heap message buffer
Derived from the patch delta: the checks added by the vendor identify which fields crossed a trust boundary unvalidated. Reachability and privilege are taken from the call chain in the RCA report.
Exploits & PoC
5 public PoCsUnverified third-party code
Public proof-of-concept repositories aggregated from PoC-in-GitHub. They are not reviewed and may be incomplete, non-functional, or malicious — inspect the code before running anything.
| Repository | Stars | Published | Description |
|---|---|---|---|
| satchfunky/CVE-2026-41096-POC | 38 | 2026-05-24 | windows api bug |
| TwoSevenOneT/CVE-2026-41096-Attack-Surface | 14 | 2026-06-04 | Attack surface in the real-world environment of CVE-2026-41096 |
| mrk336/DNS-Mayhem-CVE-2026-41096-Deep-Dive | 4 | 2026-05-15 | In‑depth technical analysis of CVE‑2026‑41096, a critical heap overflow in Windows DNSAPI.dll enabling remote code execution via crafted DNS responses. Includes attack vectors, patch insights, and def |
| m0n1x90/CVE-2026-41096 | 3 | 2026-05-24 | CVE-2026-41096: Heap Overflow in the Windows DNS Client |
| personnumber3377/dns_client_fuzzing | 0 | 2026-06-23 | Fuzzing the Microsoft Windows DNS client library. Inspired by CVE-2026-41096. |
Detection Rules
Acknowledgments
WARP team at Microsoft