复旦大学系统软件与安全实验室在开源代码漏洞治理领域取得最新研究进展,在学术会议CCS 2023上发表论文NestFuzz: Enhancing Fuzzing with Comprehensive Understanding of Input Processing Logic。该研究为开源代码漏洞挖掘提供了新的工具和方法。
在当今数字化世界中,开源软件及其组成的供应链在各种应用和系统中扮演着至关重要的角色。根据Forrester Research研究,应用软件中80%~90%的代码来自开源组件,软件供应链的开源化趋势越来越明显。然而,开源代码作为开源软件基石,因具有广泛的可访问性和可利用性而使得其安全性成为了软件供应链安全领域的焦点。Gartner预测到2025年全球45%的企业机构将遭遇软件供应链攻击,相比2021年增加了3倍,因此提升开源代码安全性已刻不容缓。
开源代码安全性的关键问题之一是对深层代码漏洞的治理,这些漏洞易被攻击者滥用,但又难以被检测到,究其原因是缺乏对深层代码漏洞有效的输入构造能力。传统的模糊测试工具在处理具有一定结构的用户输入数据时效果不佳,生成的结果大多无法满足程序的格式要求。针对上述痛点,本研究提出了一个以模糊测试为基础的开源代码漏洞挖掘工具——NestFuzz。该工具配备先进的输入结构感知能力,能够有效处理复杂结构的输入,从而提高模糊测试的生成质量,最终挖掘出更多潜藏在深层开源代码中的漏洞。
本研究通过分析和模拟目标程序的输入处理逻辑,以深入了解其输入格式知识。除了识别输入原始数据中的单个字段,本文还能够通过对输入处理逻辑进行建模,捕捉输入结构的两个关键特征:字段之间的依赖关系和子结构之间的层次依赖关系。在学习到的输入结构知识的驱动下,本文提出了一种有效的级联依赖感知的变异策略,能够在结构层面变异输入,生成具有复杂结构且合法的输入,以发现隐藏在程序深处的漏洞。本文将NestFuzz同7个先进的模糊测试工具,在20个开源代码库上进行了充分的实验对比。在实验中,NestFuzz发现了47个零天漏洞,目前已被授予37个CVE编号,其中包括两个高危漏洞,这些CVE均源自于广泛使用的开源代码库,例如在处理二进制文件、构建软件以及确保系统安全性方面不可或缺的关键工具集Binutils。此外,NestFuzz在代码覆盖率方面表现出显著的改进,相对于现有研究工作,提升范围达到了27%至154%。另外,NestFuzz还展现出卓越的漏洞发现能力,其发现的漏洞数量相对于已有工作平均提升了107.95%至578.57%。
欢迎大家阅读论文原文(点击“阅读原文”即可查看):
https://secsys.fudan.edu.cn/fc/27/c26976a523303/page.htm,同时NestFuzz的源码将在https://github.com/fdu-sec/NestFuzz进行开源。
供稿:王新杰
审稿:张琬琪、洪赓
排版:王新杰
复旦白泽战队
一个有情怀的安全团队
还没有关注复旦白泽战队?
公众号、知乎、微博搜索:复旦白泽战队也能找到我们哦~