CVE-2026-41108 — Windows DNS Client Elevation of Privilege Vulnerability
Executive Summary
Heap-based buffer overflow in Microsoft Windows DNS allows an authorized attacker to elevate privileges locally.
Overview
CVSS Vector
CVSS:3.1/AV:L/AC:H/PR:L/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 10 Version 1607 for 32-bit Systems | 5094122 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1607 for x64-based Systems | 5094122 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1809 for 32-bit Systems | 5094123 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1809 for x64-based Systems | 5094123 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for 32-bit Systems | 5094127 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for ARM64-based Systems | 5094127 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for x64-based Systems | 5094127 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for 32-bit Systems | 5094127 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for ARM64-based Systems | 5094127 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for x64-based Systems | 5094127 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 23H2 for ARM64-based Systems | 5093998 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 23H2 for x64-based Systems | 5093998 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 24H2 for ARM64-based Systems | 5094126 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 24H2 for x64-based Systems | 5094126 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 25H2 for ARM64-based Systems | 5094126 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 25H2 for x64-based Systems | 5094126 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 26H1 for ARM64-based Systems | 5095051 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 version 26H1 for x64-based Systems | 5095051 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 | 5094042 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 (Server Core installation) | 5094042 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 R2 | 5094041 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 R2 (Server Core installation) | 5094041 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2016 | 5094122 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2016 (Server Core installation) | 5094122 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2019 | 5094123 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2019 (Server Core installation) | 5094123 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2022 | 5094128 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2022 (Server Core installation) | 5094128 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2025 | 5094125 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2025 (Server Core installation) | 5094125 (Security Update) |
Important | Elevation of Privilege | Yes |
Patches
| Article | Type | Restart |
|---|---|---|
5094122 |
Security Update | Yes |
5094123 |
Security Update | Yes |
5094127 |
Security Update | Yes |
5093998 |
Security Update | Yes |
5094126 |
Security Update | Yes |
5095051 |
Security Update | Yes |
5094042 |
Monthly Rollup | Yes |
5094041 |
Monthly Rollup | Yes |
5094128 |
Security Update | Yes |
5094125 |
Security Update | Yes |
Patch Diff
Heap-based buffer overflow (CWE-122) in the Windows DNS client dnsapi.dll, local elevation of privilege to SYSTEM (Important, AV:L, AC:H race, CVSS 7.0). Dns_WriteStringToPacket(write_ptr, end_ptr, string, flag) serialises a name/label into the DNS packet buffer as a length-prefixed string. PRE: once the computed length passed the < 0x100 check, the function wrote the one-byte length prefix *write_ptr = (char)len BEFORE verifying that write_ptr was still inside the buffer (write_ptr < end_ptr). When the write pointer had already reached end_ptr, that length-prefix store landed one byte past the heap-allocated packet buffer - a one-byte heap overflow, reached by winning a race on the buffer state (MSRC AC:H). Because the DNS client runs in a service context, a successful overflow yields SYSTEM. Diff of dnsapi.dll 10.0.26100.8521 -> .8655 (Jun 9 2026, KB5094126) shows a single code-changed function, Dns_WriteStringToPacket: gated behind CFR flag Feature_3831740731, the fix adds a write_ptr < end_ptr precondition around the whole prefix-write-and-copy block ((feature == 0) || (write_ptr < end_ptr)), so the length byte can no longer be written at or past the buffer end; the boundary case now returns ERROR_BUFFER_OVERFLOW (0xea).
| Function | Address | Change | Note |
|---|---|---|---|
Dns_WriteStringToPacket |
code change |
code (length-prefix write now bounds-guarded, CFR-gated) | Pre: *write_ptr = (char)len executed whenever len < 0x100, before checking write_ptr < end_ptr - a one-byte OOB heap write at the buffer boundary. Post (Feature_3831740731): adds ((feature == 0) || (write_ptr < end_ptr)) precondition around the length-prefix store and the subsequent memcpy/Dns_StringCopy; boundary case falls through to ERROR_BUFFER_OVERFLOW. |
Feature_3831740731 |
gate |
added (CFR gate) | CFR flag gating the write_ptr < end_ptr bounds check in Dns_WriteStringToPacket; the original unconditional length-prefix write still ships when the flag is disabled. |
Attack Path
A length-prefix byte is written past the DNS packet buffer end, overflowing the heap by one byte
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
Detection Rules
Acknowledgments
WARP team at Microsoft