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"
}