| S . G . D . S . N Agence nationale de la sécurité des systèmes d'information |
![]() |
Paris, le 11 février
2009 No CERTA-2006-INF-006-004 |
Affaire suivie par :
CERTA
Objet : Risques associés aux
clés USB
| Conditions d'utilisation de ce document : | http://www.certa.ssi.gouv.fr/certa/apropos.html |
| Dernière version de ce document : | http://www.certa.ssi.gouv.fr/site/CERTA-2006-INF-006 |
Une gestion de version détaillée se trouve à la fin de ce document.
Les périphériques USB (pour Universal Serial Bus) occupent actuellement une place prépondérante dans l'univers de l'appareillage informatique. Ils peuvent être de tout type, comme par exemple un support de données amovible (clé USB, lecteur de musique au format MP3, etc).
De par leur facilité d'installation, ces périphériques s'échangent très facilement d'une machine à une autre. Cependant, cette opération présente des risques. Nous montrons dans ce document que ces échanges peuvent aussi bien affecter le périphérique que l'ordinateur d'accueil.
Du fait de la simplicité et de la furtivité des attaques basées sur ces échanges, il est important de prendre des mesures préventives. Il n'est bien sûr pas question de remettre en cause l'utilité de l'USB, notamment les différents périphériques de stockage, mais certaines considérations doivent être prises avant leur utilisation, que ce soit pour l'utilisateur ou l'administrateur. Ce document offre donc quelques recommandations à cet égard.
L'USB (pour Universal Serial Bus) est une interface de connexion définie dans les années 90 et destinée à remplacer les ports série et parallèle sur les ordinateurs. Elle est utilisée de nos jours pour brancher tout type de périphérique, que ce soient les imprimantes, les scanners, les modems, ou des appareils de stockage, comme les clés USB.
Sans rentrer dans les détails fournis par les documents de référence, il existe, à la date de rédaction de cet article, deux standards distincts, USB 1.1 et USB 2.0 :
Les termes sont parfois utilisés de manière abusive, et la dénomination commerciale USB 2.0 Full Speed fait en réalité référence à la version USB 1.1 en mode rapide, tandis que USB 2.0 High Speed correspond bien au standard 2.0.
L'architecture de type USB a pour caractéristique de fournir une alimentation électrique aux périphériques qu'elle relie, avec une tension maximale de 5V et un courant d'au plus 500mA. Il est enfin possible de connecter jusqu'à 127 appareils à un Bus USB1 à un temps donné. L'USB se compose de plusieurs couches de protocoles, ou moyens de communication, qui ne seront pas abordées dans ce document.
L'USB, pour résumer, possède les propriétés suivantes :
L'USB est contrôlé par un hôte, installé sur la machine d'accueil. L'hôte USB a la charge de mener à bien toutes les transactions et de gérer la bande passante. Cependant, depuis l'USB 2.0, il existe un protocole « au pied levé » (ou On-the-Go), qui permet, pour deux périphériques USB, de négocier et d'élire un hôte parmi eux. L'intérêt est le suivant : on peut relier deux périphériques sans ordinateur. Parmi les illustrations les plus courantes, il peut s'agir d'une imprimante et d'un appareil photo numérique reliés entre eux, ou bien d'un lecteur MP3 et d'une clé de stockage USB.
Des projets consistant à porter des caractéristiques de l'USB au domaine du sans-fil tendent à apparaître, l'un en particulier étant déjà très médiatisé : le Wireless USB (s'appuyant sur la technologie UWB, Ultra-Wideband), lancé par un conglomérat de constructeurs, promet des produits commercialisés dans les mois à venir. Nous ne voulons pas nous étendre pour le moment sur cette nouvelle approche USB, mais il sera intéressant, en temps voulu, de vérifier si celle-ci permettra d'éviter les problèmes mentionnés dans les paragraphes suivants et si elle présentera des problèmes spécifiques.
Créée par la société U3 avec le soutien de constructeurs de mémoire flash, cette technologie transforme une clef USB en un système portable contenant des fichiers et des applications favorites.
Une clef USB U3 dispose d'un logiciel, ou lanceur, qui s'exécute sur l'ordinateur hôte afin de présenter (le plus souvent) les applications disponibles. Il est facile de gérer son contenu via un menu "Démarrer" (ou lanceur) dédié accessible dans la barre des tâches. Il est alors possible d'afficher à l'écran son système personnel sauvegardé sur la clef USB avec son fond d'écran et un accès facile aux différentes applications.
Les inconvénients de la gestion d'applications sur les clefs traditionnelles sont donc effacés : l'accés aux programmes se fait simplement et de manière transparente pour l'utilisateur ; s'appuyant sur un format qui cherche à se standardiser, l'offre logicielle compatible avec U3 ne cesse de se développer.
Autre caractéristique des clefs U3 : elles ne laissent que très peu de traces sur l'ordinateur hôte puisque les documents contenus sur la clef sont ouverts avec des applications elles aussi présentes sur la clef (y compris les cookies récoltés lors d'une navigation sur l'Internet). Les tâches d'écriture se font via la mémoire volatile de la machine hôte uniquement, et ces applications ne modifient ni la base de registre, ni la mémoire morte (ROM) de cette dernière.
De nombreuses applications gratuites ou payantes ont désormais des versions compatibles avec U3 : notamment le logiciel de voix sur IP Skype ou le navigateur Firefox. D'autres logiciels sont également disponibles : jeux, bureautique, gestionnaires d'images ou de fichiers audio MP3 ; et cette offre logicielle augmente de jour en jour.
L'USB U3 présente donc un avantage, pour la maîtrise de l'application utilisée ; par exemple, quand une personne est amenée à utiliser un ordinateur dont la configuration et le niveau de sécurité ne sont pas connus (comme dans un cyber-café, un hôtel, un aéroport, etc). Cela permet d'utiliser ses propres applications, plutôt que certaines méconnues, ou aux mises à jour et à la configuration non spécifiées. Elle reste cependant tributaire de la machine d'accueil pour toute communication, toute saisie, et tout transfert de données vers l'extérieur, et cette opération peut l'exposer à certains risques décrits dans les paragraphes qui suivent.
Une clé, ou tout autre support de stockage USB, est, une fois branchée sur une machine, à la merci de celle-ci. Un processus fonctionnant silencieusement, peut très bien attendre que la clé soit branchée (information signalée par le système d'exploitation) pour enclencher une procédure de lecture et de copie du contenu intégral de la clé. Un tel processus, comme la plupart des codes malveillants actuels, ne sera pas facilement décelable sur la machine hôte (dissimulation au niveau de la liste des tâches, des appels système, etc.).
Certains outils plus pernicieux permettent même de faire une image complète de la clé. Outre le vol de documents présents dans celle-ci, ce procédé peut également faciliter la récupération de tout ou partie des documents effacés sur la clé.
Les clés disposent de voyants lumineux, montrant les échanges de données. Un clignotement anormal de la clé peut donc être une première indication d'une telle activité de copie. Attention cependant, le voyant peut aussi être manipulé de manière logicielle sur certaines clés. Quelques secondes suffisent enfin pour dérober plusieurs Mo de données avec les performances USB actuelles.
L'action malveillante du paragraphe précédent est perpétrée par la machine d'accueil. Une autre approche, ou action malveillante, se nomme podslurping et s'effectue depuis le périphérique. Elle consiste à brancher sur un système un support de stockage, ou même un lecteur MP3 (podslurping fait référence au produit iPod d'Apple), afin de dérober furtivement de l'information de l'ordinateur.
L'ingénierie sociale, ou la force de persuasion, peut être associée à cette approche, afin de provoquer le branchement, et de perpétrer le vol des informations. Une phrase parmi les dialogues possibles pourrait être :
"Excusez-moi, pourrais-je connecter quelques minutes mon lecteur de musique MP3 sur votre port USB ?... Les batteries sont déchargées, et je ne rentre que demain chez moi. Merci beaucoup !".
Pendant quelques minutes, une partie du disque est copiée sur le lecteur de musique, qui dispose d'un espace de stockage important (de l'ordre de quelques Go à plusieurs dizaines de Go), et dont l'usage ne fait pas obligatoirement penser à un périphérique de stockage.
Ce scénario est aussi valable avec un appareil photo numérique.
Ce problème n'est absolument pas récent, et existait déjà à l'époque des disquettes. Cependant, les supports de stockage ont maintenant une capacité et un débit de transfert beaucoup plus importants, ce qui augmente la quantité de données pouvant être dérobées dans un cours intervalle de temps.
De nombreux scénarios d'attaques étudiés par le CERTA dans le cadre des incidents qu'il traite au quotidien sont dus à une absence de mises à jour, qui ouvre une brèche au niveau applicatif.
Il en va de même pour clés USB U3, dont le premier point délicat réside dans la maintenance des logiciels compatibles avec U3.
Ces logiciels, comme nous l'avons vu, sont pour la plupart des déclinaisons de ceux manipulés sur des systèmes plus standards (navigateur, client de messagerie, etc). En revanche, ils ont subi quelques modifications pour fonctionner sur le support U3, et quelques sites centralisent ces versions particulières.
Il se pose alors la question des mises à jour de ces dernières. Il n'est pas évident que les sites suivent de manière réactive les modifications des éditeurs officiels. Par ailleurs, la clé ne peut être mise à jour que si l'on dispose d'une connexion Internet.
Imaginons alors le scénario suivant :
Il est très délicat d'imposer aux utilisateurs d'une clé de se connecter à Internet pour effectuer les mises à jour. Ce n'est pas nécessairement l'usage premier qui est recherché.
Pour résumer, il existe les problèmes suivants, liés aux applications disponibles actuellement :
Il reste possible de développer soi-même les versions de certaines applications (en faisant attention aux problèmes de licences). Plusieurs documents détaillés pour opérer se trouvent sur l'Internet, mais cela reste marginal, et nécessite à la fois des connaissances minimales pour compiler du code et la disponibilité des fichiers sources.
Compte tenu des applications disponibles, les clés U3 sont susceptibles de contenir des informations personnelles ou confidentielles :
Le risque du vol de données comme il existe pour les clés classiques reste présent. Malheureusement, l'utilisation d'applications impose de fournir sur la clé U3 un minimum d'informations pour leur bon fonctionnement. D'autres applications U3 incitent également à centraliser des données confidentielles sur le support USB (gestionnaire de mots de passe par exemple). Le vol de celles-ci peut avoir des conséquences graves.
Pour finir, il faut noter que les clés U3 sont généralement fournies avec un lanceur, qui donne accès aux applications, une fois la clé insérée. Cependant, certains lanceurs malveillants sont également disponibles. Ils permettent d'exécuter directement des actions à l'insertion de la clé, et sont fournis avec des outils permettant : de récupérer les tables de mots de passe, d'installer une capture de clavier ou un rootkit, difficilement décelables a posteriori.
La clé ne dispose pas d'autres droits que ceux de l'utilisateur courant sous Windows. Pour limiter les actions que celle-ci peut effectuer sur le système, il est donc important de n'autoriser la connexion de clés que sur des sessions avec des droits limités, et de ne réserver les droits de l'administrateur qu'occasionnellement, pour la maintenance du système. Cette règle de base est également vraie, indépendamment des clés USB.
Sous Windows, pour ouvrir l'outil Comptes d'utilisateurs, il faut ouvrir le Panneau de configuration à partir du menu Démarrer, puis sélectionner Comptes d'utilisateurs. La gestion des comptes et des droits associés s'effectue à partir de cette interface.
L'autorun permet d'affecter plusieurs actions lors de l'interaction d'un utilisateur avec un périphérique de stockage. Ceci est paramétré avec un fichier autorun.inf à la racine du lecteur. On peut, par exemple, spécifier des actions pour les interactions suivantes :
L'exécution automatique consiste à exécuter automatiquement un logiciel lorsqu'un périphérique de stockage qui le contient est connecté. Microsoft autorise par défaut cette fonction pour le périphériques de type CDROM/DVDROM, ou les disques fixes. Cette fonctionnalité est visible, quand, par exemple, à l'insertion de certains CD, une fenêtre de navigation Internet Explorer, ou une application d'installation s'ouvre. Un périphérique USB classique ne permet pas, lors de son insertion dans une machine fonctionnant sous Windows, d'exécuter automatiquement des programmes ou des commandes qu'il peut contenir. Dans l'objectif de faire exécuter automatiquement du code au cours de l'insertion d'un périphérique USB, certains fabricants de matériels USB ont utilisé une astuce, qui consiste à faire passer celui-ci auprès de Windows pour un CD ou un DVD. Cette technique existe et c'est elle qui est utilisée par les produits USB U3. Le principe général est que le périphérique, au moment de l'insertion, se présente comme un lecteur de CDROM USB, permettant a fortiori l'exécution d'un autorun.
Les clés USB non U3, qui ne peuvent pas exécuter automatiquement un logiciel lorsque elles sont insérées, peuvent toutefois forcer l'exécution d'applications lorsque l'utilisateur y accède par double-clic ou par le menu contextuel (« Explorer », « Ouvrir »). Des moyens sûrs d'accéder à un périphérique de ce type sont, par exemple, via l'interpréteur de commandes cmd.exe ou en tappant la référence au volume dans la barre d'adresses de l'explorateur Windows.
La fonction autorun n'est généralement pas indispensable. Il convient donc de la désactiver pour tous les lecteurs.
Remarque importante : au préalable, pour que les changements décrits dans ce paragraphe soient bien pris en compte par le système d'exploitation, il est nécessaire de télécharger un correctif fourni par Microsoft. Ce correctif a fait l'objet de l'avis CERTA-2009-AVI-064, et n'est pas disponible en mises à jour automatiques à la date d'écriture de cette note pour les systèmes antérieurs à Windows Vista/Windows Server 2008.
Une clé de registre permet de désactiver la fonction autorun pour les types de lecteurs suivants :
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/Explorer
Cette clé n'est pas présente par défaut dans toutes les versions de Windows, il est donc parfois nécessaire de la créer.
Pour la désactivation de l'autorun il suffit de faire la somme des valeurs correspondantes aux types de disque. Par exemple :
Cette fonctionnalité est également configurable en utilisant l'outil de gestion des stratégies de groupe (gpedit.msc) en local ou via l'Active Directory. Le paramètre se trouve sous :
Configuration ordinateur (ou utilisateur)
-> Modèles d'administration
-> Système
-> Désactiver le lecteur automatique
La clé de registre précédente sera alors modifiée par l'outil.
Il est possible de désactiver uniquement l'exécution automatique des CD, DVD et clés U3 au moyen de la clé suivante :
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/CDRom
Pour la désactivation de l'exécution automatique :
pour l'activation de l'exécution automatique :
Cela fonctionne sur les systèmes Windows 95, Windows 98, Windows ME, Windows NT, Windows 2000, Windows XP et Windows 2003.
Il est important de noter que ceci ne protège pas des autres actions paramétrables dans les fichiers autorun.inf, contrairement à la première méthode.
Attention : la désactivation totale du support de l'USB perturbe aussi la connectique de la souris et du clavier en USB.
De manière assez radicale, il est aussi possible sous Windows de désactiver totalement les pilotes permettant le chargement de clés USB. Pour cela, la base de registre reste d'un grand secours. En effet, la clef suivante:
HKLM\SYSTEM\CurrentControlSet\Servicespermet un contrôle total sur l'ensemble des pilotes matériels, des pilotes systèmes, ainsi que des pilotes de services WIN32. Chaque pilote est décrit par une clef de registre contenant plusieurs valeurs (cf. http://support.microsoft.com/kb/103000 pour plus de précisions sur ces valeurs). Une de ces valeurs est particulièrement intéressante : Start. Cette valeur permet de définir la manière dont le pilote est chargé :
Il est alors facile de désactiver le chargement des pilotes USB en attribuant le DWORD 0x04 à la valeur Start des clef suivantes, par exemple :
HKLM\SYSTEM\CurrentControlSet\Services\USBSTOR :
pour désactiver le support du stockage de masse USB ;
HKLM\SYSTEM\CurrentControlSet\Services\usbhub :
pour désactiver totalement le pont USB ;
HKLM\SYSTEM\CurrentControlSet\Services\usbuhci :
pour désactiver le support du protocole USB1 ;
etc. :
plein d'autre drivers existent, qu'il faut découvrir en fonction du matériel.
Afin d'éviter des incidents liés à l'insertion de clés USB sur son système, il est également important de verrouiller son poste de travail : sous Windows, cela peut se régler de manière automatique, après un manque d'activité de quelques minutes sur le système (choisir Propriétés après un clic droit sur le fond d'écran), ou de manière ponctuelle (appuyer simultanément sur les touches Ctrl+Alt+Suppr ou Windows+L).
L'insertion d'un périphérique USB sous Windows ne provoque pas son installation quand l'écran est verrouillé. La partition peut être cependant montée (automount) sous Linux malgré le verrouillage2.
Si une clé doit être insérée dans un système critique, il est important de vérifier son origine. Une solution serait de conserver une clé blanchie, régulièrement formatée, et de réserver l'usage de l'USB à cette seule dernière (ajout de nouveaux matériels/périphériques interdits). En d'autres termes, il faudrait considérer une clé par usage, voire interdire son déplacement hors des locaux liés à son utilisation.
Certaines clés présentent un interrupteur physique, qui permet de bloquer l'accès en écriture à la clé. Il ne faut donc pas l'oublier. Si cela ne protège pas du vol d'information, et donc des différentes problématiques de confidentialité, cela empêche des éléments extérieurs de modifier le contenu de la clé, ou de l'effacer à l'insu de l'utilisateur.
Les clés peuvent contenir des données sensibles. Avant de les prêter ou de les abandonner, il est important de bien nettoyer leur espace de stockage, ou d'assurer la confidentialité de leur contenu. En fonction des impératifs et des réglementations, certaines opérations doivent être conduites.
Il n'est souvent pas suffisant de faire "supprimer" pour détruire complétement toute trace d'un document. Des résidus peuvent subsister. Certains outils permettent de faire un nettoyage beaucoup plus complet.
Il faut cependant bien vérifier que tout l'espace de stockage reste inaccessible. Certains outils se contentent d'effacer des fichiers, mais d'autres temporaires peuvent encore subsister sur l'espace de stockage (cas des documents bureautiques avec Microsoft Word par exemple).
Dans le cas de données plus sensibles, il existe des mesures plus efficaces que celles précédentes. Elles peuvent s'appuyer sur des méthodes de surcharge, de démagnétisation, etc. Enfin, une dernière mesure consiste à détruire le support de stockage USB.
Nous n'aborderons pas ce point dans ce document, car les questions de chiffrement et d'intégrité se posent pour tout support de stockage, mais il est bien entendu que si la solution de chiffrement nécessite une clé, celle-ci ne doit pas se trouver sur l'appareil USB. De la même manière, le résultat du test d'intégrité ne doit pas être stocké sur le même support.
D'autre part, les clés actuelles offrent comme contrôle d'accès l'utilisation d'un mot de passe pour accéder aux fonctionnalités U3. C'est une première protection contre le vol, mais il faut garder à l'esprit que :
Les périphériques de stockage USB offrent beaucoup d'avantages. Outre leur capacité importante, ils étendent actuellement leur champ d'action pour offrir à l'utilisateur des applications et des fonctionnalités multiples. Cependant, ces mêmes technologies peuvent également être utilisées à mauvais escient pour exécuter des actions malveillantes sur le système. A contrario, un système malveillant peut tirer profit de la qualité et la quantité des informations contenues sur ces supports, pour en dérober tout ou partie.
Il est important de considérer tout cela, pour un usage approprié de ces périphériques. Certaines mesures doivent être prises, selon le contexte, pour garantir un niveau de sécurité minimal. Etant donné l'usage répandu de ces appareils, un effort de sensibilisation est également nécessaire.
http://www.certa.ssi.gouv.fr/site/CERTA-2009-AVI-064/index.html
http://www.u3.com
http://support.microsoft.com/kb/q155217
http://www.usb.org
http://acquier.developpez.com/cours/USB/
http://www.rennes.supelec.fr/ren/fi/elec/docs/usb/usb.html
http://www.certa.ssi.gouv.fr/site/CERTA-2007-ACT-040.pdf
http://support.microsoft.com/kb/103000
http://www.us-cert.gov/cas/techalerts/TA09-020A.html