Dimanche, pendant la conférence Defcon 21 sur la sécurité qui se tenait à Las Vegas, un chercheur a montré comment utiliser les dernières technologies web pour construire un système de stockage de fichiers sécurisé et distribué reposant sur le chargement d'un morceau de code JavaScript dans les navigateurs web des utilisateurs, à leur insu. Le système appelé HiveMind, a été mis au point par Sean T. Malone, consultant en sécurité chez FusionX, une entreprise spécialisée dans les tests de pénétration. Son système s'inspire du schéma des botnets. HiveMind se base sur des technologies type HTML5 WebSockets et Web Storage également utilisées par les applications Web légitimes.

Il ne s'agit en aucun cas d'un programme exploitant une faille et aucune parade ne permet de l'empêcher, a déclaré le consultant. Par contre, la construction du réseau de zombies repose sur le chargement, par les navigateurs, d'un morceau de code JavaScript et implique le stockage des données sur les ordinateurs de tierces personnes », a-t-il convenu, reconnaissant qu'on était là dans une zone juridique un peu flou.  « C'est un projet de recherche, pas un logiciel de production », a-t-il dit. « Je ne suis pas avocat, je n'ai donc pas l'intention de donner de conseils juridiques à quiconque sur le sujet », a-t-il dit, ajoutant que tout le monde était responsable de ce qu'il ferait avec le logiciel qu'il prévoit de sortir plus tard cette semaine.

Un serveur proxy anonyme

Le code HiveMind JavaScript peut être distribué aux navigateurs de différentes façons : soit en l'hébergeant sur des sites légitimes ou illégaux, soit à travers un réseau de publicité, ce qui veut dire que le code peut-être diffusé par plusieurs sites web. Pour ses recherches, Sean T. Malone a mis en place un serveur proxy web anonyme qui a été ensuite ajouté à des listes de proxy. Chaque fois que quelqu'un utilise le serveur proxy pour accéder à une page web, le serveur injecte du code HiveMind JavaScript dans cette page. Selon le chercheur, plus 20 000 adresses IP uniques se sont connectées à son serveur proxy toutes les dix minutes. Ces adresses ont été recrutées comme noeuds dans son réseau de zombies.

HiveMind dispose d'un serveur de commande et de contrôle (C&C) qui utilise une base de données SQL pour garder une trace de tous les fichiers et des noeuds - les navigateurs exécutant le code JavaScript - sur lesquels ils sont distribués. Quand un fichier est téléchargé vers le serveur, il est chiffré avec le protocole Advanced Encryption Standard (AES) avec un mot de passe fourni par l'envoyeur. Le fichier crypté se divise en plusieurs blocs qui sont répartis entre les différents noeuds. « Chaque fichier peut avoir un mot de passe différent », a expliqué le chercheur. [[page]]

Parce que le botnet est très dynamique - des noeuds disparaissent en permanence quand les utilisateurs ferment leurs navigateurs - chaque bloc de fichier est distribué sur plusieurs noeuds pour avoir une redondance. Les noeuds manifestent en permanence leur présence et renseignent le serveur sur les blocs qu'ils hébergent, de sorte qu'un bloc particulier peut être redistribué à de nouveaux noeuds si le nombre de noeuds de stockage descend sous un certain seuil. Une fois qu'un fichier est téléchargé, crypté et distribué aux noeuds, il n'est plus sur le serveur. « Ce dernier ne conserve que la liste des noeuds où sont stockés les différents blocs, une information indispensable pour reconstruire le fichier », a dit Sean T. Malone. « S'il arrivait qu'une agence gouvernementale saisisse le serveur, le processus de réplication de blocs échouerait parce que les noeuds se mettraient offline, ce qui rendrait le fichier irrécupérable », a encore expliqué le consultant. « Il existe des moyens de récupérer les données, mais c'est très difficile et cela implique la saisie d'un grand nombre de noeuds. Ou alors il faudrait s'introduire dans le serveur quand il est encore en ligne et contraindre le propriétaire à fournir les mots de passe nécessaires pour décrypter les fichiers ».

Un système pour créer des espaces collaboratifs ?

Selon Sean T. Malone, « le propriétaire du serveur pourrait opposer un « déni plausible » en dispersant un grand nombre de faux fichiers qui contiennent des données aléatoires, mais cette fonctionnalité n'est pas encore intégrée dans le système ». L'utilisateur peut se défendre en disant qu'il a créé le système, mais qu'il n'est pas lui-même à l'origine des données réelles, même s'il a également téléchargé des vrais fichiers avec des fichiers factices. « Parce que les données aléatoires dans les fichiers factices sont identiques aux données aléatoires dans les fichiers cryptés, il n'est pas possible de savoir, quand vous essayez de récupérer un fichier, si le mot de passe fourni par l'utilisateur est correct  ou non et si c'est un fichier factice qui a été récupéré, ou si le mot de passe n'était pas bon », a expliqué le chercheur. De cette façon, l'utilisateur peut fournir un mauvais mot de passe pour de vrais fichiers. L'autre partie n'aura aucun moyen de prouver que le mot de passe est correct ou non. « Si la légalité d'un tel réseau de zombies est discutable, ce système pourrait également servir à créer des espaces collaboratifs, où les utilisateurs mettraient eux même leurs navigateurs à disposition et auraient la possibilité de télécharger des fichiers dans le système », a déclaré le consultant.