Le chercheur en sécurité de Google, Matthew Garrett, a découvert une vulnérabilité zero-day dans les routeurs TP-Link SR20 Smart Home. Après que l'entreprise n'a pas répondu à la communication privée, le chercheur a décidé de rendre public défaut.
TP-Link SR20 Vulnérabilité Présentation technique
La vulnérabilité est un code arbitraire zéro jour d'exécution bug. Les routeurs SR20 TP-Link sont bi-bande 2.4 GHz / 5 produits GHz appropriés pour contrôler la maison intelligente et dispositifs IdO. Ils prennent également en charge les périphériques qui exécutent les protocoles ZigBee et Z-Wave.
Apparemment, le chercheur a rapporté la faille de sécurité TP-Link privé plus 90 il y a jours, mais il n'a reçu aucune réponse. Les tentatives de contacter la société par d'autres moyens ont également été jugées infructueuses:
Je l'ai signalé à TP-Link en Décembre via leur formulaire de déclaration de sécurité, un processus qui a été rendue difficile par la “Description détaillée” champ étant limitée à 500 caractères. La page m'a informé que j'entendais revenir dans les trois jours ouvrables – quelques semaines plus tard, sans réponse, Je tweeté à leur demander un contact et rien entendu de retour. La tentative de quelqu'un d'autre à signaler les vulnérabilités de PDDT a eu un résultat similaire, Donc nous en sommes là.
En ce qui concerne la vulnérabilité elle-même, la question découle d'un processus que ces routeurs fonctionnent fréquemment. Le processus est connu sous le nom « PDDT », ou le Protocole de débogage de périphériques TP-Link. Le processus se déroule au niveau des racines et peut initier deux types de commandes. La première ne nécessite pas d'authentification, et le second ne l'exigent.
en relation: CVE-2018-15702: TP-LINK TL-WR841N vulnérabilité routeur Trouvé
La vulnérabilité expose un certain type de commandes. L'un d'eux, commande 0x1f, demande 0x01, sert à la validation de la configuration, comme expliqué par Gareth.
Dumping PDDT en Ghidra rend assez facile de trouver une fonction qui appelle recvfrom(), l'appel des informations de copies à partir d'une prise réseau. Il regarde le premier octet du paquet et utilise pour déterminer quel protocole est utilisé, et transmet le paquet vers un distributeur différent en fonction de la version du protocole. pour la version 1, le répartiteur regarde juste le second octet du paquet et appelle une fonction différente en fonction de sa valeur. 0x31 est CMD_FTEST_CONFIG, et c'est où les choses deviennent super fun, le chercheur a écrit.
Qu'est-ce qui se passe ensuite est que cette fonction parse le paquet pour une charge utile qui contient deux chaînes séparées par un point-virgule. La première chaîne est un nom de fichier, et le second est un configfile. Il appelle ensuite tddp_execCmd(“cd / tmp; TFTP -gr% s% s &”,luaFile,remote_address) qui exécute la commande TFTP en arrière-plan.
Cette connexion à la machine qui a envoyé la commande et tente de télécharger un fichier via tftp correspondant au nom du fichier qu'il a envoyé. Le principal processus de PDDT attend jusqu'à 4 secondes pour le fichier à apparaître – une fois qu'il fait, il charge le fichier dans un interpréteur Lua il initialisés plus tôt, et appelle la fonction config_test() avec le nom du fichier de configuration et l'adresse à distance comme arguments.
depuis config_test() est administré par le fichier téléchargé à partir de la machine distante, exécution de code quelconque dans l'interpréteur est autorisé, qui comprend le procédé de os.execute commandes en cours d'exécution sur l'ordinateur hôte. Depuis PDDT est en cours d'exécution en tant que root, vous obtenez l'exécution de commandes arbitraires en tant que root, Gareth a conclu.
Un code preuve de concept est également disponible pour la vulnérabilité dans TP-Link SR20 routeurs intelligents à domicile.