ubuntu20.04下搭建syzkaller环境 (避坑指南)

发布时间 2023-11-28 14:49:47作者: 太极者

1、安装golang环境,最开始使用apt install golang,结果在编译syzkaller时,编译没法通过。在Makefile中最开始检测NCORES失败,直接退出。

根据Makefile的逻辑,其中的NCORES,应该是前面的go run tools/syz-make/make.go语句拿到了环境信息,但是apt install golang安装的golang环境,这个go文件执行失败了,未返回任何信息。后面手动下载安装包,并配置环境变量后,编译通过。个人分析可能跟golang的环境变量有关。

2、下载syzkaller时,不要在github上直接下载zip包,需要在linux使用git clone 直接克隆一份代码,在编译syzkaller时,其中会检测syzkaller的一些git信息;网上有人提示,可以下载zip包,解压后在其中执行git init也可以编译,本人测试未通过。

3、编写syz-manager的配置文件,启动syz-manager后,syzkaller页面一直没有任何信息提示;通过ssh -i *.id_rsa -p port 127.0.0.1的方式去连接qemu中的linux,连接失败。

      syz-manager启动命令:./bin/syz-manager -config my.config。

      ps -ef | grep qemu查询syz-manager启动qemu的命令,如下:qemu-system-x86_64 -m 2048 -smp 2 -chardev socket,id=SOCKSYZ,server=on,wait=off,host=localhost,port=10261 -mon chardev=SOCKSYZ,mode=control -display none -serial stdio -no-reboot -name VM-2 -device virtio-rng-pci -enable-kvm -cpu host,migratable=off -device e1000,netdev=net0 -netdev user,id=net0,restrict=on,hostfwd=tcp:127.0.0.1:23637-:22 -hda /opt/github/image/bullseye.img -snapshot -kernel /opt/github/linux/arch/x86/boot/bzImage -append root=/dev/sda console=ttyS0

     删除命令中-display none后,使用此命令启动Qemu,在最后会提示:“[FAILED] Failed to start Raise network interfaces.”,如图:

登录进qemu中的linux后,ip a会发现网卡未启动。

4、将3的qemu启动命令中的-device virtio-rng-pci参数删除后启动qemu,网卡启动正常。并且在qemu中的linux中可以ping通www.baidu.com

5、根据4的现象,修改syzkaller的启动参数。在qemu.go中有各种架构的启动参数,注释amd64的rng启动参数,如下图:

重新编译syzkaller,并使用./bin/syz-manager -config my.config启动syzkaller。此时在syzkaller的页面可以观察到有数据了。