De nombreuses personnes cherchent à améliorer la sécurité de leur domicile ou de leur bureau en installant des caméras intelligentes. Grâce à une connexion directe à Internet, leur flux de surveillance n'est qu'à quelques clics de distance et disponible à tout moment. Pourtant, ce genre de commodité peut rapidement tourner au vinaigre si la caméra souffre d'une faille de sécurité qui ouvre la porte à des acteurs non autorisés. Comme le montre la recherche ESET sur la maison intelligente, c'est le cas de la caméra D-Link DCS-2132L, qui permet aux attaquants non seulement d'intercepter et de visualiser la vidéo enregistrée, mais aussi de manipuler le firmware du dispositif.

Le problème le plus grave avec la caméra D-Link DCS-2132L est la transmission non cryptée du flux vidéo. Il fonctionne en clair sur les deux connexions - entre la caméra et le nuage et entre le nuage et l'application de visualisation côté client - fournissant un terrain fertile pour les attaques d'homme au milieu (MitM) et permettant aux intrus d'espionner les flux vidéo des victimes.

Figure 1 - Schéma illustrant la transmission de données vulnérables et les vecteurs d'attaque MitM possibles

L'application Viewer et la caméra communiquent via un serveur proxy sur le port 2048, en utilisant un tunnel TCP basé sur un protocole tunnel D-Link personnalisé. Malheureusement, seule une partie du trafic traversant ces tunnels est cryptée, ce qui laisse certains des contenus les plus sensibles - tels que les demandes d'adresses IP et MAC des caméras, les informations de version, les flux vidéo et audio, et les informations détaillées sur les caméras - sans chiffrement.

La vulnérabilité responsable de cette situation et de certains des problèmes décrits plus loin dans ce billet de blog peut être attribuée à une condition du fichier request.c (qui fait partie du code source du serveur web boa open source personnalisé de D-Link) qui traite les requêtes HTTP à la caméra. Toutes les requêtes HTTP à partir de 127.0.0.0.1 sont élevées au niveau admin, ce qui donne à un attaquant potentiel un accès complet au périphérique.

Figure 2 - État du code source du serveur Web boa. Toutes les demandes entrantes sont élevées au rang d'admin

Interception de flux vidéo et audio

Un attaquant MitM interceptant le trafic réseau entre l'application Viewer et le nuage ou entre le nuage et la caméra, peut utiliser le flux de données de la connexion TCP sur le port serveur (nuage) 2048 pour voir les requêtes HTTP des paquets vidéo et audio. Ceux-ci peuvent ensuite être reconstruits et rejoués par l'attaquant, à tout moment, pour obtenir le flux audio ou vidéo actuel de cette caméra. Dans nos expériences, nous avons obtenu le contenu vidéo diffusé en continu dans deux formats bruts, à savoir M-JPEG et H.264.

Pour reconstruire le flux vidéo, il faut faire quelques pas (qui peuvent être facilement automatisés via un simple programme ou un script) :

  1. Identifiez le trafic qui représente les flux vidéo. Ce trafic se compose de plusieurs blocs de données, chaque bloc ayant un en-tête spécifique et une longueur définie.
  2. Séparez les parties de données des en-têtes.
  3. Enfin, les parties de la vidéo sont fusionnées en un seul fichier.

La lecture des fichiers vidéo obtenus de cette façon peut être un peu difficile car ils sont dans un format de streaming brut au lieu d'un format de fichier conteneur. Cependant, certains lecteurs multimédias peuvent gérer ces formats bruts s'ils sont exécutés avec les commutateurs de ligne de commande appropriés (par exemple, MPlayer peut gérer les fichiers M-JPEG et VLC peut lire les fichiers H.264).

Plug-in défectueux

Un autre problème sérieux trouvé dans la caméra a été caché dans le plug-in du navigateur Web « mydlink services ». C'est l'une des formes de l'application viewer à la disposition de l'utilisateur, les autres étant des applications mobiles qui ne faisaient pas partie de notre recherche.

Le plug-in du navigateur Web gère la création du tunnel TCP et la lecture vidéo en direct dans le navigateur du client, mais il est également responsable du transfert des requêtes pour les flux de données vidéo et audio via un tunnel, qui écoute sur un port généré dynamiquement sur localhost.

