Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
dnsmasq-cve-2026 — أداة تحقق أوتوماتيكية من العيوب لـ 6 ثغرات في dnsmasq (CVE-2026-2291, 4890, 4891, 4892, 4893, 5172) | Kitploit
أدوات/GitHubGitHub/jianrongxiao-linksys/dnsmasq-cve-2026
تحليل الثغرات الأمنيةالاستغلالالاختبار العشوائيأمن الشبكاتاختبار الاختراقتحليل الملفات الثنائيةتحليل DNS
GitHubjianrongxiao-linksys/dnsmasq-cve-2026

dnsmasq-cve-2026

أداة تحقق أوتوماتيكية من العيوب لـ 6 ثغرات في dnsmasq (CVE-2026-2291, 4890, 4891, 4892, 4893, 5172)

عرض المستودع
4منذ 3 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

أداة التحقق من ثغرات dnsmasq CVE-2026

أداة صندوق أسود آلية للتحقق من 6 ثغرات في dnsmasq (مايو 2026). ترسل حزم هجوم إلى جهاز قيد الاختبار (DUT) وتُبلغ عن نجاح/فشل — بدون الحاجة إلى الوصول إلى الكود المصدري.

بداية سريعة

root@kitploit:~
# قم بتعيين DNS الخاص بـ DUT إلى عنوان IP للشبكة الواسعة (WAN) للابتوب عبر الواجهة الرسومية أولاً، ثم:
sudo python3 dnsmasq_cve_verify.py --laptop <YOUR_WAN_IP> --dut <DUT_LAN_IP> --dut-pass <SSH_PASS>

# مثال:
sudo python3 dnsmasq_cve_verify.py --laptop 10.0.0.211 --dut 192.168.1.1 --dut-pass '12345Asdf@'

الثغرات المختبرة

CVECVSSالنوعناقل الهجومالميزة المتأثرة
CVE-2026-22919.2تجاوز سعة المخزن المؤقت في الكومة (Heap overflow)عن بُعدextract_name() — نشط دائمًا
CVE-2026-51727.5قراءة خارج الحدود / تعطلعن بُعدextract_addresses() — نشط دائمًا
CVE-2026-48907.5حلقة لا نهائية (DoS)عن بُعدتحليل خريطة بت NSEC (--dnssec)
CVE-2026-48915.3قراءة خارج الحدود في الكومةعن بُعدالتحقق من RRSIG (--dnssec)
CVE-2026-48928.4تجاوز سعة الكومة → صلاحية الجذرمحلي/مجاورCLID الخاص بـ DHCPv6 (--dhcp-script + DHCPv6)
CVE-2026-48935.3تجاوز التحققعن بُعدفحص مصدر ECS (--add-subnet)

كيف يعمل كل اختبار

CVE-2026-2291 (حرج — تجاوز سعة الكومة في extract_name)

السبب الجذري: union bigname يُعلن char name[MAXDNAME] ولكن الأحرف المُستَثناة يمكنها توسيع الاسم إلى 2*MAXDNAME+1 بايت، مما يسبب تجاوزًا للكومة.

طريقة الاختبار: يُرسل استعلامات DNS تحتوي على أسماء نطاقات بأحرف ذات بت عالٍ (0x80+) والتي يتم هروبها داخليًا بصيغة \DDD (4 بايت لكل بايت مدخل). إذا تعطل dnsmasq أو توقف عن الاستجابة، فهو معرض للخطر.

السلوك المُصحَّح: يرفض الأسماء الكبيرة جدًا بأدب (FORMERR/REFUSED) أو يستخدم مخزنًا مؤقتًا موسعًا.

CVE-2026-5172 (عالٍ — قراءة خارج الحدود في extract_addresses)

السبب الجذري: حقل rdlen المُزَيَّف يسمح لـ extract_name() بتقديم المؤشر إلى ما بعد نهاية السجل. يؤدي نقص البايتات المتبقية إلى قيمة ضخمة → قراءة خارج الحدود ضخمة → تعطل.

