La seguridad en los puertos USB que usamos a diario es vital, ya que a través de ellos enviamos información importante e incluso sensible. Sin embargo, un grupo de investigadores ha descubierto un total de 26 vulnerabilidades que afectan a Windows, Linux, macOS y FreeBSD. Ningún sistema operativo de sobremesa se libra.
La investigación ha sido llevada a cabo por Hui Peng, de la Universidad Purdue; y Mathias Payer, del Instituto Federal Suizo de Tecnología de Lausana. Los fallos fueron descubiertos con una nueva herramienta que han bautizado como USBFuzz. Un “fuzzer” es una aplicación que permite enviar grandes cantidades de datos no válidos, inesperados o aleatorio como inputs a otros programas. A partir de ahí, analizan cómo se comporta el software para ver si encuentran nuevos bugs.
USBFuzz: poniendo a prueba los puertos USB
USBFuzz emula mediante software un dispositivo USB para actuar como input en el sistema operativo, enviando datos aleatorios a los drivers. Lo probaron en las últimas versiones de todos los sistemas operativos que hay disponibles, incluyendo 9 versiones recientes del kernel de Linux (incluyendo la 4.20-rc2, la más reciente en el momento de las pruebas), FreeBSD 12, macOS 10.15 Catalina, y las últimas versiones actualizadas de Windows 8 y Windows 10.
En FreeBSD encontraron un fallo, tres en macOS y cuatro en Windows 8 y Windows 10. Dos de macOS resultaron en un reinicio inesperado, y uno en un cuelgue del sistema. En Windows, los cuatro fallos generaron un pantallazo azul.
Linux, el sistema operativo más afectado
Sin embargo, la peor parte se la llevó Linux, ya que se encontraron 18 vulnerabilidades en total, y además son las más graves. 16 de ellas eran fallos de memoria con un alto impacto a nivel de seguridad en diversos subsistemas, incluyendo sistemas de sonido y redes. El otro afectaba al Host Controller Driver, y el último a los drivers de la cámara USB.
Los fallos fueron reportados a los desarrolladores del kernel de Linux, y ya han parcheado 11 desde principios de año. 10 de los 11 recibieron su correspondiente CVE, y se espera que el resto de fallos sean parcheados en los próximos meses. Esos siete restantes todavía se encuentran bajo embargo, y por ello los investigadores no han desvelado ningún detalle sobre ellos.
En el pasado, los fuzzers han permitido descubrir multitud de vulnerabilidades. Un ingeniero de Google creó uno que consiguió encontrar 79 fallos relacionados con los drivers USB de Linux. Sin embargo, Peng y Payer dicen que USBFuzz es mejor que cualquier otra herramienta similar creada en el pasado porque la suya ofrece a los desarrolladores un mayor control sobre el tipo de datos que usan para la prueba, además de poder llevarla fácilmente a otros sistemas operativos. La herramienta estará disponible en el futuro en este repositorio de GitHub.