辅助持续内核模糊测试的高效崩溃分类研究
linux内核应用很广泛并且有bug
syzkaller 内核fuzz工具
根据结果调整fuzz策略
持续性模糊测试 continuous fuzzing的问题:生成的报告很多,而且手工分析很难
注意到报告的重复性duplicate触发了同一漏洞,要减少人工分析,不是所有的bug需要立马修复
导致重复性的原因:1. 2. thread interleaving(时间注入看看是不是表现一样) 3.
修复优先级:漏洞会展示出不同的error behavior,厉害的漏洞不一定展示出内存崩溃,更多的error behavior才能展示漏洞的真实危害
Object-driven Fuzzing,因为内核是object-oriented
1.静态分析相关object
2.object ranking
3.error behavior
路径裁剪辅助的定向模糊测试
有点是很快地产生大量测试用例,但是很多无效的,导致路径爆炸。所以通过各种方式,减少随机性,提高有效性
如果想获取一个不随机的路径,那么SAT求解,路径爆炸
如果不可达则直接终止,比如执行到一个无关路径上
用了抽象解释
定向模糊测试,针对特定的行为
如何判定路径是无效的
发掘自定义内存管理函数的使用安全问题
之前是malloc -> free->free这种很死板的模式匹配,但是现实的内存分配更复杂
首先用自然语言识别内存分配函数,建立MOS结构,简化了数据流分析
数据库fuzzing
大量程序空间是模糊测试无法触及到的
基础种子和根据覆盖率的种子优化