طريقة الاختبار: يُرسل استجابات DNS مع سجلات CNAME حيث rdlen أصغر من الاسم المشفر الفعلي. إذا تعطل dnsmasq، فهو معرض للخطر.

السلوك المُصحَّح: يتحقق من بقاء المؤشر داخل حدود rdlen المُعلنة بعد extract_name().

CVE-2026-4890 (عالٍ — حلقة لا نهائية في NSEC لـ DNSSEC)

السبب الجذري: تحليل خريطة بت NSEC يتقدم بمقدار p[1] بدلاً من p[1]+2 (نقص حجم رأس النافذة). مع bitmap_length=0، لا يتقدم المؤشر أبدًا → حلقة لا نهائية.

طريقة الاختبار: يُرسل سجل NSEC مزيفًا مع window=0, bitmap_length=0. إذا توقف dnsmasq عن الاستجابة لجميع الاستعلامات (يعلق، لا يتعطل)، فهو معرض للخطر. يمكن استغلاله قبل التحقق من RRSIG.

السلوك المُصحَّح: يتقدم بمقدار p[1]+2 ويتجاوز الخرائط البتية ذات الطول الصفري.

CVE-2026-4891 (متوسط — قراءة خارج الحدود في الكومة في RRSIG)

السبب الجذري: rdlen في RRSIG لم يتم التحقق منه مقابل الحجم الأدنى (18 + اسم المُوَقِّع). طول التوقيع المحسوب يقل تحت الصفر → يُعامَل كقيمة ضخمة → قراءة خارج الحدود.

طريقة الاختبار: يُرسل سجلات RRSIG مع rdlen=10 (أقل بكثير من الحد الأدنى 31+ بايت). تعطل = معرض للخطر.

السلوك المُصحَّح: يتحقق من rdlen >= fixed_fields + signer_name_length قبل حساب طول التوقيع.

CVE-2026-4892 (عالٍ — CLID لـ DHCPv6 صلاحية الجذر المحلية)

السبب الجذري: CLIDs لـ DHCPv6 (حتى 65535 بايت) يتم ترميزها بصيغة ست عشرية عبر sprintf("%.2x") في daemon->packet (5131 بايت). CLID بحجم 3000 بايت → سلسلة ست عشرية بحجم 6000 بايت → تجاوز. عملية المساعد تعمل بصلاحية الجذر.

طريقة الاختبار: يُرسل SOLICIT لـ DHCPv6 مع معرّف عميل بحجم 3000 بايت. يتطلب الاتصال عبر IPv6 وتكوين --dhcp-script. تعطل المساعد = معرض للخطر.

السلوك المُصحَّح: يقتطع أو يتحقق من طول CLID قبل الترميز الست عشري.

ملاحظة: بعض الإصدارات تُجمَّع مع -DNO_DHCP6 ولا تتأثر بهذه الثغرة.

CVE-2026-4893 (متوسط — تجاوز التحقق من مصدر ECS)

السبب الجذري: process_reply() يمرر طول سجل OPT (~23 بايت) بدلاً من طول الحزمة الكامل إلى check_source(). جميع فحوصات الحدود تفشل → الدالة تعيد دائمًا 1 (صالح).

طريقة الاختبار: يُرسل استعلامات DNS مع خيار EDNS Client Subnet يحتوي على بادئات مصدر مزيفة. إذا قام dnsmasq بإرجاع ECS دون تحقق، فهو معرض للخطر.

السلوك المُصحَّح: يمرر طول الحزمة الكامل إلى check_source()، مما يتيح فحوصات حدود مناسبة وفقًا لـ RFC 7871 القسم 9.2.

المعالجة

الترقية إلى dnsmasq 2.92rel2 (مُوصى بها)

  • المصدر: https://thekelleys.org.uk/dnsmasq/dnsmasq-2.92rel2.tar.xz
  • التصحيحات من المنبع: https://thekelleys.org.uk/dnsmasq/CVE/

أداة التحقق الآلي من العيوب (dnsmasq_cve_verify.py)

