En un puerto USB dado, solo quiero aceptar las capacidades de almacenamiento masivo USB, y nada más. Sin dispositivos HID, sin adaptadores Bluetooth, sin convertidores RS232, nada. ¿Hay alguna manera de hacer esto, por ejemplo, usando udev? Soy consciente de que puedo escribir una regla udev personalizada para incluir un controlador para un dispositivo determinado o un puerto determinado, pero ¿puedo excluir de alguna manera todos los demás controladores? Estoy tratando de permitir solo una clase de dispositivos, a saber, el almacenamiento masivo USB; Hay una miríada de modelos de dispositivos diferentes en esta clase, y no sé cuáles se conectarán al puerto (los clientes traerán los suyos, no hay forma de que esto afecte).
Las amenazas del firmware USB reprogramado solo empeorarán en el futuro previsible. Estoy tratando de mitigarlos para este caso de uso: tengo una computadora con periféricos USB conectados internamente (tarjeta de red, periféricos especializados, teclado) y un puerto USB público, que se supone que solo se usará para la transferencia de archivos. Por lo tanto, no puedo incluir en la lista negra los otros módulos USB por completo; pero me gustaría "desinfectar" ese puerto en particular, de modo que enchufar un tipo de dispositivo diferente no haría nada.
El estuche está bloqueado físicamente, por lo que solo se puede acceder a este puerto USB específico desde el exterior, y entrometerse con el estuche o empalmarlo en el cable del teclado debería ser lo suficientemente sospechoso como para desencadenar una respuesta de seguridad física; Además, no espero que la mayoría de los usuarios sean activamente maliciosos, pero sí espero que aumente el número de portadores involuntarios de unidades USB re-flasheadas (como sucedió con las infecciones del sector de arranque flexible de antaño). En cuanto a la seguridad, en realidad no importa si el usuario trae el disco USB "armado" con intención maliciosa, o simplemente no sabe que está "infectado".
Soy consciente de que la seguridad perfecta no es factible aquí, y permitir que el usuario interactúe con el sistema de cualquier manera es arriesgado, pero, por desgracia, necesito equilibrar la seguridad con la usabilidad: la computadora debe ser utilizable por el cliente. Además, no estoy tratando de defenderme de un atacante determinado y objetivo con esto; más bien, estoy usando esto como una de las técnicas de mitigación, para que el sistema no sea fácil de entender.