Gray-Box Fuzzing via Gradient Descent and Boolean Expression Coverage (Technical Report)

Fuente: arXiv
Enregistré dans:
Détails bibliographiques
Auteurs principaux: Jonáš, Martin, Strejček, Jan, Trtík, Marek, Urban, Lukáš
Format: Preprint
Publié: 2024
Sujets:
Accès en ligne:
Tags: Ajouter un tag
Pas de tags, Soyez le premier à ajouter un tag!
_version_ 1866914649211928576
author Jonáš, Martin
Strejček, Jan
Trtík, Marek
Urban, Lukáš
author_facet Jonáš, Martin
Strejček, Jan
Trtík, Marek
Urban, Lukáš
contents We present a novel gray-box fuzzing algorithm monitoring executions of instructions converting numerical values to Boolean ones. An important class of such instructions evaluate predicates, e.g., *cmp in LLVM. That alone allows us to infer the input dependency (c.f. the taint analysis) during the fuzzing on-the-fly with reasonable accuracy, which in turn enables an effective use of the gradient descent on these instructions (to invert the result of their evaluation). Although the fuzzing attempts to maximize the coverage of the instructions, there is an interesting correlation with the standard branch coverage, which we are able to achieve indirectly. The evaluation on Test-Comp 2023 benchmarks shows that our approach, despite being a pure gray-box fuzzing, is able to compete with the leading tools in the competition, which combine fuzzing with other powerful techniques like model checking, symbolic execution, or abstract interpretation.
format Preprint
id arxiv_https___arxiv_org_abs_2401_12643
institution arXiv
publishDate 2024
record_format arxiv
spellingShingle Gray-Box Fuzzing via Gradient Descent and Boolean Expression Coverage (Technical Report)
Jonáš, Martin
Strejček, Jan
Trtík, Marek
Urban, Lukáš
Programming Languages
We present a novel gray-box fuzzing algorithm monitoring executions of instructions converting numerical values to Boolean ones. An important class of such instructions evaluate predicates, e.g., *cmp in LLVM. That alone allows us to infer the input dependency (c.f. the taint analysis) during the fuzzing on-the-fly with reasonable accuracy, which in turn enables an effective use of the gradient descent on these instructions (to invert the result of their evaluation). Although the fuzzing attempts to maximize the coverage of the instructions, there is an interesting correlation with the standard branch coverage, which we are able to achieve indirectly. The evaluation on Test-Comp 2023 benchmarks shows that our approach, despite being a pure gray-box fuzzing, is able to compete with the leading tools in the competition, which combine fuzzing with other powerful techniques like model checking, symbolic execution, or abstract interpretation.
title Gray-Box Fuzzing via Gradient Descent and Boolean Expression Coverage (Technical Report)
topic Programming Languages
url https://arxiv.org/abs/2401.12643