أداة ضمان الجودة الأساسية. تُشغَّل على الابتوب المختبر، وترسل حزم هجوم إلى DUT، وتُبلغ عن نجاح/فشل واضح لكل ثغرة CVE. لا يلزم تعديل DUT أبعد من الوصول عبر SSH للقراءة فقط لفحص الحالة.

طوبولوجيا الشبكة

root@kitploit:~
┌─────────────────────────────────────────────────────────────────────┐
│                        الابتوب المختبر                               │
│                                                                      │
│   واجهة LAN                   واجهة WAN                             │
│   <LAPTOP_LAN_IP>             <LAPTOP_WAN_IP>                      │
│        │                               │                            │
│        │                          ┌────┴──────────────┐             │
│        │                          │ خادم DNS ضار      │             │
│        │                          │ (منفذ 53)         │             │
│        │                          └────┬──────────────┘             │
│        │                               │                            │
└────────┼───────────────────────────────┼────────────────────────────┘
         │ شبكة LAN فرعية                │ شبكة WAN فرعية
         │                               │
┌────────┼───────────────────────────────┼────────────────────────────┐
│        │                               │                            │
│   LAN: <DUT_LAN_IP>              WAN: <DUT_WAN_IP>                  │
│   (بوابة LAN)                    (رابط WAN)                         │
│                                                                      │
│              DUT (راوتر Linksys)                                     │
│              dnsmasq (أي إصدار < 2.92rel2)                          │
│                                                                      │
│   resolv-file=/etc/resolv.conf                                      │
│   → nameserver <LAPTOP_WAN_IP>  ← يُضبط عبر الواجهة الرسومية، يُمرر إلينا│
│                                                                      │
└─────────────────────────────────────────────────────────────────────┘

تدفق البيانات:
  1. ترسل الأداة استعلام DNS إلى عنوان IP لـ LAN الخاص بـ DUT (منفذ 53)
  2. لا يستطيع dnsmasq الخاص بـ DUT الحل محليًا → يُمرر upstream إلى LAPTOP_WAN_IP
  3. خادمنا الضار على واجهة WAN يرد بحمولة هجوم
  4. يعالج dnsmasq الخاص بـ DUT الاستجابة الضارة → تعطل/تعليق/نجاة
  5. تتحقق الأداة من حالة DUT عبر SSH (للقراءة فقط)

إعداد مثال (عنوان IP الخاص بك سيختلف):

الدورIP (مثال)
LAN الابتوب192.168.1.254
WAN الابتوب10.0.0.211
LAN DUT192.168.1.1
WAN DUT10.0.0.214

الشرط الأساسي: يجب أن يكون عنوان IP لـ WAN للابتوب و WAN لـ DUT على نفس الشبكة الفرعية، حتى يتمكن DUT من الوصول إلى الابتوب كخادم DNS upstream.

كيف تعمل

root@kitploit:~
┌──────────┐     ┌───────────┐     ┌──────────────────┐     ┌──────────┐
│  إعداد   │ ──► │  إطلاق    │ ──► │  فحص الحالة      │ ──► │  الحكم   │
│          │     │           │     │                  │     │          │
│ ابدأ     │     │ أرسل      │     │ SSH إلى DUT:     │     │ نجاح:    │
│ خادم DNS │     │ استعلام   │     │ - pidof dnsmasq  │     │ نجا      │
│ ضار على  │     │ DNS إلى   │     │ - تغير PID؟      │     │          │
│ واجهة    │     │ DUT→DUT   │     │ - تعطل في dmesg؟ │     │ فشل:     │
│ WAN      │     │ يُمرر إلينا│     │ - /var/log/msg   │     │ تعطل/    │
│ (10.0.0. │     │ → نرد     │     │                  │     │ تعليق    │
│ 211:53)  │     │ بحمولة    │     │ استعلام حيوية    │     │          │
│          │     │ هجوم      │     │ (version.bind)   │     │          │
└──────────┘     └───────────┘     └──────────────────┘     └──────────┘

