used to observe bugs, as well as the use of sanitis-
ers.
We interpret this general outcome as a clear call for
future research and developments.
4 EXISTING SOLUTIONS
Nowadays the only solutions to fuzz programs that
use forks are manually modifying the code or break-
ing the multi-process nature of the system (by em-
ploying tools like defork
10
) in order to get rid of the
forks.
Unfortunately, making modifications to the code,
as pointed out in the AFLNet documentation
11
, to
remove all the forks is a challenging and error-prone
task and break the multi-process nature of the system
often leads to weird system behaviours. The only so-
lution, therefore, remains to modify the fuzzers.
5 CONCLUSIONS
This paper analyses the fork awareness of the
coverage-guided fuzzers using three different aspects.
The analysis conducted on 14 well-known fuzzers
highlights that while is it clear how important is to
handle multi-process programs, the majority of the
fuzzers overlook the problem. 11 of 14 fuzzers are
not able to detect bugs in the child process. The intu-
ition behind these outcomes is related to the way these
fuzzers detect bugs. All the AFL-derived fuzzers use
signals (SIGSEGV, SIGABRT, etc) to detect bugs and
this mechanism misses bugs in child processes. We
noticed that dealing with forks is not the only problem
and other issues may be related to the IPC scheduling.
For example, the IPC may influence the success of
the fuzzing process since some bugs may be triggered
only after a specific process schedule and only after
access to a particular cell of memory. We believe this
paper represents a first step towards the devising of
fuzzers aware of the eventual multiprocess nature of
the software. The first step to achieve this goal might
be the implementation of a loop detector at an early
stage, e.g. by leveraging a dynamic library to keep
track of all process identifiers of forked processes. To
summarise, this work not only provides the first con-
crete way to evaluate the fuzzers according to their
fork awareness but sheds light for the first time on a
10
https://github.com/zardus/preeny/blob/master/src/
defork.c
11
https://github.com/aflnet/aflnet
class of problems that have been ignored until now,
showing interesting future directions.
REFERENCES
Besler and Frederic (2016). Circumventing fuzzing road-
blocks with compiler transformations. https://lafintel.
wordpress.com.
Boehme, M., Cadar, C., and Roychoudhury, A. (2021).
Fuzzing: Challenges and reflections. IEEE Softw.,
38(3):79–86.
Bohme, M., Manes, V. J., and Cha, S. K. (2020). Boosting
fuzzer efficiency: An information theoretic perspec-
tive. In Proceedings of the 28th ACM Joint Meeting on
European Software Engineering Conference and Sym-
posium on the Foundations of Software Engineering,
pages 678–689.
Bohme, M., Pham, V.-T., and Roychoudhury, A.
(2017). Coverage-based greybox fuzzing as markov
chain. IEEE Transactions on Software Engineering,
45(5):489–506.
Choi, J., Jang, J., Han, C., and Cha, S. K. (2019). Grey-box
concolic testing on binary code. In 2019 IEEE/ACM
41st International Conference on Software Engineer-
ing (ICSE), pages 736–747. IEEE.
Fioraldi, A., Maier, D., Eißfeldt, H., and Heuse, M. (2020).
Afl++: Combining incremental steps of fuzzing re-
search. In 14th USENIX Workshop on Offensive Tech-
nologies (WOOT 20).
Hazimeh, A., Herrera, A., and Payer, M. (2020). Magma:
A ground-truth fuzzing benchmark. Proceedings of
the ACM on Measurement and Analysis of Computing
Systems, 4(3):1–29.
Lemieux, C. and Sen, K. (2018). Fairfuzz: A targeted muta-
tion strategy for increasing greybox fuzz testing cov-
erage. In Proceedings of the 33rd ACM/IEEE Interna-
tional Conference on Automated Software Engineer-
ing, pages 475–485.
Lyu, C., Ji, S., Zhang, C., Li, Y., Lee, W.-H., Song, Y.,
and Beyah, R. (2019). {MOPT}: Optimized muta-
tion scheduling for fuzzers. In 28th USENIX Security
Symposium (USENIX Security 19), pages 1949–1966.
Metzman, J., Szekeres, L., Maurice Romain Simon,
L., Trevelin Sprabery, R., and Arya, A. (2021).
FuzzBench: An Open Fuzzer Benchmarking Platform
and Service. In Proceedings of the 29th ACM Joint
Meeting on European Software Engineering Confer-
ence and Symposium on the Foundations of Soft-
ware Engineering, ESEC/FSE 2021, pages 1393–
1403, New York, NY, USA. Association for Comput-
ing Machinery.
Miller, B. P., Fredriksen, L., and So, B. (1990). An empiri-
cal study of the reliability of unix utilities. Communi-
cations of the ACM, 33(12):32–44.
Miller, B. P., Koski, D., Lee, C. P., Maganty, V., Murthy, R.,
Natarajan, A., and Steidl, J. (1995). Fuzz revisited: A
re-examination of the reliability of unix utilities and
services. Technical report, University of Wisconsin-
Madison Department of Computer Sciences.
ICISSP 2023 - 9th International Conference on Information Systems Security and Privacy
428