Em uma determinada porta USB, quero apenas aceitar recursos de armazenamento em massa USB e nada mais. Não há dispositivos HID, adaptadores Bluetooth, conversores RS232, nada. Existe uma maneira de fazer isso, por exemplo, usando o udev? Estou ciente de que posso escrever uma regra personalizada do udev para incluir um driver para um determinado dispositivo ou uma porta, mas de alguma forma posso excluir todos os outros drivers? Estou tentando permitir apenas uma classe de dispositivos, a saber, armazenamento em massa USB; existem inúmeros modelos de dispositivos diferentes nesta classe e não sei quais serão conectados à porta (os clientes trarão seus próprios, não há como eu afetar isso).
As ameaças do firmware USB reprogramado só vão piorar no futuro previsível. Estou tentando atenuá-los para este caso de uso: tenho um computador com periféricos USB conectados internamente (placa de rede, periféricos especializados, teclado) e uma porta USB voltada para o público, que deveria ser usada apenas para transferência de arquivos. Portanto, não posso colocar os outros módulos USB na lista negra; mas gostaria de "limpar" essa porta específica, para que a conexão de um tipo de dispositivo diferente não fizesse nada.
O gabinete está fisicamente bloqueado, de modo que somente essa porta USB específica seja acessível a partir do exterior, e se intrometer no gabinete ou emendar o cabo do teclado deve ser suspeito o suficiente para disparar uma resposta de segurança física; além disso, não espero que a maioria dos usuários seja ativamente mal-intencionada, mas espero que o número de operadoras involuntárias de unidades USB relampejadas aumente (como ocorreu com as infecções de disquetes do setor de outrora). No que diz respeito à segurança, não importa realmente se o usuário traz o disco USB "armado" com intenção maliciosa ou simplesmente não sabe que está "infectado".
Estou ciente de que a segurança perfeita é inviável aqui e permitir que o usuário interaja com o sistema de qualquer forma é arriscado - mas, infelizmente, preciso equilibrar segurança e usabilidade: o computador precisa ser utilizável pelo cliente. Além disso, não estou tentando me defender contra um atacante determinado e determinado; pelo contrário, estou usando isso como uma das técnicas de mitigação, para que o sistema não seja um problema de baixa qualidade.