Skip to main content
Live Webinar with SANS (June 25)— Agentic CTI Automation for Fun & ProfitRegister Free
Mallory
CriticalPublic exploit

Windows DNS Client Remote Code Execution Vulnerability

IdentifiersCVE-2026-41096CWE-122· Heap-based Buffer Overflow

CVE-2026-41096 is a critical heap-based buffer overflow in the Microsoft Windows DNS Client that can lead to remote code execution. The flaw is triggered when a vulnerable Windows system processes a specially crafted DNS response. Multiple sources in the provided content describe the issue as improper handling of attacker-controlled DNS response data by the DNS client, resulting in heap memory corruption. The affected component is consistently identified as Windows DNS Client, with some reporting pointing to DNSAPI.dll and patch-diff/crash-reproduction material noting a deterministic pre-patch crash in ws2_32.dll!ConvertWStrToHash, while also suggesting webio.dll as a likely remote exploitation surface. Microsoft classifies the issue as a heap-based buffer overflow / heap out-of-bounds condition and rates it CVSS 9.8.

Share:
For your environment

Are you exposed to this one?

Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.

ANALYST BRIEF

Impact, mitigation & remediation

What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.

Impact

What an attacker gets, and what they’ve been doing with it.

Successful exploitation can allow unauthenticated remote code execution on the affected Windows system. Because the vulnerability is reachable through DNS responses and the DNS Client runs on virtually all Windows endpoints and servers, compromise could enable broad endpoint takeover, arbitrary code execution in the context of the vulnerable process, follow-on malware deployment, credential theft, lateral movement, ransomware activity, and operational disruption across enterprise environments. The CVSS vector provided in the content indicates high impact to confidentiality, integrity, and availability.

Mitigation

If you can’t patch tonight, do this now.

If immediate patching is not possible, reduce exposure by restricting DNS resolution to trusted resolvers only, limiting systems' ability to receive DNS responses from untrusted networks, rogue local infrastructure, hostile public Wi-Fi, or attacker-influenced resolvers. Monitor for suspicious child processes or anomalous execution chains spawned by background network services associated with DNS activity. Prioritize systems that frequently connect to untrusted networks or rely on externally influenced DNS paths. These measures are compensating controls only and do not remove the underlying flaw.

Remediation

Patch, then assume compromise.

Apply Microsoft's May 12, 2026 security updates that address CVE-2026-41096. The content specifically references KB5089548 as the fix and notes that Microsoft remediated the issue by modifying multiple binaries. Organizations should deploy the relevant cumulative updates for affected Windows platforms, including affected Windows 11 and Windows Server releases, on a priority basis due to the vulnerability's pre-auth, network-reachable nature and broad attack surface.
PUBLIC EXPLOITS

Exploits

3 valid exploits after Mallory filtered fakes, detection scripts, and README-only repos (2 hidden).

VALID 3 / 5 TOTALView more in app
CVE-2026-41096-Attack-SurfaceMaturityPoCVerified exploit

This repository is a small Visual Studio C++ project that builds a Windows dynamic-link library acting as a dnsapi.dll proxy/hijack implant. The structure is minimal: a solution file, a VC++ project file, one main source file (dllmain.cpp), and standard precompiled-header scaffolding. The README references CVE-2026-41096 and describes the repository as a real-world attack surface example rather than a polished exploit framework. The core logic is in dllmain.cpp. The DLL uses many linker export-forwarding directives to preserve the dnsapi export surface by forwarding calls to a renamed backing DLL identified as 'tmpbwnkjl'. This is a classic proxy DLL pattern intended to keep the host application functioning while allowing attacker code to run when the malicious DLL is loaded. The code explicitly exports DnsQueryRaw and overrides its behavior. When DnsQueryRaw is invoked, it emits a debug string, calls LogProcessInfo(), records the current process filename and PID to C:\tmp\rlog.txt, and returns DNS_STATUS_TIMEOUT. Operationally, this is not a remote network exploit by itself; it is a local execution primitive/persistence or hijack component that depends on DLL search-order abuse, side-loading, or replacement of dnsapi.dll in a vulnerable application context. Its main capability is code execution inside any process that loads the malicious DLL, with lightweight telemetry/logging and behavior tampering for DnsQueryRaw. There is no shell, downloader, C2, or external network infrastructure embedded in the visible code. The observable artifacts are primarily the local log path and the forwarding target name used to chain to the legitimate DLL.