ملاحظة: الأداة لا تُعدِّل إعدادات DUT. يجب على المستخدم ضبط DNS إلى 10.0.0.211 عبر الواجهة الرسومية.

إجراء اختبار ضمان الجودة

المتطلبات الأساسية

  • ابتوب اختبار مزود بواجهتي شبكة اثنتين (LAN + WAN)
  • Python 3.6+ مع تثبيت paramiko (pip install paramiko)
  • وصول SSH إلى DUT (بيانات اعتماد الجذر)
  • واجهة إدارة DUT (GUI) يمكن الوصول إليها

الخطوة 1: الاتصال الفيزيائي

قم بتوصيل الابتوب المختبر بـ DUT باستخدام كابلين:

منفذ الابتوبيتصل بـالغرض
منفذ LANمنفذ LAN الخاص بـ DUTوصول SSH + إرسال استعلامات DNS إلى DUT
منفذ WANشبكة WAN الفرعية لـ DUT (مثل منفذ السويتش/المودم upstream)يعمل كخادم DNS upstream

بعد الاتصال، قم بتدوين عناوين IP للابتوب الخاص بك:

root@kitploit:~
# ابحث عن عناوين IP الخاصة بك
ip addr show | grep "inet "
# مثال للمخرجات:
#   inet 192.168.1.254/24 ...  ← هذا هو عنوان LAN الخاص بك
#   inet 10.0.0.211/24 ...     ← هذا هو عنوان WAN الخاص بك (استخدمه مع --laptop)

الخطوة 2: ضبط DNS الخاص بـ DUT إلى الابتوب عبر الواجهة الرسومية

  1. افتح متصفحًا وانتقل إلى صفحة إدارة DUT:
    • مثلاً http://192.168.1.1 أو http://myrouter.local
  2. سجل الدخول ببيانات اعتماد المسؤول
  3. انتقل إلى: الاتصال → إعدادات الإنترنت → تحرير (بجانب IPv4)
  4. تحت DNS: اختر DNS ثابت
  5. قم بتعيين DNS 1 إلى عنوان WAN IP للابتوب الخاص بك (مثال 10.0.0.211)
  6. انقر تطبيق
  7. انتظر من 5 إلى 10 ثوانٍ لتفعيل الإعدادات

الخطوة 3: تشغيل الأداة

root@kitploit:~
cd /path/to/dnsmasq-cve-2026/

# تشغيل جميع اختبارات CVE الستة:
sudo python3 dnsmasq_cve_verify.py --laptop <YOUR_WAN_IP> --dut <DUT_LAN_IP> --dut-pass <SSH_PASSWORD>

# مثال:
sudo python3 dnsmasq_cve_verify.py --laptop 10.0.0.211 --dut 192.168.1.1 --dut-pass '12345Asdf@'

ستقوم الأداة بما يلي:

  1. الاتصال بـ DUT عبر SSH (للقراءة فقط)
  2. بدء خادم DNS ضار على عنوان WAN IP للابتوب
  3. التحقق من أن DUT يُمرر استعلامات DNS إليه
  4. إرسال حمولات هجوم لكل ثغرة CVE
  5. التحقق مما إذا كان dnsmasq قد تعطل أو توقف عن الاستجابة
  6. الإبلاغ عن نجاح/فشل لكل CVE

الخطوة 4: قراءة النتائج

  • نجاح = DUT آمن (الميزة غير نشطة، أو نجا من الهجوم)
  • فشل = تعطل dnsmasq أو توقف عن الاستجابة (معرض للخطر!)
  • خطأ = تعذر الاتصال أو DUT لا يُمرر الاستعلامات

الخطوة 5: استعادة DNS الخاص بـ DUT

  1. عد إلى واجهة إدارة DUT
  2. الاتصال → إعدادات الإنترنت → تحرير
  3. تحت DNS: اختر تلقائي (من مزود الخدمة) أو قم بإزالة الإدخال الثابت
  4. انقر تطبيق

