
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 : Divulgation coordonnée en cours (embargo de 90 jours)
Découverte : 2026-08-08
Chercheur : Muhammad Nadeem Danish (danish1162)
Identifiant CVE : CVE-2026-2035703
Sévérité : Critique (CVSS 9.8)
CWE : CWE-78 (Injection de commandes système)
Le routeur CPE 5G Tozed ZLT X300 contient une vulnérabilité critique d'injection de commandes exploitable par voie hertzienne via une station de base LTE malveillante (SDR). Le client TR-069/CWMP de l'appareil (netcwmpd) transmet des entrées non assainies contrôlées par le réseau dans des commandes shell, permettant une exécution de code à distance non authentifiée en tant que root.
Un attaquant utilisant une radio logicielle (~300 USD) à portée radio peut usurper le 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 authentification, sans interaction de l'utilisateur et sans accès physique.
SDR de l'attaquant (~300 $)
↓
eNodeB LTE malveillant (srsRAN, bande de fréquences de test)
↓ Signal le plus fort → le X300 se connecte automatiquement
EPC malveillant attribue une IP (172.16.0.x)
↓
Usurpation du serveur ACS TR-069 (via DHCP Option 43)
↓
SetParameterValues : IPPingDiagnostics.Host = $(telnetd -l /bin/sh -p 4444)
↓
L'appareil exécute : ping "$(telnetd -l /bin/sh -p 4444)" en tant que root
↓
SHELL ROOT sur le 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 :
// Décompilé depuis netcwmpd à 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 = paramètre TR-069 non assaini
La commande est ensuite exécutée via system() en tant que root. Aucune validation d'entrée n'est effectuée sur le paramètre Host — aucun filtrage de caractères, aucune vérification par expression régulière, 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 de commandes arbitraires.
Le ZLT X300 est déployé par des opérateurs dans :
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 micrologiciel actuel est vulnérable.
Toute la découverte de la vulnérabilité a été réalisée par analyse statique du micrologiciel à l'aide d'IDA Pro — décompilation des binaires ARM et traçage des chemins d'exécution du code, du paramètre d'entrée TR-069 jusqu'aux points de terminaison d'exécution shell via sprintf.
Toute la vérification matérielle en conditions réelles 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 carte SIM de test programmable sysmocom sysmoISIM-SJA5 (préfixe IMSI 999 — réseau de test réservé par l'UIT, aucun 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 activité 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 Analyse complète de la vulnérabilité avec décompilation IDA
VENDOR_ADVISORY.md Notification au fabricant formatée
MITRE_CVE_REQUEST.md Détails de l'enregistrement CVE
ZTE_PSIRT_EMAIL.md Historique de la communication avec le fabricant
netcwmpd dans IDA Pro ou Ghidraprocess_ping à l'adresse 0x463A14Host depuis SetParameterValues TR-069 à travers sprintf jusqu'à la commande shellsystem()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 département marketing mondial. Ils ont prétendu que la vulnérabilité était « déjà corrigée » mais n'ont pu fournir ni numéro CVE, ni version de micrologiciel corrigée, ni avis de sécurité. Aucune trace publique d'un correctif antérieur n'existe sur NVD, OpenCVE, CVE Details ou les publications du fabricant lui-même.
Toutes les recherches ont été effectuées sur du matériel personnellement possédé dans un laboratoire privé à l'aide d'identifiants de réseau de test réservés par l'UIT (MCC 999). Aucun accès non autorisé à un système. Aucun réseau commercial en activité n'a été affecté. Divulgation coordonnée en cours.
Cette recherche est fournie uniquement pour les tests de sécurité autorisés, la remédiation par les fabricants et la recherche académique. Pas pour un accès non autorisé ou une utilisation malveillante.
| Champ | Valeur |
|---|
| Fabricant | Tozed Kangwei Tech Co., Ltd (Shenzhen, Chine) |
| Modèle | Routeur CPE 5G ZLT X300 / X300A |
| Micrologiciel | 6.01.3 (testé) — toutes les versions du micrologiciel sont probablement concernées |
| Architecture | aarch64 (MediaTek MT7992) |
| Système d'exploitation | OpenWrt 23.05.5, noyau Linux 5.15.167 |
| Composant | netcwmpd (démon CWMP) |
| Distributeur | du / EITC (Emirates Integrated Telecommunications), Émirats arabes unis |
| Date | Action |
|---|
| 2026-08-08 | Vulnérabilité découverte via analyse statique du micrologiciel |
| 2026-08-14 | Signalée au fabricant (Tozed Kangwei) et à MITRE |
| 2026-08-14 | CVE-2026-2035703 attribuée par MITRE |
| 2026-08-22 | Le fabricant (service marketing, pas de PSIRT) a prétendu « déjà corrigé » — aucune preuve fournie |
| 2026-08-24–25 | Le fabricant a posé des questions sur la carte SIM 3 fois 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 s'engager — « contactez votre vendeur » |
| 2026-08-29 | Le PSIRT de ZTE a confirmé : « pas un produit ZTE » — responsabilité déclinée |
| 2026-08-29 | Escalade vers les CERT nationaux |
| 2026-11-14 | Divulgation publique prévue (90 jours après le rapport initial) |