You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
verifier: Prototype for new syz-verifier with new rpcserver and fuzzer
This commit introduces a prototype for the new syz-verifier using the new rpcserver and fuzzer. An in-depth explanation is available in README.md. Remaining work includes connecting the reproduction loop, HTTP servers, enabling snapshots, and the comparison phase. The prototype already implements a working differential fuzzing loop.
`syz-verifier` is a differential fuzzing tool for comparing the execution behavior of programs across different versions of the Linux kernel to detect semantic bugs and inconsistencies.
4
+
5
+
## Design Overview
6
+
7
+
The syz-verifier implements a centralized fuzzing architecture where a single `Verifier` instance manages multiple kernel configurations for differential testing:
8
+
9
+
### Core Architecture
10
+
11
+
```
12
+
┌─────────────────────────────────┐
13
+
│ Verifier │
14
+
│ │
15
+
│ ┌───────────────────────────┐ │
16
+
│ │ Fuzzer │ │
17
+
│ │ (Program Generation) │ │
18
+
│ └───────────────────────────┘ │
19
+
│ │ │
20
+
│ ▼ │
21
+
│ ┌───────────────────────────┐ │
22
+
│ │ Distribution Logic │ │
23
+
│ └───────────────────────────┘ │
24
+
│ │ │ │ │
25
+
└─────────┼────────┼────────┼─────┘
26
+
▼ ▼ ▼
27
+
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
28
+
│ Queue A │ │ Queue B │ │ Queue C │
29
+
│ (Kernel A) │ │ (Kernel B) │ │ (Kernel C) │
30
+
└─────────────┘ └─────────────┘ └─────────────┘
31
+
```
32
+
33
+
### Key Components
34
+
35
+
1.**Single Fuzzer Instance**: The verifier maintains one `fuzzer.Fuzzer` that generates test programs
36
+
2.**Per-Kernel Queues**: Each kernel configuration gets its own `queue.PlainQueue` for task distribution
37
+
38
+
### Main loop
39
+
40
+
1.**Generation**: The central fuzzer generates a new program
41
+
2.**Distribution**: The program is cloned and sent to each kernel's queue
42
+
3.**Execution**: Each kernel executes the program independently
43
+
4.**Collection**: The verifier waits for all kernels to complete
44
+
5.**Comparison**: Results are collected for differential analysis
45
+
## Implementation Details
46
+
47
+
### Verifier Structure
48
+
49
+
The `Verifier` struct contains:
50
+
-`fuzzer atomic.Pointer[fuzzer.Fuzzer]`: Single fuzzer instance for program generation
51
+
-`sources map[int]*queue.PlainQueue`: Per-kernel queue mapping (kernel ID → queue)
0 commit comments