Critical CVSS 9.8 EPSS 0.01932 🔬 Patch diffed 2026-05 archive

Executive Summary

Heap-based buffer overflow in Microsoft Windows DNS allows an unauthorized attacker to execute code over a network.

Overview

9.8
CVSS CRITICAL
Critical
MS Severity
Not Exploited
MS Exploit Status
Exploitation Unlikely
MS Exploit Likelihood
Category Remote Code Execution
Released May 12 2026
Last Updated May 12 2026
Publicly Disclosed No
CISA KEV Not Listed
Known Exploits None Known
EPSS Score 0.01932 — 0.78232 percentile
NVD CVSS 9.8 CRITICAL — matches MSRC

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
ATTACK VECTOR
Network
ATTACK COMPLEXITY
Low
PRIVILEGES REQUIRED
None
USER INTERACTION
None
SCOPE
Unchanged
CONFIDENTIALITY
High
INTEGRITY
High
AVAILABILITY
High
EXPLOIT CODE MATURITY
Unproven
REMEDIATION LEVEL
Official Fix
REPORT CONFIDENCE
Confirmed
Temporal Score: 8.5

EPSS Score

0.01932
probability of exploitation in the next 30 days
0.78232 percentile - updated 2026-08-14
View on FIRST.org

Affected Products

5 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

4 patches
Article Type Restart
5087420 Security Update Yes
5093998 Security Update Yes
5089548 Security Update Yes
5087541 Security Update Yes

Patch Diff

ghidriff · dnsapi.dll (KB5089549)

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.

Pre-patch version 10.0.26100.8328 Download
Post-patch version 10.0.26100.8457 Download
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.)
View full diff report View RCA report

Attack Path

A crafted DNS response drives an unbounded OPT-record memmove during UDP truncation, overflowing the heap message buffer

Attack path for CVE-2026-41096 A crafted DNS response drives an unbounded OPT-record memmove during UDP truncation, overflowing the heap message buffer 01 — ENTRY Attacker sends a crafted DNS response to the target's DNS client dnsapi.dll parses the response and prepares it for UDP via DnsRawTruncateMessageForUdp. AV:N/PR:N/UI:N (unauthenticated network). 02 — CONTROLLED INPUT Shapes the response records / OPT (EDNS0) record layout Controls the source offset and length used when the OPT record is relocated within the message buffer. 03 — MISSING CHECK OPT-record memmove dest/length unbounded (CWE-122) memmove(_Dst, source, length) during truncation writes past the heap message buffer for a crafted layout. 04 — PATH Heap message buffer overflows in the DNS client The over-move corrupts adjacent heap memory while building the truncated response. 05 — PRIMITIVE Heap overflow in the network-facing DNS client -> RCE The May 2026 fix (Feature_2032384314) bounds the source/dest relationship and the move length (< 0x10000).

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 PoCs
RepositoryStarsPublishedDescription
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