Casi todos los códigos de programas nuevos tienen errores que, en el peor de los casos, pueden comprometer la seguridad. Para detectarlos de manera rápida y eficiente, los investigadores del Instituto Horst Görtz de Seguridad TI de la Universidad Ruhr de Bochum, Alemania, han desarrollado un nuevo sistema llamado Fuzzware.
Se especializa en el análisis de sistemas embebidos, es decir, minicomputadoras que se pueden encontrar en bombillas inteligentes, termostatos inteligentes y sistemas de control industrial, entre otros. Frotarla revista científica de la Universidad del Ruhr, publicó un artículo sobre su trabajo.
El doctorado de Bochum. El estudiante Tobias Scharnowski, supervisado por el profesor Thorsten Holz, presentó los resultados en el 31.er Simposio de seguridad de Usenix en los EE. UU. en agosto de 2022. Realizó la investigación en cooperación con colegas de la Universidad de California Santa Bárbara y la Vrije Universiteit Amsterdam.
Bloquear el software a propósito
El grupo utiliza lo que se conoce como fuzzing para detectar errores en el código del programa. Los fuzzers son algoritmos que alimentan el software probado con entradas aleatorias y verifican si pueden bloquear la aplicación con ellos. Estos bloqueos indican errores de programación. El fuzzer sigue variando la entrada para explorar tantos componentes del programa como sea posible paso a paso.
Fuzzing ya está establecido para ciertas áreas de aplicación, por ejemplo, para probar sistemas operativos como Windows o Linux. Sin embargo, aún no se ha utilizado ampliamente para probar sistemas integrados porque plantean una serie de desafíos: el software, el llamado firmware, está integrado en una pieza de hardware con la que interactúa. A menudo, los sistemas tienen relativamente poca memoria y procesadores lentos. Este es un problema si los investigadores quieren realizar fuzzing directamente en el sistema. Tomaría demasiado tiempo probar todas las entradas posibles y esperar la respuesta del sistema.
Imitación virtual de hardware.
Por eso, el equipo no analiza el firmware directamente en la unidad de control industrial o en la bombilla. En su lugar, recrean el hardware virtualmente; este proceso se denomina emulación. El emulador hace creer al firmware que está dentro del dispositivo real. Para ello, tiene que interactuar con el programa exactamente de la misma forma que lo haría el hardware real.
Para acelerar el procedimiento, los investigadores agregan otro paso al proceso de fuzzing al reducir las posibles entradas. Primero, modelan el marco en el que deben ubicarse las entradas para que sean lógicas para el firmware. Por ejemplo: si el hardware es un refrigerador con un sensor de temperatura, el hardware del refrigerador puede informar las temperaturas medidas al software del refrigerador, es decir, su firmware. Siendo realistas, no es posible que ocurra una temperatura determinada, tiene que estar dentro de un cierto rango. Por lo tanto, el firmware solo está programado para un cierto rango de temperatura. No pudo procesar otros valores en absoluto, por lo que no es necesario confundirlos.
Las entradas limitadas facilitan un análisis eficiente
Junto con colegas de Santa Bárbara y Amsterdam, el equipo de Bochum probó 77 firmwares usando Fuzzware. En comparación con los métodos de fuzzing convencionales, clasificaron hasta el 95,5 % de todas las entradas posibles.
Esto permite que Fuzzware verifique hasta tres veces más código del programa que los métodos convencionales en la misma cantidad de tiempo. En el proceso, el grupo también identificó vulnerabilidades adicionales que no habían sido detectadas con otros métodos de fuzzing.
Fuzzware: uso de modelado MMIO preciso para un fuzzing de firmware eficaz. www.usenix.org/conference/usen … entation/scharnowski
Citación: Identificación de vulnerabilidades de software de forma rápida y eficiente (14 de diciembre de 2022) recuperado el 14 de diciembre de 2022 de https://techxplore.com/news/2022-12-software-vulnerabilities-quickly-ficiently.html
Este documento está sujeto a derechos de autor. Aparte de cualquier trato justo con fines de estudio o investigación privados, ninguna parte puede reproducirse sin el permiso por escrito. El contenido se proporciona únicamente con fines informativos.