TwoSevenOneTDisclosed Jun 4, 2026cppxmllocalfile
CVE-2026-41096MaturityPoCVerified exploit

This repository is a compact two-component proof-of-concept for CVE-2026-41096, described as a heap overflow in Microsoft dnsapi.dll within DnsRawTruncateMessageForUdp(). The repo contains three files: a README with usage and expected outcomes, a Python rogue DNS server, and a Win32 C trigger client. The exploit flow is straightforward: rogue_dns_server.py binds UDP/53 on 0.0.0.0 and answers every received DNS query with a deliberately malformed DNS response whose header sets QDCOUNT=0 and ARCOUNT=1, followed by a single oversized OPT record. The response is 623 bytes total (12-byte DNS header + 11-byte OPT RR header + 600 bytes of RDATA), intentionally exceeding normal UDP DNS truncation expectations. trigger_client.c is the victim-side trigger. It loads dnsapi.dll dynamically, resolves DnsQueryRaw, configures a custom UDP DNS server using the operator-supplied IP, and submits an asynchronous query for trigger.cve202641096.test. A completion callback records the result, while SetUnhandledExceptionFilter is used to catch process-wide crashes, including those on callback threads. The client interprets outcomes as: patched if queryStatus is DNS_ERROR_BAD_PACKET (0x251E), vulnerable if a crash occurs or if status 0 indicates the malformed response was processed. This is not a weaponized RCE exploit; it is an operational crash/verification PoC intended to confirm the presence of the heap overflow via network-triggered malformed DNS parsing.

m0n1x90Disclosed May 24, 2026pythoncnetwork
CVE-2026-41096-POCMaturityPoCVerified exploit

This repository is a small proof-of-concept for a Windows DNS client-side vulnerability in the DnsQueryRaw path, specifically noted in DnsRawTruncateMessageForUdp. It contains two code files and a README. client.c is the victim-side trigger: a minimal Windows program using the WinDNS API to repeatedly call DnsQueryRaw for example.com over UDP with DNS_QUERY_BYPASS_CACHE, asynchronously waiting on a callback. The code requires manual configuration of the network interface index and appears intended to force the vulnerable parsing path on Windows 11 / certain Windows Server builds. poc.py is the attacker-side network trigger built with Scapy. It sniffs UDP/53 traffic on a specified interface, looks for DNS queries for www.example.com., extracts the DNS transaction ID, and sends back a handcrafted raw DNS response rather than using Scapy's DNS builder. The malformed response is notable for qdcount=0 and inclusion of only an OPT RR (EDNS0 type 41) with a large 0xff-length data section padded with 0x42 bytes, which the README states is necessary to trigger the bug. Overall, the repository is not a complete RCE exploit; it is a targeted network-triggering PoC intended to crash or otherwise exercise the vulnerable DNS parsing logic. There is no persistence, shell payload, or post-exploitation logic. The structure is straightforward: README for setup notes, client.c to invoke the vulnerable API on the target, and poc.py to generate the malicious DNS response.

satchfunkyDisclosed May 24, 2026cpythonnetwork
EXPOSURE SURFACE

Affected products & vendors

Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.

VendorProductType
Microsoft CorporationWindowsoperating_system
Microsoft CorporationWindows 11 23h2operating_system
Microsoft CorporationWindows 11 24h2operating_system
Microsoft CorporationWindows 11 25h2operating_system
Microsoft CorporationWindows 11 26h1operating_system
Microsoft CorporationWindows Dnsoperating_system
Microsoft CorporationWindows Server 2022 23h2operating_system
Microsoft CorporationWindows Server 2025operating_system
Microsoft CorporationWindows Server 23h2operating_system

Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.

ACTIVITY FEED

Recent activity

60 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.

What this page doesn’t show

The version that knows your environment.

This page is what’s public. Mallory adds the parts that aren’t: which of your assets are affected, which adversaries are exploiting it right now, which detections to deploy, and what to do tonight.
Exposure mapping

Query your assets running an affected version, and investigate the blast radius.

Threat actor evidence

Every observed campaign linking this CVE to a named adversary.

Associated malware

Malware families riding this exploit, with evidence and IOCs.

Detection signatures

YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.

Vendor-by-vendor mapping

Cross-references every affected SKU, including bundled OEM variants.

Social activity40

Community discussion across Reddit, Mastodon, and other social sources.