استكشاف الأخطاء وإصلاحها

المشكلةالإصلاح
"DUT لا يُمرر الاستعلامات إلينا"تحقق من تنفيذ الخطوة 2 بشكل صحيح. تأكد من أن عنوان WAN IP للابتوب يطابق ما أدخلته في الواجهة الرسومية.
"لا يمكن الاتصال بـ DUT"تحقق من بيانات اعتماد SSH. جرب: ssh [email protected] يدويًا.
"لا يمكن ربط المنفذ 53"قم بالتشغيل باستخدام sudo. أو استخدم --dns-port 5353 (يتطلب تكوينًا يدويًا لـ DUT).
"الإصدار: غير معروف"قد لا يكون dnsmasq موجودًا في المسار القياسي على DUT. الأداة لا تزال تختبر بشكل صحيح.

نتائج الاختبار (2026-05-31)

منصة dnsmasq 2.78 (الإجمالي: نجاح)

CVEالنتيجةالسبب
CVE-2026-2291نجاحDNSSEC غير مُجمَّع
CVE-2026-4890نجاحDNSSEC غير مُجمَّع
CVE-2026-4891نجاحDNSSEC غير مُجمَّع
CVE-2026-4892نجاحdnsmasq لا يخدم DHCPv6 (يتم استخدام خادم DHCPv6 منفصل)
CVE-2026-4893نجاحخطأ منطقي فقط — لا تعطل
CVE-2026-5172نجاحنجا من الهجوم (مسار الكود المعرض غير موجود في 2.78)

منصة dnsmasq 2.90 (الإجمالي: نجاح)

CVEالنتيجةالسبب
CVE-2026-2291نجاحDNSSEC غير مُجمَّع
CVE-2026-4890نجاحDNSSEC غير مُجمَّع
CVE-2026-4891نجاحDNSSEC غير مُجمَّع
CVE-2026-4892نجاحDHCPv6 غير مُجمَّع
CVE-2026-4893نجاحخطأ منطقي فقط — لا تعطل
CVE-2026-5172نجاحنجا من متغيرات الهجوم

الاستنتاج

جميع راوترات Linksys التي تم اختبارها غير قابلة للاستغلال عمليًا لأي من الثغرات الست في تكوينات الإصدار الإنتاجي. الميزات الخطيرة (DNSSEC، DHCPv6 عبر dnsmasq) إما غير مُجمَّعة أو غير مُهيأة. لا تزال التصحيحات مُوصى بها كحماية متعمقة.

النتائج المتوقعة

قبل التصحيح (dnsmasq 2.78، بناء بدون DNSSEC):

CVEالنتيجةالسبب
CVE-2026-2291نجاحDNSSEC غير مُجمَّع — غير قابل للاستغلال
CVE-2026-4890نجاحDNSSEC غير مُجمَّع — غير قابل للاستغلال
CVE-2026-4891نجاحDNSSEC غير مُجمَّع — غير قابل للاستغلال
CVE-2026-4892نجاح/فشلDHCPv6 مُجمَّع و dhcp-script نشط
CVE-2026-4893نجاحخطأ منطقي — لا تعطل (يعتمد على الإصدار فقط)
CVE-2026-5172نجاحمسار blockdata_expand غير موجود في 2.78

قبل التصحيح (dnsmasq 2.90 مع تمكين DNSSEC):

CVEالنتيجةالسبب
CVE-2026-2291فشلتجاوز سعة الكومة عبر أسماء مُستَثناة
CVE-2026-4890فشلحلقة لا نهائية (تعلق)
CVE-2026-4891فشلتعطل بسبب قراءة خارج الحدود في RRSIG
CVE-2026-4892نجاح/فشليعتمد على DHCPv6 + تكوين البرنامج النصي
CVE-2026-4893نجاحخطأ منطقي — لا تعطل
CVE-2026-5172فشلقراءة خارج الحدود عبر rdlen مزيف

بعد التصحيح (dnsmasq 2.92rel2 أو تطبيق التصحيحات من المنبع): جميع الثغرات الست → نجاح

