G.O.S.S.I.P 学术论文特别推荐 2022-04-09

admin 2022年4月9日14:43:50评论35 views字数 2478阅读8分15秒阅读模式

在三月的时候,我们为大家推荐了来自NDSS 2022上关于 Linux 内核崩溃去重的工作的论文An In-depth Analysis of Duplicated Linux Kernel Bug Reports,今天我们有幸邀请到这篇论文的第一作者,来自华中科技大学的慕冬亮老师来为大家仔细介绍这个有意思的工作。


G.O.S.S.I.P 学术论文特别推荐 2022-04-09


近三年来,持续性模糊测试平台 Syzbot 提交了大量的内核错误报告,但是在这些错误报告中有相当一部分是重复的或者说是由相同内核漏洞产生的。经本文作者研究发现,Syzbot 使用的启发式去重策略(根据崩溃类型加崩溃函数)常常是不准确的。也就是说,Syzbot将不同内核漏洞产生的错误报告分到同一组或将同一漏洞产生的错误报告分到不同组。在本文中,我们通过大规模经验性分析来理解 Syzbot 上的崩溃报告重复现象,并回答以下几个问题:

  1. Syzbot上的重复现象有多普遍?重复现象是否为漏洞分析和修复引入额外代价?

  2. 导致崩溃报告重复的主要原因是哪些?

  3. 如何有效地去重内核崩溃报告?


G.O.S.S.I.P 学术论文特别推荐 2022-04-09


为了开展研究,本文作者收集了自 2017 年 9 月到 2020 年 11 月期间 Syzbot 平台上已被修复的 2526 个漏洞(共包括 3,243,946 个崩溃报告)。这些崩溃报告中有 47.1% 的报告都是由相同的漏洞造成的。图 2 表明,虽然 60% 的漏洞分组只有两个崩溃报告,但是有 14% 的漏洞组里面有 5 个不同的 漏洞标题,这意味着同一个漏洞可能会造成很多种的崩溃行为。从图 3 中我们可以看出,重复错误报告的存在增加了漏洞的修复时间。而图 4 表明,由于没有对漏洞标题进行自动化的正确分组,有 80% 的 漏洞分组的关闭额外延迟在 50 天以内,5% 的 漏洞分组的关闭甚至延迟了200天。最后,图 5 则表明,有重复报告的 漏洞分组需要更多的安全人员进行维护和修复。


G.O.S.S.I.P 学术论文特别推荐 2022-04-09


为了理解导致重复崩溃报告的原因,作者从351组有重复的漏洞分组中抽样了120个进行手工分析。具体来说,作者组织安全分析人员按照上图 1 所示的流程进行分析。首先,搜集同一个漏洞分组中的所有崩溃报告。其次,根据崩溃报告中的配置文件编译 Linux 内核,并运行 PoC 程序重现该漏洞。再次,测试相应的补丁是否能修复漏洞,随后根据内核提交的信息和代码的修改分析该漏洞产生的根本原因。最后,找到导致内核崩溃的被破坏变量,比较被破坏变量从漏洞触发位置到内核崩溃位置的传播路径,并且确认重复崩溃报告是由什么因素造成的。


G.O.S.S.I.P 学术论文特别推荐 2022-04-09


通过对以上抽样的120 个漏洞分组的手工分析,我们总结了造成重复漏洞报告的 6 个原因:1. Different Inputs;2. Thread Interleaving;3. Memory Dynamics;4. Kernel Versions and Branches;5. Different Sanitizers;6. Inline Function 。表III中 展示了由不同因素造成的重复报告的占比,其中由 Different Inputs 造成重复报告的最多。

基于对重复报告的分析,作者提出五条策略来尝试消除重复报告。

第一,通过交换运行 PoC 程序确认该报告是否是重复的,以及排除 Kernel Versions and Branches 对报告重复的影响;

第二,在相对稳定的内存布局中运行 PoC 程序来排除 Memorry Dynamics 的影响;

第三, 在不同的线程交错情况下运行 PoC程序来排除 Thread Interleaving 对重复的影响;

第四,编译配置相同的内核并运行 PoC 程序来排除 Sanitizers 对重复的影响;

第五,也可以比较 PoC 程序/堆栈跟踪来排除PoC程序的差异/注入的内核代码对重复的影响。


G.O.S.S.I.P 学术论文特别推荐 2022-04-09


为了评估本文提出的方法,作者构建了一个测试数据集。该数据集包括两部分数据,一部分是之前收集到的有重复报告的真实数据集(包含327个崩溃报告),另一部分是随机选择的73 个非重复的崩溃报告。作者将这 400 个崩溃报告进行格式化生成最终的数据集(包含 717 个重复对和 79,083 个非重复对)。随后,本文利用上述去重策略评估之前提到的真实数据集,并根据ground-truth计算TP(True Positive)和 FP(False Positive)。从表 X 中可以看出误报 (FP) 的唯一来源是 “Input Difference” 。针对 “Different Sanitizers”、“Memory Dynamics” 和 “Inline Function” 的检测具有完美的真阳性率。“Input Difference” 和 “Thread Interleaving” 会有一些漏报。但是“Thread Interleaving” 并没有任何误报。

此外,作者还将本文的方法应用在开放漏洞报告数据集上,并发现了一些之前未知的重复崩溃报告。实验结果证实,本文的方法在识别未知的重复错误方面是有效果的。作者总共确定了 27 组重复的崩溃报告,这些分组涉及 66 个漏洞标题和 66,594 个崩溃报告。作者发现由“Inline Function”(影响 13 个错误组)和 “Input Difference” (影响 8 个错误组)造成的重复最多。其余的每个因素造成的重复组都不超过 7 个。


论文下载:

https://mudongliang.github.io/files/papers/NDSS_deduplication.pdf




投稿作者介绍:

慕冬亮 华中科技大学

华中科技大学网络空间安全学院,副教授。2020年12月毕业于南京大学,曾于2016年到2020年在美国宾州州立大学邢新宇教授处访问学习,研究方向为软件与系统安全,致力于研究辅助去除软件系统中存在的安全漏洞,在漏洞挖掘,漏洞重现,崩溃去重与分析,漏洞严重性评估等方面有突出成果,并将研究成果以论文形式多次发表在如 IEEE S&P,USENIX Security, CCS,NDSS 等国际安全顶级会议与期刊上。同时,还主持并参与多项国家自然科学基金,国家重点项目。

慕老师主页:https://mudongliang.github.io/


原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 学术论文特别推荐 2022-04-09

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月9日14:43:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   G.O.S.S.I.P 学术论文特别推荐 2022-04-09https://cn-sec.com/archives/898630.html

发表评论

匿名网友 填写信息