While many real-world programs are shipped with configurations to enable/disable functionalities, fuzzers have mostly been applied to test single configurations of these programs. In this work, we first conduct an empirical study to understand how program configurations affect fuzzing performance. We find that limiting a campaign to a single configuration can result in failing to cover a significant amount of code. We also observe that different program configurations contribute differing amounts of code coverage, challenging the idea that each one can be efficiently fuzzed individually. Motivated by these two observations, we propose ConfigFuzz , which can fuzz configurations along with normal inputs. ConfigFuzz transforms the target program to encode its program options within part of the fuzzable input, so existing fuzzers' mutation operators can be reused to fuzz program configurations. We instantiate ConfigFuzz on six configurable, common fuzzing targets, and integrate their executions in FuzzBench. In our evaluation, ConfigFuzz outperforms two baseline fuzzers in four targets, while the results are mixed in the other targets due to program size and configuration space. We also analyze the options fuzzed by ConfigFuzz and how they affect the performance.
[ http ]
@article{zhang23fuzzoptions, title = {Fuzzing Configurations of Program Options}, author = {Zenong Zhang and George Klees and Eric Wang and Michael Hicks and Shiyi Wei}, journal = {{ACM} Transactions on Software Engineering and Methodology (TOSEM)}, volume = 32, number = 2, month = mar, year = 2023, note = {A shorter version appeared at the 2022 Fuzzing Workshop} }
This file was generated by bibtex2html 1.99.