المتطلبات

  • Python 3.6+ مع paramiko (pip install paramiko)
  • صلاحية الجذر/ sudo على الابتوب (لربط DNS على المنفذ 53)
  • وصول SSH إلى DUT (للقراءة فقط — يُستخدم لفحوصات حالة العملية)
  • ابتوب متصل بشبكة LAN الخاصة بـ DUT (شبكة 192.168.1.x)

مرجع الخيارات

العلمالقيمة الافتراضيةالوصف
--laptop(إلزامي)عنوان WAN IP للابتوب (يربط خادم DNS الضار هنا)
--dut192.168.1.1عنوان LAN IP لـ DUT (تُرسل استعلامات SSH + DNS هنا)
--dut-userrootاسم مستخدم SSH لـ DUT
--dut-pass(يُطلب)كلمة مرور SSH لـ DUT
--dns-port53المنفذ لخادم DNS الضار
--cveجميع الـ 6CVE محددة للاختبار (قابلة للتكرار)

أدوات أخرى

اختبار الصندوق الأسود عن بُعد (test_dnsmasq_cve_remote.py)

فحص إصدار خفيف الوزن فقط — يستعلم عن version.bind لتحديد ما إذا كان إصدار dnsmasq أقل من الإصدار المُصحَّح. لا حاجة لـ SSH، ولا إعداد، ولا حمولات هجوم.

root@kitploit:~
python3 test_dnsmasq_cve_remote.py 192.168.1.1

نص برمجي على الجهاز (test_dnsmasq_cve_on_device.sh)

يُشغَّل مباشرة على DUT عبر SSH/منفذ تسلسلي. يتحقق من إصدار الثنائي وخيارات التجميع.

root@kitploit:~
scp test_dnsmasq_cve_on_device.sh [email protected]:/tmp/
ssh [email protected] "sh /tmp/test_dnsmasq_cve_on_device.sh"

خادم DNS ضار (malicious_dns_server.py)

خادم هجوم مستقل للاختبار اليدوي. قم بتشغيله، ثم وجّه DNS upstream لـ DUT إليه، ثم أطلق استعلامات إلى crash-5172.evil.test، crash-2291.evil.test، إلخ.

root@kitploit:~
sudo python3 malicious_dns_server.py --port 53
# ثم على DUT: قم بتكوين upstream → هذا المضيف
# ثم أطلق: dig @192.168.1.1 crash-5172.evil.test

التحقق بعد التصحيح

بعد تطبيق التصحيحات ووميض البرنامج الثابت الجديد، أعد التشغيل:

root@kitploit:~
sudo python3 dnsmasq_cve_verify.py --laptop <YOUR_WAN_IP> --dut <DUT_LAN_IP> --dut-pass <SSH_PASS>
# المتوقع: جميع الـ 6 نجاح

ملخص المتطلبات

الأداةPythonصلاحية الجذرSSHالشبكة
dnsmasq_cve_verify.py3.6+ paramikoنعم (المنفذ 53)نعم (للقراءة فقط)LAN + WAN إلى DUT
test_dnsmasq_cve_remote.py3.6+ stdlibلالاUDP 53 إلى DUT
test_dnsmasq_cve_on_device.shغير مطلوب (shell)لايُشغَّل على DUTغير مطلوب
malicious_dns_server.py3.6+ stdlibنعم (المنفذ 53)لاDUT يُمرر إلينا

المراجع

  • ISPreview: https://www.ispreview.co.uk/index.php/2026/05/string-of-dnsmasq-vulnerabilities-threatens-uk-broadband-routers.html
  • Help Net Security: https://www.helpnetsecurity.com/2026/05/12/dnsmasq-vulnerabilities-cve/
  • التصحيحات من المنبع: https://thekelleys.org.uk/dnsmasq/CVE/
  • سجل التغييرات لـ dnsmasq: https://thekelleys.org.uk/dnsmasq/CHANGELOG
تنزيل الأداة