Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
May 1, 2020
Krace: Data Race Fuzzing
for Kernel File Systems
1
Meng Xu, Sanidhya Kashyap, Hanqing Zhao, Taesoo Kim
Introduction Title
Krace: Data Race Fuzzing for Kernel File Systems Meng Xu , Sanidhya - - PowerPoint PPT Presentation
Introduction Title Krace: Data Race Fuzzing for Kernel File Systems Meng Xu , Sanidhya Kashyap, Hanqing Zhao, Taesoo Kim May 1, 2020 Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems 1 May 1, 2020 Introduction Data
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
1
Introduction Title
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
2 Introduction Data race concept
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020 3 Introduction A classic data race example
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020 4 Introduction A classic data race example
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020 5 Introduction Kernel concurrency
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020 6 Introduction A data race in the kernel
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020 7 Introduction A data race in the kernel
if we drive the execution into these code paths at runtime
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020 8 Background Fuzzing in general
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
9
Background Edge coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
10
Background Edge coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
11
Background Edge coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
12
......
20 trials
Background Edge coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
13
......
20 trials rename(“new-file”, “old-file”)
Background Edge coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
14
code coverage
Crashed?
Background Existing kernel fuzzers
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
15
code coverage
Crashed?
including Syzkaller, kAFL, and their follow-ups, and is one of the key reason why over 200 memory errors were found and reported during the past few years!
Background Existing kernel fuzzers
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
16
*Assume sequential consistency.
Background Motivation
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
17
*Assume sequential consistency.
Background Motivation
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
18
code coverage
Crashed?
Signaled?
Design Data race checker
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
19
W
lock
R
unlock lock unlock
Design Data race checker
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
20
W
delayed_work <timer start> <timer end> queue_work
R
<work start>
Design Data race checker
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
21
code coverage
Crashed?
Signaled?
Design Data race checker
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
22
*Assume sequential consistency.
Design Interactions between threads
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
23
*Assume sequential consistency.
Design Interactions between threads
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
24
Design Interactions between threads
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
25
Design Interactions between threads
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
26
global A = 1; local x; if (IS_DIR(path)) x = A + 1; if (!G[x]) G[x] = kmalloc(...); ... global A = 0; local y; if (size > 4096) y = A * 2; if (!G[y]) G[y] = kmalloc(...); ...
Design Interactions between threads
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
27 Design Missing information in edge coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
28 Design Alias coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
29 Design Alias coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
30 Design Alias coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
31
code coverage
Crashed?
Signaled?
Design Alias coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
32
code coverage
concurrency coverage
Crashed?
Signaled?
Design Alias coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
33
code coverage
concurrency coverage
Crashed?
Signaled?
Design Alias coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
34
code coverage
concurrency coverage
Crashed?
Signaled?
Design Alias coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
35
i1 i2 i3 i4 i5 i6 i7 i8 i9 i10 i11 i12
Design Alias coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
36
i1 i2 i3 i4 i5 i6 i7 i8 i9 i10 i11 i12 i1 i7 i8 i9 i2 i3 i4 i10 i5 i6 i11 i12
Design Alias coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
37
i1 i2 i3 i4 i5 i6 i7 i8 i9 i10 i11 i12 i1 i7 i8 i9 i2 i3 i4 i10 i5 i6 i11 i12
Design Alias coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
38
i1 i2 i3 i4 i5 i6 i7 i8 i9 i10 i11 i12 i1 i7 i8 i9 i2 i3 i4 i10 i5 i6 i11 i12
If two threads have and instructions respectively, then the number interleavings between them is given by:
Design Alias coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
39
Design Alias coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
40
memory, they interleaving does not matter at all.
shared memory, they interleaving does not matter at all.
Design Alias coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
41
R R
memory, they interleaving does not matter at all.
shared memory, they interleaving does not matter at all.
Design Alias coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
42
R
W
W
memory, they interleaving does not matter at all.
shared memory, they interleaving does not matter at all.
Design Alias coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
43
R
W
W
memory, they interleaving does not matter at all.
shared memory, they interleaving does not matter at all.
Track cross-thread write-to-read (def-to-use) edges!
Design Alias coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
44
memory, they interleaving does not matter at all.
shared memory, they interleaving does not matter at all.
Track cross-thread write-to-read (def-to-use) edges!
Design Alias coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
45
R
W
W
i1 i2 i3
Design Alias coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
46
R
W
W
W
R
i1 i2 i3 i4 i5
Design Alias coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
47
R
W
W
W
R
i1 i2 i3 i4 i5
During our experiment, we observed 63,590 unique cross-thread, write-to-read edges. a bitmap size of 128KB will be sufficient.
Design Alias coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
48
code coverage
concurrency coverage
Crashed?
Signaled?
Design Alias coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
49
code coverage
concurrency coverage
Crashed?
Signaled?
Design Interleaving generation
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
50
i3 i4 i1 i2
Design Interleaving generation
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
51
i3 i4 i1 i2
During our experiment, we observed at maximum 60 threads running concurrently. Assume each thread have only 10 shared memory accesses possibilities.
Design Interleaving generation
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
52
R W W R i1 i2 i3 i4
Design Interleaving generation
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
53
R R W W i1 i2 i3 i4
R W W R
Design Interleaving generation
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
54
R R W W i1 i2 i3 i4
Design Interleaving generation
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
55
R R W W i1 i2 i3 i4
Design Interleaving generation
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
56
code coverage
concurrency coverage
Crashed?
Signaled?
Design Interleaving generation
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
57
code coverage
concurrency coverage
Crashed?
Signaled?
Design Summary
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
58 Implementation Summary
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
59 Evaluation Coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
60 Evaluation Coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
61 Evaluation Coverage
Meng Xu (Georgia Tech) Krace: Data Race Fuzzing for Kernel File Systems May 1, 2020
62 Evaluation Bugs
Meng Xu (Georgia Tech) Finding Semantic Bugs in Kernels March 18, 2020
63
[SP’19] Janus [ICSE’19] DifFuzz [VLDB’20] Apollo [CCS’17] SlowFuzz …… [ICSE’19] SLF …… [Google] Syzkaller [FSE’19] Fudge …… [ASE’18] FairFuzz [CCS’16] AFLFast [SP’18] Angora [SP’20] Krace [RAID’19] Benchmark
Meng Xu (Georgia Tech) Finding Semantic Bugs in Kernels March 18, 2020
64
[SP’19] Janus [ICSE’19] DifFuzz [VLDB’20] Apollo [CCS’17] SlowFuzz …… [ICSE’19] SLF …… [Google] Syzkaller [FSE’19] Fudge …… [ASE’18] FairFuzz [CCS’16] AFLFast [SP’18] Angora [SP’20] Krace [RAID’19] Benchmark