Detail publikace
Dfuzzer: A D-Bus Service Fuzzing Tool
Müller Petr, Ing.
D-Bus
fuzzer
fuzz testing
automated testing
pseudo-random data generation
IPC
Práce popisuje Dfuzzer, plně automatický nástroj pro fuzz testování programů komunikujících přes D-Bus, moderní mechanismus pro komunikaci mezi procesy běžícími v prostředí GNU/Linux. Dfuzzer používá D-Bus introspekci pro zjištění struktury parametrů očekávaných cílovým programem. Následně generuje pseudonáhodné vstupy respektující očekávanou strukturu a posílá je na vstup cílového programu, který je musí korektně zpracovat. Pomocí nástroje bylo nalezeno větší množství chyb v různých částech GNU/Linux operačního systému, včetně GNOME Shell a systemd.
Dfuzzer is fully automated: using D-Bus introspection, it is able to
acquire the structure of the parameters expected by the target program. It can
then generate ballast data respecting this structure, so the target program
starts using such data incorrectly if it does not carefully validate it. We
have found numerous bugs in various parts of the GNU/Linux operating system,
including GNOME Shell and systemd. The bugs usually result in
crashes, but we have found other bugs like memory leaks and even a data-loss
bug.
We also discuss the software engineering aspects of fuzz testing D-Bus
services. We have met developer opinions that the problems found do not
constitute valid bugs, because the D-Bus interface is actually an internal API.
The discussion is interesting by showing that D-Bus usage is not a fully mature
area of engineering, and programmers do not have a shared understanding of its
purpose.
@inproceedings{BUT111536,
author="Matúš {Marhefka} and Petr {Müller}",
title="Dfuzzer: A D-Bus Service Fuzzing Tool",
booktitle="Proceedings of IEEE Seventh International Conference on Software Testing, Verification and Validation Workshopsn",
year="2014",
pages="383--389",
publisher="IEEE Computer Society",
address="Cleveland",
doi="10.1109/ICSTW.2014.51",
isbn="978-0-7695-5194-4"
}