2023年4月8日~9日,由InForSec、南方科技大学斯发基斯可信自主系统研究院、清华大学网络科学与网络空间研究院、复旦大学软件学院系统软件与安全实验室、国科学院计算技术研究所处理器芯片全国重点实验室、中国科学院软件研究所可信计算与信息保障实验室、中国科学院大学国家计算机网络入侵防范中心、浙江大学NESA Lab、山东大学网络空间安全学院、百度安全、奇安信集团、蚂蚁集团、阿里安全等单位联合主办的“InForSec 2023年网络空间安全国际学术研究成果分享及青年学者论坛”在南方科技大学成功召开。来自清华大学、复旦大学、浙江大学、北京邮电大学、中国科学院大学等66所高校及科研院所的230余人现场出席会议,900余人通过视频会议系统及直播系统参与了本次论坛。

我们将对会议精彩报告进行内容回顾,本文分享的是华中科技大学副教授慕冬亮的报告——《辅助持续内核模糊测试的高效崩溃分类研究》。

慕冬亮老师首先向大家介绍了Linux Kernel的重要角色及其安全现状。Linux内核是全球使用最为广泛的主流操作系统内核。基于其构建的Linux系统是全球最重要的软件平台,它运行在异构多元化的计算环境之上,包括100%的超级计算机市场、82%的智能手机市场、68%的全球服务器操作系统、90%的大型计算机客户、90%的公有云工作负载、62%的嵌入式系统市场都在使用Linux。然而,现实是,linux内核通常是有漏洞的,从CVE统计信息中可看出,过去十年间,Linux内核平均每年有213个安全漏洞。即使如此,内核中很多漏洞都没有被记录在案,因为Linux内核维护人员并不怎么关心CVEs。同时,Linux内核权限级别更高,一旦被攻陷,将会造成非常严重的安全事件。

随后慕老师指出目前Linux内核漏洞发现与修复过程中存在的人工成本高这一现实问题。为了发现Linux内核中的安全漏洞,开源社区开发一些列模糊测试工具,如谷歌开发的Syzkaller,同时,为了能够持续性测试Linux内核,谷歌还开发了基于Syzkaller的持续性测试平台Syzbot。Syzbot通常每半天更新一次测试内核,并自动化向内核社区报告内核崩溃。截至目前为止,Syzbot共累积报告了4096个内核bug,修复了2969个内核bug。但是,这给软件开发人员带了巨大的工作负担,毕竟从漏洞报告到漏洞修复这中间需要大量分析工作,会消耗大量程序员的精力。

紧接着,慕老师引出了自己的研究内容,即高效的对产生的内核崩溃报告进行分析并分类,从而辅助程序员对内核漏洞进行修复。

接着慕老师展开介绍了自己围绕该目标所进行的两项研究工作,分别发表在网安顶NDSS 2022和S&P 2022上。

第一篇研究工作围绕如何消除重复崩溃报告这一目标展开。慕老师指出持续性测试大部分生成的漏洞报告都是重复的,是由相同的bug导致的崩溃。对其去重的启发式规则是利用报告中的信息进行聚类,例如报告题目中会包含崩溃类型和崩溃函数。

但是,慕老师指出如果聚类策略不准确,会对漏洞的验证效率和修复效率都会产生消极影响。

因此,慕老师认为对于漏洞报告重复性这一问题进行大规模的深入分析是十分必要的,慕老师旨在通过大规模分析回答如下几个关键问题:

慕老师介绍到,想要进行大规模分析,首先要解决的是数据集问题,如何收集一组真正重复的内核崩溃报告呢。慕老师的思路是,这些重复的崩溃报告都对应着相同的修复提交记录,通过这一特点,可以从修复提交记录出发,爬取分析的数据集。

之后慕老师介绍了他们的分析团队和分析流程,由5名专业的安全分析人员组成,在授权前提下进行了2400个人时的分析工作。

接着慕老师介绍了他们的主要分析结果:

(1)Bug报告重复是非常普遍的。47%的崩溃报告存在一个或多个重复。

(2)重复报告对bug分析和修复都引入了不小的开销。

(3)造成崩溃报告重复的主要因素有以下六种

最后,慕老师针对造成崩溃报告重复的主要因素提出了针对性的去重策略,并进行了实验测试,证明能够有效的进行报告去重。

第二篇工作则是围绕如何评估所报告的Bug的可利用潜力。慕老师首先指出针对Bug的可利用性评估是一件很重要但很有挑战的事情。

接着慕老师介绍了现有的针对Linux内核Bug的可利用性评估方案并指出了存在的问题。目前的可利用性评估方案主要是基于bug所显示的行为来决定的,例如UAF漏洞的可利用性一般是比较高的,而空指针异常的漏洞利用性则是比较低的,但是这种估计方案可能会忽略掉一些特征不明显的严重bug。

为了支持这一观点,慕老师介绍了一个他们发现的真实的案例,CVE-2021-3715,它在刚被报告时威胁评级很低,只是“警告”级别,也没有CVE编号,甚至很多下游的内核厂商并未对其进行专门修复。但是慕老师利用他们研发的工具重新评估并证实了这个漏洞的可利用性(可以被用于触发UAF漏洞),使得开发者重新认识了这个漏洞的严重性。

因此,慕老师认为一个漏洞可以具备多种不同的错误行为。

为了解决这个问题,慕老师提出了GREBE,一个对象驱动的内核模糊测试工具,基于Syzkaller实现。

随后,慕老师介绍了这个工具的设计全貌以及实验结果。

最后,慕老师对自己的这两项研究工作的内容进行了总结和分享。

演讲者简介

慕冬亮,男,华中科技大学副教授,武汉英才。他于2019年在南京大学计算机科学与技术系获得博士学位。博士期间,他在美国宾州州立大学信息科学与技术系邢新宇教授处交流访问。2020年8月回国加入到华中科技大学网络空间安全学院任职副教授。研究方向为软件与系统安全,致力于研究辅助去除基础软件系统(如操作系统内核)中存在的安全漏洞,在安全漏洞研究方面(如漏洞挖掘,漏洞重现,崩溃诊断,漏洞危害)有突出学术成果,并在国际安全会议(包含顶级会议 Oakland S&P, USENIX SEC, ACM CCS, NDSS)等发表论文十余篇高质量论文,其中包含ACM CCS 2018杰出论文奖。申请人主持并参与多项国家科研项目,包括科技部重大项目,国家自然科学基金项目。此外,申请人与国内知名安全企业开展长期技术合作,并积极促进科研成果落地。

声明:本文来自网安国际,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。