演讲嘉宾 | 梁洪亮
回顾整理 | 廖 涛
排版校对 | 宋夕明
嘉宾介绍
OS安全分论坛
梁洪亮,博士,北京邮电大学副教授,博士生导师。研究兴趣为可信软件与智能系统。
视频回顾
打开哔哩哔哩APP,观看更清晰视频
正文内容
软件缺陷是影响软件质量的关键因素,软件缺陷分析能够帮助开发和测试团队及时识别和分析软件中的缺陷问题,从而制定相应的解决方案,并持续改进软件质量和可靠性。目前有哪些高效可靠的软件缺陷分析方法呢?北京邮电大学梁洪亮老师在第二届OpenHarmony技术大会上进行了精彩分享。
相较于黑盒/白盒测试而言,模糊测试(Fuzzing)具有可完全自动化、高效率、无误报等优势,已经成为当前最热门的软件缺陷分析方法之一。通过变异给定的一组种子输入,模糊测试可以生成大量随机的或意料之外的测试用例,以触发被测软件中的崩溃、断言失败或内存泄漏等异常。截止2023年8月,谷歌开放的开源模糊测试框架OSS-Fuzz已帮助1000个项目识别并修复了10000多个漏洞和36000个缺陷。
定向模糊测试是指给定一组测试目标(例如代码位置),关注于朝向这些测试目标进行搜索,可用于补丁测试、崩溃复现、静态分析报告验证等场景。尽管现实软件中通常存在多个缺陷或漏洞,但是已有模糊测试方法和工具难以处理多个目标。例如,传统模糊测试工具的粗粒度能量调度方案导致测试的覆盖率不全面且执行效率较低;导向模糊测试工具在探索阶段和利用阶段也存在效率和质量的平衡难题。
针对上述问题,梁老师团队提出并实现了序列引导的多目标混合模糊测试方案“LeoFuzz”。LeoFuzz的核心思想为:
在静态分析阶段,给定被测程序和目标集合,LeoFuzz首先生成目标序列,并对待测程序进行插桩编译,生成可执行程序。
在模糊测试阶段,如果模糊器(Fuzzer)生成的种子输入使得被测程序崩溃,则存储到崩溃队列中;如果增加了目标序列覆盖率,则存储到导向队列中;如果增加了代码覆盖率,则存储到覆盖队列中,否则丢弃。
模糊器和混合执行器独立执行被测程序,并通过共享覆盖种子队列和导向种子队列相互帮助。
LeoFuzz创新提出了动态协调探索-利用两阶段策略。在最初的探索阶段,当覆盖种子数量在总种子中的比率大于某个阈值时,意味着模糊器具有足够的代码覆盖信息,那么应切换到利用阶段。当利用阶段未生成导向种子的连续执行次数超过某个阈值时,表明当前模糊器的利用能力不足,那么应切换到探索阶段。
同时,LeoFuzz也提出了新的能量调度策略,重点考虑了种子和目标之间的多种关系:目标序列TSi的优先级priority、目标序列TSi的全局最大覆盖率gMaxCov、种子在目标序列 (TSi) 上的序列覆盖率seqCov。用一个综合因子(CF)来表示它们的关系。CF的表达式如下:
在基于7个开源软件(例如objdump,readelf,cxxfilt等)的31个漏洞的实验评估中,LeoFuzz对单个目标的测试表现优于Beacon、QSYM、AFLGo、Lolly和Berry等基线工具;对多个目标的测试表现也优于QSYM、AFLGo、Lolly、Berry和WindRanger等基线工具。
通过创新的技术手段,LeoFuzz大幅提升了软件系统缺陷的发现效率和准确率,为开源社区软件安全分析提供了一种高效的解决思路。未来,希望更多的创新技术能够使能OpenHarmony,为OpenHarmony技术生态助力。
E N D
关注我们,获取更多精彩。
审核编辑 黄宇
-
软件
+关注
关注
69文章
4730浏览量
87107 -
软件缺陷
+关注
关注
0文章
6浏览量
7190
发布评论请先 登录
相关推荐
评论