Proceedings of the 27th ACM Symposium on Operating Systems Principles 2019
DOI: 10.1145/3341301.3359662
|View full text |Cite
|
Sign up to set email alerts
|

Finding semantic bugs in file systems with an extensible fuzzing framework

Abstract: File systems are too large to be bug free. Although handwritten test suites have been widely used to stress file systems, they can hardly keep up with the rapid increase in file system size and complexity, leading to new bugs being introduced and reported regularly. These bugs come in various flavors: simple buffer overflows to sophisticated semantic bugs. Although bug-specific checkers exist, they generally lack a way to explore file system states thoroughly. More importantly, no turnkey solution exists that … Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
4
1

Citation Types

0
26
0

Year Published

2020
2020
2024
2024

Publication Types

Select...
6
1

Relationship

1
6

Authors

Journals

citations
Cited by 54 publications
(26 citation statements)
references
References 26 publications
0
26
0
Order By: Relevance
“…An alternative is to enumerate code paths statically [40][41][42][43][44], but this is not scalable. Recent OS fuzzers adopt specificationbased syscall synthesization [5,6,21,27]. However, these fuzzers mostly focus on generating sequential programs instead of multi-threaded programs and are not intended to explore interleavings in syscall execution.…”
Section: Background and Related Workmentioning
confidence: 99%
See 2 more Smart Citations
“…An alternative is to enumerate code paths statically [40][41][42][43][44], but this is not scalable. Recent OS fuzzers adopt specificationbased syscall synthesization [5,6,21,27]. However, these fuzzers mostly focus on generating sequential programs instead of multi-threaded programs and are not intended to explore interleavings in syscall execution.…”
Section: Background and Related Workmentioning
confidence: 99%
“…As is evident in kernel and file system evolutions [1][2][3][4], a whole zoo of programming paradigms is introduced to exploit multi-core computation, including but not limited to asynchronous work queues, read-copy-update (RCU), and optimistic locking such as sequence locks. However, alongside performance improvements, concurrency bugs also find their ways to the code base and have become particularly detrimental to the reliability and security of file systems due to their devastating effects such as deadlocks, kernel panics, data inconsistencies, and privilege escalations [5][6][7][8][9][10][11][12].…”
Section: Introductionmentioning
confidence: 99%
See 1 more Smart Citation
“…For example, Btrfs [36] was designed 14 years ago yet reported 110 bugs in 2020 [21]. Such bugs can cause data corruption or loss and system crashes [22,24,37].…”
Section: Introductionmentioning
confidence: 99%
“…CMC [29][30][31] inserts file system code directly into the model checker, for substantial speed advantages, but requires extensive changes to the very code being verified, making the results less trustworthy [47]. Fuzzing can find real-world bugs [12,22,38,45,46], but either is limited to specific types of bugs (e.g., memory safety for Janus [46]), or needs human effort to create checkers [22]. Likewise, symbolic-execution tools [4,5] cannot guarantee thorough coverage because they focus on particular issues (e.g., corrupt input [5]); they also require a behavioral model of each file system call [4].…”
Section: Introductionmentioning
confidence: 99%