
Preuve de concept d'exploitation pour le contournement d'authentification TP-Link TDDP (CVE-2026-0834) qui envoie des paquets conçus pour exécuter des commandes administratives comme la réinitialisation d'usine et le redémarrage sur les appareils du réseau local.
Contournement de l'authentification du protocole de débogage des appareils TP-Link (TDDP) (CVE-2026-0834)
Une vulnérabilité dans le service TDDP (TP-Link Device Debug Protocol) permet à des attaquants distants non authentifiés sur le réseau local d'exécuter des commandes administratives. Lors du traitement des paquets TDDPv2, une valeur pktLength de 0 entraîne le contournement de la routine de déchiffrement DES en raison d'une évaluation en court-circuit. Les données envoyées au-delà de l'en-tête de paquet de 28 octets sont placées dans le tampon où les données de charge utile déchiffrées sont attendues, contournant ainsi l'authentification et permettant leur interprétation comme des données de commande valides.
Les attaquants peuvent exploiter cette faille pour exécuter des fonctions administratives, notamment la réinitialisation d'usine et le redémarrage de l'appareil, sans informations d'identification.
Cette vulnérabilité affecte l'implémentation du service TDDP. Toutes les versions de firmware analysées présentent le modèle de code vulnérable dans tddp_parserHandler(). Cependant, tous les appareils TP-Link n'ont pas TDDP activé par défaut.
Cette preuve de concept (PoC) a été créée pour le TP-Link Archer C20 V6 (firmware 0.9.1 Build 4.19/4.20). Les décalages mémoire, les structures de commandes et les techniques d'exploitation peuvent différer sur d'autres modèles d'appareils ou versions de firmware.
Cette PoC effectue une réinitialisation d'usine et un redémarrage sur l'appareil cible. Toute la configuration sera effacée.
$ python3 cve-2026-0834.py
[*] Target: 192.168.0.1:1040
[*] Sending factory reset command (0x49)...
[+] Response from ('192.168.0.1', 1040): 020701000000001000010000f876a43eae343258cfd6e426a435156bc3813de141e9a2162714388fe3af8e0c
[*] Waiting 1 second...
[*] Sending reboot command (0x4A)...
[+] Response from ('192.168.0.1', 1040): 0207010000000010000100009b0361efe2560a92e1e6feba5bfe21cec3813de141e9a216660a7b69eca4e234
Modifiez TARGET_IP dans le script pour qu'il corresponde à l'adresse IP de l'appareil cible.