主要思路和V-shuttle类似,Host通过虚拟机通道把Fuzz Input传输给Guest,然后由Guest操作MMIO,达到对虚拟机模拟设备的模糊测试.原本是基于Coverage Fuzz Driver,但是由于种种原因最终没有实现,目前阶段可以实现持久化模糊测试,也跑出了些洞(没提交).
参考资料:
https://mp.weixin.qq.com/s/FJxdskcIsHYGrpHYhWLznw
https://github.com/hustdebug/v-shuttle
https://nesa.zju.edu.cn/download/pgn_pdf_V-SHUTTLE.pdf
原项目地址,如有精力再继续维护:
https://github.com/FrostNova2021/qf
基于Coverage Fuzz Driver的摸索.其实使用afl/libFuzzer实现就好了,Fuzz Wrapper构造一个Qemu启动和数据通道就好了,当时自己水平不到位,重复造了轮子.
Host/Guest数据管道Debug.当时不知道virt-io,所以用了hook kvm,然后自定义vmcall的方式实现Host/Guest通信,还是自己水平菜.
Bug List:
这个坑在这里有提到,暂时没有较好的解决方法:
鸽了