Fuzzing In-Vivo Mediante Amplificación de Ejecuciones

Autores
Galland, Octavio Adolfo
Año de publicación
2024
Idioma
español castellano
Tipo de recurso
tesis de grado
Estado
versión publicada
Colaborador/a o director/a de tesis
Galeotti, Juan Pablo
Böhme, Marcel
Descripción
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.
A major bottleneck that remains when fuzzing software libraries is the need for fuzz drivers, i.e., the glue code between the fuzzer and the library. Despite years of fuzzing, critical security flaws are still found, for instance by manual auditing, because the fuzz drivers do not cover the complex interactions between the library and the real-world programs using it. In this work we propose an alternative approach to library fuzzing, which leverages a valid execution context set up by a given program using the library (the host), and amplify its execution. More specifically, we execute the host until a designated function from a list of target functions has been reached, and then perform coverage-guided function-level fuzzing on it. Once the fuzzing quota is exhausted, we move on to fuzzing the next target from the list. In this way we not only reduce the amount of manual work needed by a developer to incorporate fuzz testing into their workflow, but we also allow the fuzzer to explore parts of the library as they are used in real-world programs that may otherwise not have been tested due to the simplicity of most fuzz drivers.
Fil: Galland, Octavio Adolfo. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales; Argentina.
Materia
FUZZING
TESTING AUTOMATIZADO
SEGURIDAD DE SOFTWARE
DETECCION DE VULNERABILIDADES
EXPLORACION DE CAMINOS
FUZZING
AUTOMATED TESTING
SOFTWARE SECURITY
VULNERABILITY DETECTION
PATH EXPLORATION
Nivel de accesibilidad
acceso abierto
Condiciones de uso
https://creativecommons.org/licenses/by-nc-sa/2.5/ar
Repositorio
Biblioteca Digital (UBA-FCEN)
Institución
Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
OAI Identificador
seminario:seminario_nCOM000503_Galland

