Muchos periféricos USB incluyen microcontroladores basados en flash. Si bien los microcontroladores basados en la máscara de ROM son más baratos, el uso de un microcontrolador basado en flash puede permitir que un fabricante tenga una placa que pueda incluir una variedad de productos OEM, cada uno de los cuales informa el nombre bajo el cual se vende. Algunos periféricos incluyen firmware que les permite reprogramarse desde el puerto USB; tenerlos configurados de esa manera permitiría a un fabricante programar previamente las piezas de una manera adecuada para su cliente de mayor volumen y reprogramarlas a pedido de otros clientes.
Si un mouse incluye un microcontrolador flash, es posible que una persona malintencionada lo reprograme para que se comporte como un dispositivo de infección de malware. Debido a que no es probable que la mayoría de los ratones usen microcontroladores particularmente grandes, es posible que no haya espacio para el malware si se requiere que el mouse sea utilizable como mouse. Por otro lado, es posible que algún malware identifique un mouse vulnerable y lo reprograme de tal manera que ya no funcione como un mouse, sino que actúe como un agente del mal cuando se conecta a una máquina no infectada [según la teoría de que alguien cuyo mouse deja de funcionar podría probarlo en otra computadora].
En general, no sería difícil diseñar un periférico USB de tal manera que una vez que se haya cargado el firmware final no se pueda volver a cargar desde el puerto USB, pero no hay una forma general de distinguir los dispositivos que son inmunes a la reprogramación de los dispositivos que no están cargados. 't. También sería posible diseñar un "hub USB inteligente" con una pantalla y algunos botones que, cuando se conectó un dispositivo, indicaran lo que el dispositivo dice ser, pidiendo confirmación antes de que la computadora pueda ver el dispositivo, y restringir las comunicaciones del dispositivo a aquellas que fueron aprobadas para su tipo, pero no sé si hay algún dispositivo inteligente de ese tipo disponible.