摘要

对Linux内核系统调用接口进行模糊测试是发现Linux内核漏洞的重要方法。现有测试方案生成系统调用测试例的质量和效率存在瓶颈,其中一个重要原因是忽视了系统调用之间的依赖关系。本文提出并实现了一个原型系统Dependkaller,通过动静结合的方式分析系统调用之间基于共享内核数据的依赖信息,并有效利用多种依赖信息指导Linux内核模糊测试,持续高效生成和变异系统调用测试例。实验结果表明:相比于现有方案MoonShine,我们的方案Dependkaller静态依赖分析结果更为全面;相比于现有方案syzkaller,我们的方案Dependkaller动态测试的代码覆盖率提升了16.89%,多发现了51.22%(即21个)的漏洞。