
Tozed ZLT X300 5G CPE — Ejecución remota de código como root mediante estación base falsa SDR (CVE-2026-2035703, CWE-78, CVSS 9.8) — Divulgación coordinada
Estado: Publicado — divulgación coordinada a través de CISA ICS y CERT/CC
Descubierto: 2026-08-08
Investigador: Muhammad Nadeem Danish (danish1162)
ID de CVE: CVE-2026-108576 (asignado por VulDB CNA, publicado en cve.org)
Reservado previamente: CVE-2026-2035703 (MITRE — nunca publicado, reemplazado por CVE-2026-108576)
Gravedad: Crítica (CVSS 10.0)
CWE: CWE-78 (Inyección de comandos del sistema operativo)
VulDB: VDB-416233
CERT/CC: VU#138275
GHSA: GHSA-qcpp-vfr2-v242
El router Tozed ZLT X300 5G CPE contiene una vulnerabilidad crítica de inyección de comandos explotable por vía aérea mediante una estación base LTE fraudulenta (SDR). El cliente TR-069/CWMP del dispositivo (netcwmpd) pasa entrada controlada por la red y sin sanear a comandos de shell, lo que permite la ejecución remota de código como root sin autenticación.
Un atacante que opere una radio definida por software (~300 USD) dentro del alcance de radio puede suplantar al servidor ACS TR-069 del operador e inyectar comandos de shell arbitrarios que se ejecutan como root en el dispositivo objetivo — con cero autenticación, cero interacción del usuario y cero acceso físico.
Attacker's SDR (~$300)
↓
Rogue LTE eNodeB (srsRAN, test frequency band)
↓ Strongest signal → X300 auto-connects
Rogue EPC assigns IP (172.16.0.x)
↓
TR-069 ACS impersonation (via DHCP Option 43)
↓
SetParameterValues: IPPingDiagnostics.Host = $(telnetd -l /bin/sh -p 4444)
↓
Device executes: ping "$(telnetd -l /bin/sh -p 4444)" as root
↓
ROOT SHELL on port 4444 — uid=0(root) gid=0(root)
El controlador IPPingDiagnostics en netcwmpd pasa el parámetro Host directamente a una cadena de formato sprintf que construye un comando de shell:
// Decompiled from netcwmpd at 0x463E6C (IDA Pro)
sprintf(cmd,
"ping%s -c %d -s %d -W %u%s \"%s\" > /tmp/.tr069_pingtest.log",
ipv4_flag, repetitions, block_size, timeout, interface,
HOST); // HOST = unsanitized TR-069 parameter
El comando se ejecuta entonces mediante system() como root. No se realiza ninguna validación de entrada sobre el parámetro Host — sin filtrado de caracteres, sin comprobación de regex, sin validación de longitud más allá del búfer de 512 bytes.
La sustitución de comandos $() se evalúa dentro de comillas dobles por el shell POSIX, lo que permite la ejecución arbitraria de comandos.
| Campo | Valor |
|---|---|
| Fabricante | Tozed Kangwei Tech Co., Ltd (Shenzhen, China) |
| Modelo | Router CPE 5G ZLT X300 / X300A |
| Firmware | 6.01.0 – 6.01.3 (se cree que todas las versiones están afectadas) |
| Arquitectura | aarch64 (MediaTek MT7992) |
| SO | OpenWrt 23.05.5, kernel Linux 5.15.167 |
| Componente | netcwmpd (demonio CWMP) |
| Distribuidor | du / EITC (Emirates Integrated Telecommunications), EAU |
El ZLT X300 es desplegado por operadores en:
Oriente Medio: du (EAU), STC y Mobily (Arabia Saudí), Zain (Kuwait, Baréin), Ooredoo y Omantel (Omán)
Europa: EE, O2, Three (Reino Unido), Telekom (Alemania), TIM (Italia), Free Mobile, SFR, Orange (Francia)
Asia: Singtel (Singapur), AIS (Tailandia), Smart (Filipinas), Telkomsel (Indonesia)
África: MTN y Vodacom (Sudáfrica), MTN (Nigeria)
Todo dispositivo con el firmware actual es vulnerable.
Todo el descubrimiento de vulnerabilidades se realizó mediante análisis estático de firmware usando IDA Pro — descompilando binarios ARM y rastreando las rutas de ejecución de código desde la entrada de parámetros TR-069 a través de sprintf hasta los sumideros de ejecución de shell.
Toda la verificación en hardware real y las pruebas de concepto se llevaron a cabo en un entorno de laboratorio privado en Pakistán, con equipos de propiedad personal, utilizando una SIM de prueba programable sysmocom sysmoISIM-SJA5 (prefijo IMSI 999 — red de pruebas reservada por la ITU, no de ningún operador comercial) en una banda de frecuencia no ocupada (Banda 7, 2655 MHz — no utilizada por los operadores de EAU). Ninguna red comercial real se vio afectada, no se involucraron dispositivos de otros abonados y no se realizó ninguna transmisión en espectro comercial con licencia.
advisory/
TECHNICAL_REPORT.md Full vulnerability analysis with IDA decompilation
VENDOR_ADVISORY.md Formatted vendor notification
MITRE_CVE_REQUEST.md CVE record details
ZTE_PSIRT_EMAIL.md Record of vendor communication
netcwmpd en IDA Pro o Ghidraprocess_ping en la dirección 0x463A14Host desde SetParameterValues de TR-069 a través de sprintf hasta el comando de shellsystem()| Fecha | Acción |
|---|---|
| 2026-08-08 | Vulnerabilidad descubierta mediante análisis estático de firmware |
| 2026-08-14 | Reportada al fabricante (Tozed Kangwei) y a MITRE |
| 2026-08-14 | CVE-2026-2035703 reservado por MITRE (nunca publicado) |
| 2026-08-22 | El fabricante (departamento de marketing, sin PSIRT) afirmó que "ya estaba corregido" — sin aportar pruebas |
| 2026-08-24–25 | El fabricante preguntó sobre la tarjeta SIM 3 veces en lugar de responder a las preguntas técnicas |
| 2026-08-26 | Escalado al PSIRT de ZTE ([email protected]) |
| 2026-08-27 | El fabricante se negó a colaborar — "contacte con su vendedor" |
| 2026-08-29 | El PSIRT de ZTE confirmó: "no es un producto ZTE" — declinó su responsabilidad |
| 2026-08-29 | Escalado a los CERT nacionales |
| 2026-09-10 | CERT/CC activó el caso VINCE VU#138275 |
| 2026-09-18 | CISA ICS se involucró — redactando un aviso |
| 2026-10-10 | CVE-2026-108576 asignado por el CNA de VulDB, publicado en cve.org |
El fabricante (Tozed Kangwei) no tiene un Equipo de Respuesta a Incidentes de Seguridad de Producto (PSIRT). Toda la correspondencia provino de su departamento de Marketing Global. Afirmaron que la vulnerabilidad "ya estaba corregida", pero no pudieron proporcionar un número de CVE, una versión de firmware parcheada ni un aviso de seguridad. No existe ningún registro público de una corrección previa en NVD, OpenCVE, CVE Details ni en las propias publicaciones del fabricante.