Le tunnel est disponible pour l'ensemble du système d'exploitation, de sorte que n'importe quelle application ou n'importe quel utilisateur sur l'ordinateur du client peut simplement accéder à l'interface web de la caméra par une simple requête (uniquement pendant la diffusion vidéo en direct) à hxxp://127.0.0.0.1:RANDOM_PORT/.

Aucune autorisation n'est nécessaire puisque les requêtes HTTP adressées au serveur Web de la caméra sont automatiquement élevées au niveau administrateur lorsque vous y accédez à partir d'une IP localhost (l'hôte local de l'application viewer est redirigé vers le serveur local de la caméra).

Cette vulnérabilité permet également à tout attaquant de remplacer le firmware légitime par sa propre version truquée ou de backdoor.

La vidéo ci-dessous donne une démonstration pratique du problème de sécurité maintenant résolu avec le plug-in :

 

Remplacement illicite du micrologiciel

Au moment d'écrire ces lignes, les problèmes avec le plug-in mydlink services ont été résolus avec succès par le fabricant.

Cependant, le remplacement du micrologiciel malveillant est toujours possible via les vulnérabilités du protocole de tunneling personnalisé D-Link décrit plus haut dans cet article. Pour ce faire, un attaquant doit modifier le trafic dans le tunnel en remplaçant la requête GET du flux vidéo par une requête POST spécifique qui télécharge et exécute une "mise à jour" bidon du firmware.

Nous devons souligner à ce stade que l'exécution d'une telle attaque n'est pas triviale, car elle devrait suivre toutes les règles du protocole tunneling, en divisant le fichier du firmware en blocs avec des en-têtes spécifiques et d'une certaine longueur maximale.

Cependant, l'authenticité du binaire du firmware n'est pas vérifiée pendant le processus de mise à jour. Un firmware personnalisé avec quelques fonctionnalités supplémentaires cachées, dont des mineurs de cryptomonnaie, des portes dérobées, des logiciels espions, des botnets ou d'autres chevaux de Troie pourraient ainsi être téléchargés sur l'appareil. De plus, l'absence de tout contrôle d'authenticité signifie qu'un acteur malveillant pourrait délibérément « briquer » le dispositif.

UPnP exposant le port HTTP à Internet

D-Link DCS-2132L avait aussi quelques autres problèmes mineurs, mais toujours préoccupants. Il peut configurer la redirection de port vers lui-même sur un routeur domestique, en utilisant Universal Plug and Play (UPnP). Ceci expose son interface HTTP sur le port 80 à Internet et peut se produire sans le consentement de l'utilisateur même avec les champs « Activer la présentation UPnP » ou « Activer le transfert de port UPnP » dans les paramètres non cochés.

La raison pour laquelle l'appareil utilise un réglage aussi dangereux n'est pas claire. Actuellement, près de 1 600 caméras D-Link DCS-2132L avec port 80 exposé sont disponibles via Shodan, la plupart aux États-Unis, en Russie et en Australie.

Figure 3 - Résultats de la recherche Shodan de DCS-2132L sur le port 80

La façon la plus simple d'atténuer ce risque actuel est de désactiver UPnP sur le routeur de l'utilisateur.

Le plugin corrigé, d'autres problèmes persistent

Dans le cadre de la divulgation responsable, ESET a signalé les problèmes découverts à D-Link le 22 août 2018. Ce rapport incluait la communication dans les nuages vulnérables non chiffrée, l'authentification insuffisante des messages dans les nuages et la communication sur le réseau local non chiffrée.

D-Link a répondu immédiatement, informant ESET que les rapports de vulnérabilité avaient été transmis à ses équipes de recherche et développement, promettant d’assurer le suivi.

Depuis, certaines vulnérabilités ont été atténuées - selon nos tests, le plug-in « mydlink services » est maintenant correctement sécurisé. D’autres problèmes persistent néanmoins. Au moment de la rédaction du présent document, la version la plus récente du micrologiciel disponible pour téléchargement date de novembre 2016 et n'abordait pas les vulnérabilités permettant le remplacement malveillant du micrologiciel de l'appareil, ainsi que l'interception des flux audio et vidéo.

La caméra D-Link DCS-2132L est toujours disponible sur le marché. Il est conseillé aux propriétaires actuels de l'appareil de vérifier que le port 80 n'est pas exposé à l'Internet public et de reconsidérer l'utilisation de l'accès à distance si la caméra surveille des zones très sensibles de leur foyer ou de leur entreprise.

Auteurs : Milan Fránik et Miloš Čermák, chercheurs en logiciels malveillants d’ESET