Fuzzing In-Vivo Mediante Amplificación de Ejecuciones

Uno de los mayores cuellos de botella al aplicar fuzz testing sobre librerías es la necesidad de contar con fuzz drivers. Estos son programas que hacen las veces de intermediarios entre el fuzzer y la librería siendo testeada. El hecho de que vulnerabilidades críticas sigan siendo encontradas en lib...

Descripción completa

Detalles Bibliográficos
Autor principal: Galland, Octavio Adolfo
Otros Autores: Galeotti, Juan Pablo
Formato: Tesis de grado publishedVersion
Lenguaje:Español
Publicado: Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales 2024
Materias:
Acceso en línea:https://hdl.handle.net/20.500.12110/seminario_nCOM000503_Galland
https://repositoriouba.sisbi.uba.ar/gsdl/cgi-bin/library.cgi?a=d&c=aextesisg&d=seminario_nCOM000503_Galland_oai
Aporte de:
Descripción
Sumario:Uno de los mayores cuellos de botella al aplicar fuzz testing sobre librerías es la necesidad de contar con fuzz drivers. Estos son programas que hacen las veces de intermediarios entre el fuzzer y la librería siendo testeada. El hecho de que vulnerabilidades críticas sigan siendo encontradas en librerías que son continuamente sometidas a fuzzing delata la insuficiencia de estos drivers en la práctica. En este trabajo, proponemos un enfoque alternativo al fuzzing de librerías, que haga uso de una ejecución válida de un programa que utilice la librería (el host), y amplifique su ejecución. Más concretamente, ejecutamos el host hasta que una determinada función de una lista de funciones objetivo sea ejecutada, y luego procedemos a aplicar fuzzing guiado por cobertura sobre la misma. Una vez agotado el presupuesto de tiempo asignado a este objetivo, avanzamos al siguiente objetivo de la lista. De esta manera no solo reducimos la cantidad de esfuerzo manual requerido para incorporar fuzzing al ciclo de desarrollo de una librería, sino que también permitimos llevar a cabo el testing de la misma en un contexto que refleje el uso que se le daría en un contexto productivo.