
Tozed ZLT X300 5G CPE — Exécution de code à distance en tant que root via une station de base pirate SDR (CVE-2026-2035703, CWE-78, CVSS 9.8) — Divulgation coordonnée
Statut : Publié — divulgation coordonnée via CISA ICS et CERT/CC
Découvert : 2026-08-08
Chercheur : Muhammad Nadeem Danish (danish1162)
ID CVE : CVE-2026-108576 (attribué par le CNA VulDB, publié sur cve.org)
Précédemment réservé : CVE-2026-2035703 (MITRE — jamais publié, remplacé par CVE-2026-108576)
Gravité : Critique (CVSS 10.0)
CWE : CWE-78 (Injection de commandes OS)
VulDB : VDB-416233
CERT/CC : VU#138275
GHSA : GHSA-qcpp-vfr2-v242
Le routeur Tozed ZLT X300 5G CPE contient une vulnérabilité critique d'injection de commandes exploitable par voie hertzienne via une station de base LTE factice (SDR). Le client TR-069/CWMP de l'appareil (netcwmpd) transmet des entrées contrôlées par le réseau et non assainies dans des commandes shell, permettant une exécution de code root à distance sans authentification.
Un attaquant exploitant une radio définie par logiciel (~300 USD) à portée radio peut usurper l'identité du serveur ACS TR-069 de l'opérateur et injecter des commandes shell arbitraires qui s'exécutent en tant que root sur l'appareil cible — sans aucune authentification, sans aucune interaction de l'utilisateur et sans aucun accès physique.
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)
Le gestionnaire IPPingDiagnostics dans netcwmpd transmet le paramètre Host directement dans une chaîne de format sprintf qui construit une commande 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
La commande est ensuite exécutée via system() en tant que root. Aucune validation des entrées n'est effectuée sur le paramètre Host — aucun filtrage de caractères, aucune vérification par regex, aucune validation de longueur au-delà du tampon de 512 octets.
La substitution de commande $() est évaluée entre guillemets doubles par le shell POSIX, permettant l'exécution arbitraire de commandes.
| Champ | Valeur |
|---|---|
| Fabricant | Tozed Kangwei Tech Co., Ltd (Shenzhen, Chine) |
| Modèle | Routeur CPE 5G ZLT X300 / X300A |
| Firmware | 6.01.0 – 6.01.3 (toutes les versions présumées affectées) |
| Architecture | aarch64 (MediaTek MT7992) |
| OS | OpenWrt 23.05.5, noyau Linux 5.15.167 |
| Composant | netcwmpd (démon CWMP) |
| Distributeur | du / EITC (Emirates Integrated Telecommunications), EAU |
Le ZLT X300 est déployé par des opérateurs à travers :
Moyen-Orient : du (EAU), STC et Mobily (Arabie saoudite), Zain (Koweït, Bahreïn), Ooredoo et Omantel (Oman)
Europe : EE, O2, Three (Royaume-Uni), Telekom (Allemagne), TIM (Italie), Free Mobile, SFR, Orange (France)
Asie : Singtel (Singapour), AIS (Thaïlande), Smart (Philippines), Telkomsel (Indonésie)
Afrique : MTN et Vodacom (Afrique du Sud), MTN (Nigeria)
Chaque appareil sous le firmware actuel est vulnérable.
Toute la découverte de vulnérabilités a été réalisée par analyse statique du firmware à l'aide d'IDA Pro — décompilation de binaires ARM et traçage des chemins d'exécution du code depuis l'entrée des paramètres TR-069 via sprintf jusqu'aux points d'exécution shell.
Toute la vérification sur matériel réel et les tests de preuve de concept ont été menés dans un environnement de laboratoire privé au Pakistan, sur du matériel personnellement possédé, à l'aide d'une SIM de test programmable sysmocom sysmoISIM-SJA5 (préfixe IMSI 999 — réseau de test réservé par l'UIT, et non un opérateur commercial) sur une bande de fréquences inoccupée (Bande 7, 2655 MHz — non utilisée par les opérateurs des EAU). Aucun réseau commercial en production n'a été affecté, aucun appareil d'autres abonnés n'a été impliqué, et aucune transmission n'a été effectuée sur un spectre commercial sous licence.
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 dans IDA Pro ou Ghidraprocess_ping à l'adresse 0x463A14Host depuis SetParameterValues de TR-069 à travers sprintf jusqu'à la commande shellsystem()| Date | Action |
|---|---|
| 2026-08-08 | Vulnérabilité découverte via analyse statique du firmware |
| 2026-08-14 | Signalée au fabricant (Tozed Kangwei) et à MITRE |
| 2026-08-14 | CVE-2026-2035703 réservée par MITRE (jamais publiée) |
| 2026-08-22 | Le fabricant (service marketing, sans PSIRT) a affirmé que le problème était « déjà corrigé » — aucune preuve fournie |
| 2026-08-24–25 | Le fabricant a posé des questions sur la carte SIM à 3 reprises au lieu de répondre aux questions techniques |
| 2026-08-26 | Escalade vers le PSIRT de ZTE ([email protected]) |
| 2026-08-27 | Le fabricant a refusé de coopérer — « contactez votre vendeur » |
| 2026-08-29 | Le PSIRT de ZTE a confirmé : « pas un produit ZTE » — a décliné toute responsabilité |
| 2026-08-29 | Escalade vers les CERT nationaux |
| 2026-09-10 | CERT/CC a activé le dossier VINCE VU#138275 |
| 2026-09-18 | CISA ICS mobilisée — rédaction d'un avis |
| 2026-10-10 | CVE-2026-108576 attribuée par le CNA VulDB, publiée sur cve.org |
Le fabricant (Tozed Kangwei) ne dispose d'aucune équipe de réponse aux incidents de sécurité produit (PSIRT). Toute la correspondance provenait de leur service marketing mondial. Ils ont affirmé que la vulnérabilité était « déjà corrigée » mais n'ont pu fournir ni numéro de CVE, ni version de firmware corrigée, ni avis de sécurité. Aucun enregistrement public d'une quelconque correction antérieure n'existe sur NVD, OpenCVE, CVE Details ou dans les publications du fabricant lui-même.