Contexte de la vulnérabilité
En septembre 2026, Nozomi Networks a détecté une hausse d’exploitation du CVE‑2021‑35394, une faille d’exécution de code à distance (RCE) dans le Realtek Jungle SDK notée 9,8 sur le CVSS. Cette faille, désormais corrigée, a servi de point d’entrée initial pour le malware Cling. Le même échantillon intègre des modules d’exploitation pour huit autres CVE, dont CVE‑2014‑8361 (Realtek SDK), CVE‑2016‑10372 (routeur Eir D1000) et CVE‑2025‑34037 (Linksys), démontrant une stratégie de « multi‑exploit » visant routers et DVR de divers fournisseurs.
Mécanismes d’infection et de persistance
Après l’injection, le malware vérifie qu’une seule instance tourne en liant un socket SO_REUSEADDR au port 33957. En cas d’échec, le processus se termine proprement. Le binaire se copie ensuite dans /root/.cling et /usr/local/bin/.cling, puis s’insère dans les fichiers d’initialisation /etc/inittab, /etc/init.d/rcS et /etc/rc.d/rc.boot, assurant la persistance sur les systèmes SysV et BusyBox. Une méthode alternative remplace le binaire wget par le malware, tout en déplaçant l’original, ce qui déclenche l’exécution chaque fois que wget est invoqué.
int sock = socket(AF_INET, SOCK_DGRAM, 0);
int opt = 1;
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
bind(sock, (struct sockaddr*)&addr, sizeof(addr));
Canal de commande‑et‑contrôle basé sur STUN
Cling exploite le protocole STUN (Session Traversal Utilities for NAT) comme tunnel C2. Toutes les 5 secondes, il envoie un Binding Request à une liste codée de 13 serveurs STUN, en fixant l’identifiant de transaction à zéro, ce qui déroge à la spécification. Les réponses renvoient les ports publics observés, que le malware consigne avant d’émettre un message d’enregistrement UDP contenant ces ports et une balise d’infection (ex. « realtek.selfrep »). Il écoute ensuite les paquets UDP où l’identifiant de transaction encode les ordres de l’opérateur. Un serveur particulier (145.249.115.184) renvoie un identifiant nul, permettant d’injecter directement les commandes. Les ordres incluent le scan récursif, le déploiement de nouvelles infections, le lancement ou l’arrêt de tunnels TCP, l’activation d’un proxy et le déclenchement d’attaques DDoS. Les cibles DDoS répertoriées comprennent des adresses IP d’un ISP sud‑coréen, d’un cluster universitaire et de serveurs de jeu Minecraft. Les paquets de commande proviennent de l’adresse IP 74.125.250.129, résolue en stun.l.google.com, masquant ainsi le trafic légitime du protocole STUN et rendant la détection difficile pour les systèmes de surveillance réseau.