id BDUBAFCEN_42ec9216a92e506ba37afb9e06d239f8
oai_identifier_str seminario:seminario_nCOM000503_Galland
network_acronym_str BDUBAFCEN
repository_id_str 1896
network_name_str Biblioteca Digital (UBA-FCEN)
spelling Fuzzing In-Vivo Mediante Amplificación de EjecucionesIin-vivo fuzzing by amplifying actual executionsGalland, Octavio AdolfoFUZZINGTESTING AUTOMATIZADOSEGURIDAD DE SOFTWAREDETECCION DE VULNERABILIDADESEXPLORACION DE CAMINOSFUZZINGAUTOMATED TESTINGSOFTWARE SECURITYVULNERABILITY DETECTIONPATH EXPLORATIONUno 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.A major bottleneck that remains when fuzzing software libraries is the need for fuzz drivers, i.e., the glue code between the fuzzer and the library. Despite years of fuzzing, critical security flaws are still found, for instance by manual auditing, because the fuzz drivers do not cover the complex interactions between the library and the real-world programs using it. In this work we propose an alternative approach to library fuzzing, which leverages a valid execution context set up by a given program using the library (the host), and amplify its execution. More specifically, we execute the host until a designated function from a list of target functions has been reached, and then perform coverage-guided function-level fuzzing on it. Once the fuzzing quota is exhausted, we move on to fuzzing the next target from the list. In this way we not only reduce the amount of manual work needed by a developer to incorporate fuzz testing into their workflow, but we also allow the fuzzer to explore parts of the library as they are used in real-world programs that may otherwise not have been tested due to the simplicity of most fuzz drivers.Fil: Galland, Octavio Adolfo. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales; Argentina.Universidad de Buenos Aires. Facultad de Ciencias Exactas y NaturalesGaleotti, Juan PabloBöhme, Marcel2024-01-29info:eu-repo/semantics/bachelorThesisinfo:eu-repo/semantics/publishedVersionhttp://purl.org/coar/resource_type/c_7a1finfo:ar-repo/semantics/tesisDeGradoapplication/pdfhttps://hdl.handle.net/20.500.12110/seminario_nCOM000503_Gallandspainfo:eu-repo/semantics/openAccesshttps://creativecommons.org/licenses/by-nc-sa/2.5/arreponame:Biblioteca Digital (UBA-FCEN)instname:Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturalesinstacron:UBA-FCEN2025-09-04T09:49:19Zseminario:seminario_nCOM000503_GallandInstitucionalhttps://digital.bl.fcen.uba.ar/Universidad públicaNo correspondehttps://digital.bl.fcen.uba.ar/cgi-bin/oaiserver.cgiana@bl.fcen.uba.arArgentinaNo correspondeNo correspondeNo correspondeopendoar:18962025-09-04 09:49:20.444Biblioteca Digital (UBA-FCEN) - Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturalesfalse
dc.title.none.fl_str_mv Fuzzing In-Vivo Mediante Amplificación de Ejecuciones
Iin-vivo fuzzing by amplifying actual executions
title Fuzzing In-Vivo Mediante Amplificación de Ejecuciones
spellingShingle Fuzzing In-Vivo Mediante Amplificación de Ejecuciones
Galland, Octavio Adolfo
FUZZING
TESTING AUTOMATIZADO
SEGURIDAD DE SOFTWARE
DETECCION DE VULNERABILIDADES
EXPLORACION DE CAMINOS
FUZZING
AUTOMATED TESTING
SOFTWARE SECURITY
VULNERABILITY DETECTION
PATH EXPLORATION
title_short Fuzzing In-Vivo Mediante Amplificación de Ejecuciones
title_full Fuzzing In-Vivo Mediante Amplificación de Ejecuciones
title_fullStr Fuzzing In-Vivo Mediante Amplificación de Ejecuciones
title_full_unstemmed Fuzzing In-Vivo Mediante Amplificación de Ejecuciones
title_sort Fuzzing In-Vivo Mediante Amplificación de Ejecuciones
dc.creator.none.fl_str_mv Galland, Octavio Adolfo
author Galland, Octavio Adolfo
author_facet Galland, Octavio Adolfo
author_role author
dc.contributor.none.fl_str_mv Galeotti, Juan Pablo
Böhme, Marcel
dc.subject.none.fl_str_mv FUZZING
TESTING AUTOMATIZADO
SEGURIDAD DE SOFTWARE
DETECCION DE VULNERABILIDADES
EXPLORACION DE CAMINOS
FUZZING
AUTOMATED TESTING
SOFTWARE SECURITY
VULNERABILITY DETECTION
PATH EXPLORATION
topic FUZZING
TESTING AUTOMATIZADO
SEGURIDAD DE SOFTWARE
DETECCION DE VULNERABILIDADES
EXPLORACION DE CAMINOS
FUZZING
AUTOMATED TESTING
SOFTWARE SECURITY
VULNERABILITY DETECTION
PATH EXPLORATION
dc.description.none.fl_txt_mv 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.
A major bottleneck that remains when fuzzing software libraries is the need for fuzz drivers, i.e., the glue code between the fuzzer and the library. Despite years of fuzzing, critical security flaws are still found, for instance by manual auditing, because the fuzz drivers do not cover the complex interactions between the library and the real-world programs using it. In this work we propose an alternative approach to library fuzzing, which leverages a valid execution context set up by a given program using the library (the host), and amplify its execution. More specifically, we execute the host until a designated function from a list of target functions has been reached, and then perform coverage-guided function-level fuzzing on it. Once the fuzzing quota is exhausted, we move on to fuzzing the next target from the list. In this way we not only reduce the amount of manual work needed by a developer to incorporate fuzz testing into their workflow, but we also allow the fuzzer to explore parts of the library as they are used in real-world programs that may otherwise not have been tested due to the simplicity of most fuzz drivers.
Fil: Galland, Octavio Adolfo. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales; Argentina.
description 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.
publishDate 2024
dc.date.none.fl_str_mv 2024-01-29
dc.type.none.fl_str_mv info:eu-repo/semantics/bachelorThesis
info:eu-repo/semantics/publishedVersion
http://purl.org/coar/resource_type/c_7a1f
info:ar-repo/semantics/tesisDeGrado
format bachelorThesis
status_str publishedVersion
dc.identifier.none.fl_str_mv https://hdl.handle.net/20.500.12110/seminario_nCOM000503_Galland
url https://hdl.handle.net/20.500.12110/seminario_nCOM000503_Galland
dc.language.none.fl_str_mv spa
language spa
dc.rights.none.fl_str_mv info:eu-repo/semantics/openAccess
https://creativecommons.org/licenses/by-nc-sa/2.5/ar
eu_rights_str_mv openAccess
rights_invalid_str_mv https://creativecommons.org/licenses/by-nc-sa/2.5/ar
dc.format.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales
publisher.none.fl_str_mv Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales
dc.source.none.fl_str_mv reponame:Biblioteca Digital (UBA-FCEN)
instname:Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
instacron:UBA-FCEN
reponame_str Biblioteca Digital (UBA-FCEN)
collection Biblioteca Digital (UBA-FCEN)
instname_str Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
instacron_str UBA-FCEN
institution UBA-FCEN
repository.name.fl_str_mv Biblioteca Digital (UBA-FCEN) - Universidad Nacional de Buenos Aires. Facultad de Ciencias Exactas y Naturales
repository.mail.fl_str_mv ana@bl.fcen.uba.ar
_version_ 1842340718128922624
score 12.623145