【论文速读】| MOCK:上下文依赖引导的内核模糊测试
本次分享论文为:MOCK: Optimizing Kernel Fuzzing Mutation with Context-aware Dependency
基本信息
原文作者:Jiacheng Xu,Xuhong Zhang,Shouling Ji,Yuan Tian,Binbin Zhao, Qinying Wang,Peng Cheng,Jiming Chen
作者单位:浙江大学、加州大学洛杉矶分校、佐治亚理工学院
关键词:内核模糊测试、变异、上下文相关依赖
原文链接:
https://dx.doi.org/10.14722/ndss.2024.23131
开源代码:
https://github.com/m0ck1ng/mock
论文要点
论文简介:本文介绍了一种创新的内核模糊测试框架——MOCK。通过学习历史系统调用序列的上下文依赖并生成基于上下文的系统调用序列来优化变异过程,MOCK 显著提高了分支覆盖率、输入质量和漏洞发现能力。
研究背景:内核是现代操作系统的核心,其复杂性常导致安全漏洞。传统模糊测试方法在处理系统调用序列时,缺乏对后续依赖的考量,使得它们难以有效触发深层代码和漏洞。
研究贡献:
1.提出了一种系统调用间依赖的上下文捕获建模方法,能够准确地捕获系统调用之间的依赖关系。
2.开发了 MOCK 框架,该框架融合了拓扑的模型指导依赖学习算法、上下文加载的系统调用序列变异语言算法和自适应任务调度策略,从而优化了内核模糊测试的效率。
3.通过在最新 Linux 内核上的评估,验证了 MOCK 的有效性,成功发现了 15 个独特的漏洞,包括两个 CVE。
引言
内核安全对计算机系统的整体安全至关重要。MOCK 通过学习和应用系统调用序列的下游依赖,有效提升了模糊测试(Fuzzing)的效率和成果,尤其是在生成能触发核心代码路径的系统调用序列方面表现出显著优势。
背景知识
本文介绍了内核模糊测试的基础知识、面临的挑战以及现有方法的限制,特别指出了现有方法在处理系统调用链路的下游依赖方面的不足。MOCK 旨在通过下游的依赖分析来优化这一个过程。
论文方法
理论背景:通过将系统调用建模为条件概率,MOCK 能够准确地捕获系统调用间的依赖关系。
方法实现:MOCK 集成了自定义的模型指导依赖学习算法、上下文加载的系统调用序列变量语言算法和自适应任务调度策略,以优化内核模糊测试过程。
实验
实验设置:在最新版本的 Linux 内核上评估了 MOCK 的性能,并与当前先进的 Fuzzer(如 Syzkaller 和 HEALER)进行了比较。
实验结果:MOCK 在分支覆盖率、输入质量和独特漏洞发现数量上均超过了对比的 Fuzzers,特别是在发现需要长序列交叉的复杂漏洞方面显示出实验优势。
论文结论
通过 MOCK 通过上下文采集的系统调用依赖分析和优化,显著提高了内核 Fuzzing 的效率和成果。尤其在提高分支覆盖率、生成高质量输入和发现新漏洞方面表现出色,对未来的内核安全研究具有重要意义。
原作者:论文解读智能体
润色:Fancy
校对:小椰风
评论