
استغلال تنفيذ التعليمات البرمجية عن بُعد قبل المصادقة لجهاز التوجيه TP-Link Omada ER605 عبر البرنامج الخفي لعميل DDNS (cmxddnsd)
سلسلة استغلال (PoC) تهدف إلى خادم عميل DDNS في جهاز TP-Link Omada ER605 (cmxddnsd) عندما يكون الجهاز مكوّنًا لاستخدام خدمة Comexe DDNS.
⚠️ قانوني / أخلاقي: هذا المستودع مخصص للبحث الأمني المصرح به وإعادة الإنتاج المخبرية الخاضعة للتحكم فقط. لا تستخدمه ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها.
يُظهر هذا PoC نهجًا يعتمد على الربط بين عدة ثغرات، يجمع بين:
تقابل السلسلة الثغرات المنشورة التالية:
| CVE | ZDI Advisory | النوع (كما وصفته ZDI/NVD) | الدور العام في السلسلة |
|---|
| CVE-2024-5244 | ZDI-24-503 | الاعتماد على الأمان عبر الغموض (يمكن الوصول إلى رسائل DDNS أو انتحالها) | يتيح صياغة/انتحال رسائل DDNS تبدو صالحة |
| CVE-2024-5243 | ZDI-24-502 | تجاوز سعة المخزن المؤقت في معالجة أسماء DNS | يُستخدم للتأثير/تسميم الحالة المتعلقة بأسماء DNS وتمكين مسار تسريب لتجاوز ASLR |
| CVE-2024-5242 | ZDI-24-501 | تجاوز سعة المخزن المؤقت على المكدس في معالجة رموز خطأ DDNS | يُستخدم كبدائية اختطاف تدفق التحكم لتنفيذ RCE قائم على ROP |
ملاحظة: يطابق هذا README وصف الثغرة ↔ CVE مع صياغة ZDI/NVD. قد يختلف التسلسل الدقيق للاستغلال حسب إصدار البرنامج الثابت وتفاصيل إعادة الإنتاج المحلية؛ انظر
exploit.pyوملاحظات التحليل في هذا المستودع.
< ER605(UN)_V2_2.2.42.2.2ER605(UN)_V2_2.2.4 Build 20240119 (والإصدارات الأحدث)تصف ZDI التأثير بأنه قريب من الشبكة عندما تكون خدمة Comexe DDNS مفعّلة/مكوّنة. عمليًا، تتطلب إعادة الإنتاج عادةً القدرة على مراقبة والتأثير في مسار حركة مرور DDNS/DNS الخاصة بالجهاز بما يكفي لـ:
يتجنب هذا المستودع عمدًا تقديم إرشادات تشغيلية خطوة بخطوة لتحقيق هذا التمركز خارج مختبر خاضع للتحكم.
┌─────────────────┐ ┌─────────────────────────┐
│ TP-Link ER605 │ │ Attacker │
│ (cmxddnsd) │ │ (authorized lab setup) │
└───────┬─────────┘ └───────────┬─────────────┘
│ │
│ (1) DDNS message spoofing/impersonation │ CVE-2024-5244
│<-----------------------------------------│
│ │
│ (2) Parsing-time overflow affects DNS- │ CVE-2024-5243
│ name-related state; later leak occurs│
│ in DNS query sending path (e.g., │
│ sndDnsQuery) to bypass ASLR │
│<-----------------------------------------│
│ │
│ (3) Error-code overflow for control-flow │ CVE-2024-5242
│ hijack → ROP → system(command) │
│<-----------------------------------------│
الفصل الرئيسي:
_chkPkt لرموز الخطأ / معالجة أسماء DNS).exploit.py — تطبيق PoC المستخدم لإعادة الإنتاج المخبرية (يتطلب ملء الثوابت/الإزاحات الخاصة ببناء معيّن).README.md — هذا المستند.يتطلب هذا PoC قيمًا خاصة ببناء معيّن (مثل الإزاحات، مواقع الأدوات الصغيرة (gadgets)، تفسير التسريب) تعتمد على البرنامج الثابت وlibc المستهدفين. تُترك هذه القيم عمدًا كعناصر نائبة ويجب اشتقاقها عبر تحليل البناء المختبر.
أمثلة على العناصر النائبة (انظر exploit.py):
system()النمط المضاد المتكرر في منطق التحليل هو نسخ بيانات حقل يتحكم فيها المهاجم باستخدام طول مشتق من محدد دون تقييده بشكل صحيح بحجم المخزن المؤقت الوجهة (مفاهيميًا):
char *end = strchr(ptr, '\x01'); // delimiter
int len = end - ptr; // attacker-influenced length
memcpy_or_strncpy(dest, ptr, len); // missing bounds check -> overflow
يستخدم PoC شكل أداة صديق لفتحة تأخير MIPS:
move $t9, $s0
jalr $t9
move $a0, $s1 ; delay slot
من خلال التحكم في $s0 و$s1 عبر الكتابة فوق السجلات المحفوظة، يتيح ذلك تسلسل استدعاء مضغوطًا لـ system(command).
بناء الحمولة العملي مقيد بـ:
\x01)، وانظر exploit.py للاطلاع على القيود الدقيقة المستخدمة في هذه إعادة الإنتاج.
يُقدَّم هذا الكود والتوثيق لأغراض تعليمية وللبحث الأمني المصرح به فقط. أي استخدام دون إذن صريح محظور وقد يكون غير قانوني.