Sur un port USB donné, je veux seulement accepter les capacités de stockage de masse USB, et rien d'autre. Pas d'appareils HID, pas d'adaptateurs Bluetooth, pas de convertisseurs RS232, rien. Existe-t-il un moyen de le faire, par exemple en utilisant udev? Je sais que je peux écrire une règle udev personnalisée pour inclure un pilote pour un périphérique donné, ou un port donné, mais puis-je en quelque sorte exclure tous les autres pilotes? J'essaie de n'autoriser qu'une seule classe d'appareils, à savoir le stockage de masse USB; il existe une myriade de modèles de périphériques différents dans cette classe, et je ne sais pas lesquels vont se connecter au port (les clients apporteront le leur, il n'y a aucun moyen pour moi d'affecter cela).
Les menaces du micrologiciel USB reprogrammé ne feront qu'empirer dans un avenir prévisible. J'essaie de les atténuer pour ce cas d'utilisation: j'ai un ordinateur avec des périphériques USB connectés en interne (carte réseau, périphériques spécialisés, clavier) et un port USB public, qui est uniquement censé être utilisé pour le transfert de fichiers. Donc, je ne peux pas mettre sur liste noire les autres modules USB; mais je voudrais "désinfecter" ce port particulier, de sorte que le branchement dans un type d'appareil différent ne fasse rien.
Le boîtier est physiquement verrouillé, de sorte que seul ce port USB spécifique est accessible de l'extérieur, et l'ingérence avec le boîtier ou l'épissure dans le câble du clavier doit être suffisamment suspecte pour déclencher une réponse de sécurité physique; de plus, je ne m'attends pas à ce que la plupart des utilisateurs soient activement malveillants, mais je m'attends à ce que le nombre de transporteurs involontaires de clés USB re-flashées augmente (comme c'était le cas avec les infections du secteur de démarrage de disquette d'autrefois). En ce qui concerne la sécurité, peu importe que l'utilisateur apporte le disque USB "armé" avec une intention malveillante, ou qu'il ne sache tout simplement pas qu'il est "infecté".
Je suis conscient qu'une sécurité parfaite est irréalisable ici, et permettre à l'utilisateur d'interagir avec le système de quelque manière que ce soit est risqué - mais hélas, je dois équilibrer la sécurité et la convivialité: l'ordinateur doit être utilisable par le client. De plus, je n'essaie pas de me défendre contre un attaquant ciblé et déterminé avec cela; je l'utilise plutôt comme l'une des techniques d'atténuation, afin que le système ne soit pas un fruit à faible pendaison.