Model-guided Fuzzing of Distributed Systems

Fuente: arXiv
Gespeichert in:
Bibliographische Detailangaben
Hauptverfasser: Gulcan, Ege Berkay, Ozkan, Burcu Kulahcioglu, Majumdar, Rupak, Nagendra, Srinidhi
Format: Preprint
Veröffentlicht: 2024
Schlagworte:
Online-Zugang:
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
_version_ 1866909761640857600
author Gulcan, Ege Berkay
Ozkan, Burcu Kulahcioglu
Majumdar, Rupak
Nagendra, Srinidhi
author_facet Gulcan, Ege Berkay
Ozkan, Burcu Kulahcioglu
Majumdar, Rupak
Nagendra, Srinidhi
contents We present a coverage-guided testing algorithm for distributed systems implementations. Our main innovation is the use of an abstract formal model of the system that is used to define coverage. Such abstract models are frequently developed in early phases of protocol design and verification but are infrequently used at testing time. We show that guiding random test generation using model coverage can be effective in covering interesting points in the implementation state space. We have implemented a fuzzer for distributed system implementations and abstract models written in TLA+. Our algorithm shows better coverage over purely random exploration as well as random exploration guided by different notions of scheduler coverage and mutation. In particular, we show consistently higher coverage and detect bugs faster on implementations of distributed consensus protocols such as those in Etcd-raft and RedisRaft. Moreover, we discovered 13 previously unknown bugs in their implementations, four of which could only be detected by model-guided fuzzing.
format Preprint
id arxiv_https___arxiv_org_abs_2410_02307
institution arXiv
publishDate 2024
record_format arxiv
spellingShingle Model-guided Fuzzing of Distributed Systems
Gulcan, Ege Berkay
Ozkan, Burcu Kulahcioglu
Majumdar, Rupak
Nagendra, Srinidhi
Software Engineering
Distributed, Parallel, and Cluster Computing
We present a coverage-guided testing algorithm for distributed systems implementations. Our main innovation is the use of an abstract formal model of the system that is used to define coverage. Such abstract models are frequently developed in early phases of protocol design and verification but are infrequently used at testing time. We show that guiding random test generation using model coverage can be effective in covering interesting points in the implementation state space. We have implemented a fuzzer for distributed system implementations and abstract models written in TLA+. Our algorithm shows better coverage over purely random exploration as well as random exploration guided by different notions of scheduler coverage and mutation. In particular, we show consistently higher coverage and detect bugs faster on implementations of distributed consensus protocols such as those in Etcd-raft and RedisRaft. Moreover, we discovered 13 previously unknown bugs in their implementations, four of which could only be detected by model-guided fuzzing.
title Model-guided Fuzzing of Distributed Systems
topic Software Engineering
Distributed, Parallel, and Cluster Computing
url https://arxiv.org/abs/2410.02307