Comme je l'ai expliqué dans mon article précédent, j'ai pu ressusciter mon Karotz grâce à Freerabbits.nl et OpenKarotz. Sans les scripts créés par des passionnés, ce petit lapin connecté serait resté sur mon étagère en guise de déco. FreeFabbits et OpenKarotz m'ont permis de le ramener à la vie et d'explorer une partie de ses capacités.

Mais, au fil de mon exploration, je me suis quand même posé la question : "Qu'en est-il de la sécurité par rapport aux fonctionnalités proposées par FreeRabbits ?"

FreeRabbits Faille de sécurité

Je ne suis habituellement pas suspicieuse concernant la sécurité informatique, peut-être à tort. Mais là, la fonctionnalité TimeButton pouvant être installée m'a réellement paru suspecte. 

Une fois TimeButton installé dans le ventre de mon petit lapin, FreeRabbits demande d'appuyer sur le bouton de celui-ci pour pouvoir le reconnaître et utiliser les nombreuses applications proposées.  Simple et efficace car après cette manipulation FreeRabbits vous annonce "Welcome! Your Karotz is registered with MAC address ..." et tout fonctionne.

Les fonctionnalités "utiles" de FreeRabbits :

  • Des centaines d'applications proposées
  • L'ajout de tag RFID qui peuvent par la suite déclencher l'application choisie
  • L'ajout de tâches cron pour exécuter une application à l'heure choisie

Mais techniquement, comment ces applications sont-elles déclenchées sur mon lapin ?  Comment les tâches cron sont-elles ajoutées ?

Pour comprendre, j'ai analysé le code installé par les scripts de FreeRabbits.

Tout d'abord dbus_watcher : sans entrer dans les détails, il s'agit d'un script qui tourne en permanence en arrière-plan et qui attend une action, notamment "L'appui sur le bouton du Karotz".  Si on appuie sur le bouton, un script python, installé avec l'OS de FreeRabbits, est appelé : commander.py.

Ensuite commander.py envoi une requête HTTP (non chiffrée) vers le serveur de FreeRabbits en ajoutant notament l'adresse MAC de mon lapin en paramètre.

Problème immédiat : Cette communication n'est pas chiffrée.  Quelqu'un pourrait donc intercepter ces données et les utiliser.

Je ne sais pas analyser en détail ce qu'il se passe sur le serveur de FreeRabbits mais je peux au moins déduire qu'après avoir appuyé sur le bouton, FreeRabits connait l'adresse MAC de mon lapin et mon adresse IP publique.  

Comme toute requête HTTP, on reçoit une réponse.  Cette réponse est une chaîne de caractères au format json qui contient notamment la commande a exécuter sur le lapin.  Cette commande est ensuite exécutée sur le système du lapin.

Un petit exemple concret :

Je veux tester l'application Random Sound proposée par FreeRabbits.  Je clique sur le bouton "Try this App" sur le site, ceci déclenche un chrono de 30 secondes pour appuyer sur le bouton du lapin.  J'appuie sur ce bouton dans le temps imparti.  La requête HTTP est envoyée sur le serveur de FreeRabbits et je reçois la réponse au format json.

{
"Cmd":"/usr/karotz/FreeRabbits/PlaySound /usr/karotz/FreeRabbits/Sounds/twang_01.mp3",
"Url":null,
"StopSound":false,
"MoveEars":false,
"Color":"000000"
}

La commande qui est exécutée est donc ici PlaySound avec le son au format mp3 à jouer.

Inoffensif jusque là, un son est simplement joué.

Mais le vrai problème, c'est que quelque soit la commande reçue en réponse, celle-ci sera exécutée, sans aucune vérification, sur le lapin.

Imaginons qu'à la place, la commande rm -rf /  soit reçue.  Cette commande serait exécutée et ceci effacerait tous les fichiers du système (données, OS, tout !).  Mon lapin serait alors bel et bien un simple objet de déco.

Mais le danger ne s'arrête pas là.

Mon lapin est connecté en WiFi au même réseau que tous mes autres appareils (ordinateurs, téléphone, etc...).  Donc mon petit lapin aussi mignon soit-il pourrait potentiellement devenir une porte d'entrée pour attaquer mon réseau local.

Alors que faire maintenant ?

Voilà où j'en suis : Freerabbits connaît maintenant l'adresse MAC de mon lapin et mon adresse IP publique, et probablement d'autres données. Je ne vois aucun moyen de supprimer complètement ces informations chez eux.

Le dilemme : d'un côté, je suis reconnaissante car sans FreeRabbits, je n'aurais jamais pu ressusciter mon Karotz mais d'un autre côté, les risques que j'ai identifiés me parraissent réels (communication non chiffrée, exécution de commandes sans validation, identification par IP publique, absence de suppression des données/de compte).

Mon message aux développeurs de FreeRabbits (s'ils me lisent un jour).

Vous avez fait un travail remarquable en maintenant ces appareils en vie. Mais pour que ce service soit vraiment utilisable en toute confiance, quelques améliorations seraient essentielles :

  • HTTPS obligatoire : Chiffrez la communication entre le Karotz et vos serveurs
  • Validation des commandes : Implémentez une whitelist des commandes autorisées au lieu d'exécuter n'importe quoi
  • Suppression de données : Offrez aux utilisateurs un moyen réel de demander la suppression de leurs données
  • Documentation de sécurité : Expliquez clairement les risques aux utilisateurs
  • Authentification améliorée : Au lieu de se baser sur l'IP publique, utilisez des tokens ou des clefs d'authetification

En attendant ces améliorations, je vais tenter de désactiver et désinstaller FreeRabbits sur mon lapin afin de pouvoir continuer à explorer ses fonctionnalités en toute confiance, sans dépendre d'un service externe dont je ne maîtrise pas les risques de sécurité.

Et vous ? Qu'en pensez-vous ?  Voyez-vous comme moi un risque potentiel pour votre lapin et peut-être votre réseau domestique ?

2 commentaires

  • Bonjour 
    Très bon article qui pose de bonne s questions, je me suis posé à peu près les mêmes mais je n'avais pas poussé l'analyse aussi loin.Je pense également que le site FreeRabbits et ses acteurs n'ont pas d'intentions mauvaises mais des gens avec ces intentions pullulent aujourd'hui à la recherche d'objets Iot pouvant héberger divers bots ...
    Nos installations sont toujours fragilisées par le maillon faible et tous ces objets anciens le deviennent vite si on ne prend pas les bonnes précautions. (isolation vlan, wpa ...)
    C'est un de mes sujets de précautions du moment avec ma collection de lapins : 

    Un nabaztag V1 remis à niveau avec une carte TAGTAGTAG
    5 Nabaztags:tag
    5 Karotz sous open Karotz

    Bons pas mal souffrent de problème d'oreilles et ont passablement jauni ...
    Merci pour ces articles