现代操作系统是最复杂的计算机程序之一,但在其开发的过程中不可避免地会引入错误或漏洞。并且由于操作系统的广泛应用和重要地位,这些漏洞可能带来严重的威胁并导致损失。因此,挖掘操作系统中隐藏的错误和漏洞对提高系统的整体安全性具有重要意义。模糊测试是目前最流行、最有效的软件测试技术之一,被广泛用于各个主流软件的测试,其中也包括操作系统内核的测试。
但是,目前的内核模糊测试工具在生成和变异测试用例时,没能充分考虑系统调用之间的关系。本文的作者提出了一种动静态相结合的关系学习算法,捕捉系统调用之间的依赖关系,并通过捕捉到的依赖关系来指导生成更有效的测试用例。作者搭建了基于上述算法的模糊测试工具HEALER,并对其进行了实验。实验结果表明,与目前主流的内核模糊测试工具Syzkaller和Moonshine相比,Healer平均提升28%与21%的分支覆盖率,并且效率提升了2.2倍与1.8倍。实验中,Healer在Linux内核中发现了218个漏洞,其中有33个首次发现的漏洞。
一、研究背景
操作系统内核的测试用例其实就是系统调用的序列。Syzkaller并不是完全没有考虑系统调用之间的影响,它利用一张系统调用选择表来记录一个系统调用在另一个系统调用之前被调用的概率,以确定要测试的系统调用的顺序。虽然这个表体现了系统调用之间的资源依赖关系,但选择表并不能显示出系统调用之间的影响关系。而且,系统调用的组合的空间巨大,并且其中大多数组合是无效的或是与别的组合等价,需要采取有效的方法来减少搜索空间并增加生成有效测试用例的概率。
为此,作者提出了新的内核模糊测试工具Healer。Healer通过关系学习算法来处理测试用例,推断用例中的系统调用之间是否存在影响关系,然后将学习到的关系存储在关系表中。关系表会在模糊测试的过程中被逐步细化,用于指导测试用例的生成和变异,最终使得测试用例中的每个系统调用都能够深入到内核的深层逻辑。

本文介绍了一种新型内核模糊测试工具Healer,它通过动静态结合的关系学习算法,优化系统调用间的依赖理解,显著提升Linux内核的测试覆盖率和效率,尤其在漏洞检测方面表现出色。与Syzkaller和Moonshine相比,Healer在实验中显示出更强的漏洞发现能力。
最低0.47元/天 解锁文章
612

被折叠的 条评论
为什么被折叠?



