Fuzzing multiplataforma guiado con ejecucción concólica
Abstract
Fuzzing o pruebas de Fuzz, es el proceso de encontrar vulnerabilidades de
seguridad en programas, dándole como entrada datos inválidos, inesperados o
aleatorios. Como este proceso es altamente dependiente de la interfaz de entrada y del entorno de ejecución del sujeto bajo análisis, realizar Fuzzing sobre
programas con interfaces complejas y/o entornos de ejecución poco flexibles, se
vuelve más complicado y casi inviable.
En este trabajo desarrollaremos y analizaremos una herramienta para realizar pruebas de Fuzzing guiado sobre binarios compilados para plataformas foráneas y dependientes del entorno de ejecución.
El proceso se lleva a cabo capturando el programa bajo análisis, emulando el
mismo y utilizando ejecución simbólica dinámica para generar casos de prueba,
con el objetivo de conseguir una mayor cobertura del programa con la menor
cantidad de intentos.
A su vez, se mostrarán los desafı́os impuestos por la naturaleza del problema,
las herramientas utilizadas y la arquitectura del fuzzer. Por último, se puso a
prueba la herramienta con un caso de estudio sobre una plataforma especı́fica,
para encontrar un error introducido previamente y con el objeto de vulnerar el
programa.
Fuzzing, or Fuzz testing, is the process of finding security vulnerabilities
in programs by providing invalid, unexpected, or random data as input. Since
this process is highly dependent on the input interface and the execution en-
vironment of the subject under analysis, performing Fuzzing on programs with
complex interfaces and/or inflexible execution environments becomes more com-
plicated and almost unfeasible.
In this work, we will develop and analyze a tool to perform guided Fuzzing
tests on binaries compiled for foreign platforms and dependent on the execution
environment.
The process is carried out by capturing the program under analysis, emula-
ting it, and using dynamic symbolic execution to generate test cases, aiming to
achieve greater program coverage with the fewest attempts.
Additionally, the challenges imposed by the nature of the problem, the tools
used, and the fuzzer architecture will be presented. Finally, the tool was tested
with a case study on a specific platform to find a previously introduced bug and
to exploit the program.
The following license files are associated with this item: