La plupart des clés USB présentent une vulnérabilité qui peut être exploitée pour infecter les ordinateurs de leurs hôtes avec un malware, et qui plus est, sans que l'on s'en aperçoive. Le problème vient du fait qu'elles ne protègent pas le firmware de leur microcontrôleur, pointe Karsten Nohl, fondateur et responsable technique de la société berlinoise Security Research Labs. Un malware peut ainsi remplacer le firmware d'une de ces clés en utilisant des commandes SCSI (Small computer system interface) pour qu'elle se comporte comme un autre périphérique, par exemple comme un clavier, explique le chercheur.
En émulant la saisie de certaines touches, il sera alors possible d'envoyer des commandes pour charger un malware dans l'ordinateur et l'exécuter. Par la suite, ce malware pourra reprogrammer les autres clés USB insérées dans l'ordinateur infecté, comme un virus qui se répliquerait. Les chercheurs de Security Research Labs ont développé plusieurs attaques de faisabilité et les ont présentés sur la conférence BlackHat qui s'est tenue cette semaine à Las Vegas.Â
Une clé qui émule une carte réseau Gigabit
L'un des proof-of-concept élaborés par les chercheurs montre une clé USB dont le comportement évolue. Insérée une première fois dans l'ordinateur et détectée par l'OS, elle se comporte comme un périphérique de stockage. Mais lorsque la machine est relancée et que la clé détecte qu'elle s'adresse au BIOS, elle passe sur une partie cachée pour émuler le clavier. Elle envoie alors les informations nécessaires pour activer les touches l'amenant au menu de démarrage et lancer depuis la partie cachée un système Linux minimaliste. Ce dernier infecte le programme de démarrage du disque dur en se comportant comme un virus de boot.
Un autre proof-of-concept montre comment une clé USB reprogrammée peut fonctionner comme une carte réseau Gigabit. Elle émulera un serveur DHCP (Dynamic host configuration protocol) qui lui assignera automatiquement un serveur DNS (Domain name system) mais pas d'adresse passerelle. Dans ce cas, l'OS continuera à utiliser la passerelle spécifiée par la véritable carte réseau (la connexion Internet ne sera donc pas interrompue) tout en utilisant le serveur DNS du faux contrôleur qui traduit les noms de domaine en adresses IP. De cette façon, un attaquant pourra détourner le trafic Internet, explique Karsten Nohl. Son équipe de chercheurs montre aussi comment un téléphone Android connecté à un ordinateur peut émuler une fausse carte réseau. « Toute clé USB peut se transformer », résume le fondateur de Security Research Labs. « Si vous laissez quelqu'un connecter une clé ou un téléphone à votre ordinateur, c'est que vous lui faites confiance pour taper des commandes sur votre machine ».
Pour échanger des fichiers, mieux vaut une carte SD
Malheureusement, il n'y a pas de solutions faciles pour contrer ce risque. Les chercheurs berlinois en ont trouvé quelques-unes mais aucune ne résout entièrement le problème dans la durée. Pour trouver la parade, il faudrait modifier les spécifications USB en demandant qu'un processus de jumelage soit utilisé lorsqu'un nouveau périphérique USB est inséré dans un ordinateur, un peu comme celui que l'on utilise avec les périphériques Bluetooth. Mais même si la spécification USB était changée, cela prendrait des années pour que le nouveau standard soit adopté et que les nouvelles clés remplacent les anciennes.
Une solution évidente pour résoudre le problème consisterait à faire en sorte que les mises à jour de firmware aient une signature numérique ou fassent appel à un mécanisme de verrouillage matériel pour prévenir la réécriture du firmware après que la clé soit sortie de l'usine. Mais l'équipe de Karsten Nohl n'a jusqu'à présent trouvé aucun dispositif de cette sorte sur les clés qu'ils ont testées. Finalement, la solution à court terme serait que d'amener les utilisateurs à comprendre les risques et à prendre garde aux clés qu'ils insèrent dans leur ordinateur. Pour échanger des fichiers avec d'autres utilisateurs, mieux vaut utiliser des cartes SD (Secure Digital).Â