-
Notifications
You must be signed in to change notification settings - Fork 48
Reproducing evaluation part of paper Healer #37
Description
Dear developers,
I recently ran healer, healer-, syzkaller, and moonshine with the following setting and aimed to reproduce the branch coverage growth shown in the paper published on SOSP 2021 "HEALER: Relation Learning Guided Kernel Fuzzing".
- Syzkaller commit:
4285ffa3f - Moonshine: the same commit as Syzkaller with extra
strong_distill.dbas initial seed - Healer commit:
ea7e71361 - Healer-: the same commit as Healer, without dynamically updating relation table (comment out line 249-269 in file healer_fuzzer/src/fuzzer.rs) https://github.com/SunHao-0/healer/blob/main/healer_fuzzer/src/fuzzer.rs#L249
The test kernel target is Linux 5.0. I launched 4 virtual machines for all experiments. Each virtual machine is configured to use 2 cores and 4G memory, which is the same as the setting illustrated in the paper. The first figure shows the branch coverage growth of four tools over 24 hours.
To eliminate the influence of throughput, I further drew the branch coverage growth of four tools over the number of executed traces and got the following figure.
I'm curious about the following problems:
- The branch coverage achieved by healer in my experiments is less than 10w, whereas, the coverage can achieve near 20w (Figure 4) in the paper. To reproduce the results shown in the paper, could you please shed some light on whether my setting is incorrect or not?
- The coverage doesn't hurt a lot when I disabled the dynamic relation learning part (healer-). May I know how to reproduce the branch coverage improvement (Table 2) as shown in Sec 6.2 when evaluating the effectiveness of the relation learning?
Thank you.
The detailed configurations are shown below.
# Command to run healer and healer-
./bin/healer -d stretch.img --ssh-key stretch.id_rsa -k bzImage_5.0 -S ./ -j 4# Config of Syzkaller and Moonshine
{
"name": "",
"target": "linux/amd64",
"http": "0.0.0.0:56741",
"rpc": ":0",
"workdir": "/path/to/syzkaller/workdir",
"kernel_obj": "/path/to/linux_5.0",
"kernel_src": "/path/to/linux_5.0",
"kernel_build_src": "/path/to/linux_5.0",
"image": "/path/to/stretch.img",
"sshkey": "/path/to/stretch.id_rsa",
"ssh_user": "root",
"syzkaller": "/path/to/syzkaller",
"procs": 1,
"sandbox": "none",
"cover": true,
"type": "qemu",
"vm": {
"count": 4,
"kernel": "/path/to/bzImage_5.0",
"cpu": 2,
"mem": 4096
}
}
