【论文速读】| ARVO: 开源软件可重现漏洞的全景图
本次分享论文:ARVO: Atlas of Reproducible Vulnerabilities for Open Source Software
基本信息
原文作者:Xiang Mei, Pulkit Singh Singaria, Jordi Del Castillo, Haoran Xi, Abdelouahab (Habs) Benchikh, Tiffany Bao, Ruoyu Wang, Yan Shoshitaishvili, Adam Doupé, Hammond Pearce, Brendan Dolan-Gavitt
作者单位:亚利桑那州立大学、纽约大学、新南威尔士大学
关键词:漏洞数据集、开源软件、漏洞修复、可重现性
原文链接:https://arxiv.org/pdf/2408.02153
开源代码:暂无
论文要点
论文简介:在当今软件安全领域,研究人员对高质量漏洞数据集的需求日益增加。现有的数据集往往规模有限、更新缓慢,且缺乏支持深入分析的元数据。为解决这些问题,本文提出了 ARVO,一个专为开源软件创建的可重现漏洞全景图。
ARVO 通过自动化手段从 Google 的 OSS-Fuzz 项目中收集和处理漏洞信息,构建了一个包含 5000 多个实际漏洞的数据集。每个漏洞都配有完整的触发输入、开发者修复补丁及可自动重建的项目版本。ARVO 不仅解决了手动更新耗时的问题,还提供了动态扩展的数据集基础,支持漏洞发现、故障定位、补丁生成和自动化修复等研究方向。
研究目的:本研究旨在开发一个能够自动生成、维护并持续更新的高质量漏洞数据集,解决当前数据集中规模小、更新耗时、元数据不足等问题。通过设计 ARVO 系统,本文为开源软件中的真实漏洞提供了一个大规模、可重现的数据集,能够精确定位修复提交记录,并自动重建受影响的软件版本,为漏洞发现、故障定位和自动化修复等研究领域提供可靠的数据支持,推动软件安全研究的发展。
研究贡献
1. 识别并解决了漏洞数据集在重现性方面的关键挑战。
2. 设计了一个名为 ARVO 的系统,能够自动识别并定位漏洞修复的具体提交记录。
3. 提供了一个包含超过 5000 个开源 C/C++项目漏洞的可重现、可重新编译且自动更新的数据集。
4. 将 ARVO 本身作为开源框架发布,供其他研究人员使用和扩展。
引言
随着软件系统的复杂性和广泛应用,软件漏洞的数量和严重性逐年增加。2023 年全球被跟踪的漏洞数量超过 28000 个,其中 4648 个被评为严重漏洞。研究这些漏洞的性质和修复方法对提升软件安全性至关重要。然而,现有的漏洞数据集主要用于告知用户已知漏洞,帮助系统维护者修补漏洞,而非支持学术研究。这些数据集通常缺乏详细的元数据,且难以重现,限制了其在研究中的应用价值。
为了填补这一空白,ARVO 从 Google 的 OSS-Fuzz 项目中提取漏洞,通过自动化工具实现对漏洞的重现和修复,并能够持续更新,为软件安全研究提供一个动态且可扩展的平台。
研究背景
本文主要阐述了在探讨 ARVO 之前,有必要了解现有的研究漏洞数据集及其技术的局限性。首先,介绍了模糊测试,特别是基于覆盖的灰盒模糊测试在查找软件漏洞方面的广泛应用。OSS-Fuzz 作为谷歌创建的开源项目,对 1000 多个开源项目进行持续模糊测试,截至 2023 年 8 月已助力发现并修复超过 10000 个漏洞。接着,论述了补丁定位问题。CVE 和 NVD 漏洞数据集并不将补丁作为必需项,且其准确性难以保证。一些自动化方法虽能将 CVE 漏洞映射到补丁,但由于仅专注于可提取分析的文本文档和代码信息,准确性同样无法保证。随后,介绍了 OSV 和 OSS-Fuzz。OSS-Fuzz 拥有主要基于文本的数据集,可用于构建漏洞数据集,但补丁验证存在 24 小时延迟,且数据常常不可靠不准确。例如,某提交被识别为补丁,实际却未改变源代码。最后提到,在第 4 节中将详细评估 OSS-Fuzz 的重现性,并讨论提高重现成功率的方法。
数据复现
ARVO 的重要贡献在于专注其数据集的可重现性,与以往工作不同,ARVO 可重放系统易受攻击版本和已修复版本的概念验证(PoC)以及重新编译软件各版本。判断研究漏洞数据集可重现性有两个标准:重现资源和重现流程。重现资源包括漏洞描述、相关组件源代码、重现环境、编译方法/脚本、易受攻击的二进制示例、触发漏洞的 PoC 输入及相应补丁。重现流程旨在轻松重现漏洞,关注其成功率和所需维护,因解决缺失资源的复杂性及对上游软件的有限控制而具有挑战。
ARVO
概括
ARVO(Atlas of Reproducible Vulnerabilities for Open Source Software)是一个专为开源软件漏洞研究设计的综合性系统,致力于创建一个大规模、可重现的漏洞数据集,并通过自动化手段解决生成、更新和验证中的挑战。
ARVO 的核心在于其高度的可重现性和自动化特性,确保每个收集的漏洞都可以在不同的版本中重新编译和运行。结合 Google 的 OSS-Fuzz 项目提供的大量漏洞数据,ARVO 成功重现了超过 5000 个漏洞,并为每个漏洞生成相应的 Docker 镜像,这些镜像方便研究人员重现实验,支持进一步的漏洞分析和修复。ARVO 的数据集还具有动态扩展的能力,随着新的漏洞被发现,自动添加到数据集中,形成不断更新和完善的资源库。
源数据
ARVO 的数据主要来源于 Google 的 OSS-Fuzz 项目,该项目对超过 1000 个开源软件项目进行持续的模糊测试,以检测和报告安全漏洞。OSS-Fuzz 能够自动捕捉和记录漏洞触发的输入、代码版本及修复补丁。
尽管 OSS-Fuzz 提供了丰富的漏洞数据,其原始数据仍然存在一定的局限性,如缺乏详细的编译和依赖信息,导致难以重现这些漏洞。ARVO 通过引入版本控制、构建环境和精确的依赖管理,弥补了这些不足,使得每个漏洞都能被精确重现,并提供所有必要的元数据。
此外,ARVO 还能自动从 OSS-Fuzz 的更新中提取新发现的漏洞,确保数据集始终保持最新状态。
再现
ARVO 的一个显著特点是其在重现漏洞方面的高成功率,这在现有研究工具中极为罕见。ARVO 通过精确的版本控制和依赖管理,确保每个漏洞可以在其发现时的环境中重现。ARVO 重现了 8934 个漏洞中的 5651 个,这一成就得益于严格的版本控制和自动化构建流程。通过解析和调整漏洞所依赖的库和工具版本,ARVO 解决了因依赖变动或资源丢失导致的构建失败问题。ARVO 还采用资源修复策略,通过自动定位和替换失效资源,成功重现了大量历史漏洞,极大地减轻了研究人员的负担。
定位修复器
ARVO 不仅重视漏洞的重现,还特别关注修复补丁的精确定位。OSS-Fuzz 通常只提供一个时间范围内的多个提交记录,难以确定具体的修复补丁。为解决这一问题,ARVO 引入了定位修复器,能够在提交历史中进行二分搜索,找到最早修复漏洞的提交。通过精确控制项目及其依赖版本,ARVO 在复杂的代码库中定位具体修复补丁,并验证其有效性。在其可重现的漏洞中,ARVO 成功识别了 5001 个修复补丁,准确率达 88.5%。这一工具为漏洞修复研究提供了精准的数据支持,帮助开发者更好地理解和提高修复质量。
数据库访问
为了最大限度提升 ARVO 数据集的可用性,ARVO 提供易于访问和使用的数据库接口。所有已重现的漏洞及其对应的修复补丁都通过 Docker 镜像形式发布在 Docker Hub 上。研究人员只需简单命令即可在支持 Docker 的环境中快速拉取并运行这些镜像,重现漏洞的触发和修复过程。这一设计大大降低了使用门槛,使即使没有安全背景的研究人员也能轻松使用 ARVO 数据集。此外,ARVO 的开源特性允许用户根据需求重新构建和扩展数据集,进一步提高了灵活性和实用性。通过这些特性,ARVO 不仅成为学术研究的强大工具,也为工业界的漏洞分析和修复提供了宝贵资源。
数据集
ARVO 的数据集是当前开源软件漏洞研究领域中规模最大、内容最丰富的可重现漏洞数据集之一。该数据集涵盖了 273 个不同的 C/C++项目,成功重现了 5651 个真实世界的漏洞,并精确定位了 5001 个修复补丁。ARVO 的数据集在规模和多样性上都远超以往的研究数据集,涵盖从图像处理到网络协议的广泛应用领域。
为了确保这些漏洞的重现性,ARVO 为每个漏洞生成独立的 Docker 镜像,研究人员可通过简单命令在任何环境中快速重现这些漏洞及其修复过程。此外,ARVO 的数据集具有自动更新能力,随着 OSS-Fuzz 的持续运行,新漏洞会自动添加到数据集中,形成不断扩展的资源库,为漏洞研究、故障定位和自动化修复提供强大数据支持。
案例研究
本文通过两个案例研究展示了 ARVO 的实际应用潜力。
第一个案例评估了大语言模型(LLMs)在漏洞修复中的表现,利用 ARVO 的数据集,研究人员系统地测试并验证了 GPT-3.5 和 GPT-4 在修复真实世界漏洞中的效果。结果显示,尽管 LLMs 能够生成部分有效修复代码,但在许多情况下未能解决根本问题,甚至可能破坏原有功能。
第二个案例揭示了 OSS-Fuzz 中 300 多个标记为修复但实际仍存在的零日漏洞。通过 ARVO 的重现能力,这些漏洞得以被发现,说明了 OSS-Fuzz 在漏洞修复验证中的问题,体现了 ARVO 在检测和揭示潜在安全威胁中的关键作用。这些案例研究表明,ARVO 不仅在学术研究中应用前景广阔,还能有效提升开源软件的安全性。
论文结论
本文引入的 ARVO 系统显著提升了漏洞数据集的重现性和自动化能力,为软件安全研究提供了强大工具。ARVO 成功构建了包含 5000 多个实际漏洞的高质量数据集,并通过精确版本控制和自动化修复定位,解决了传统数据集在规模和重现性方面的不足。ARVO 数据集能够持续更新,确保其长期适用性,为未来的漏洞发现、故障定位、自动化修复等研究提供可靠数据支持。
通过多个案例研究,ARVO 展示了其在揭示零日漏洞和评估自动化修复工具方面的独特优势。随着 ARVO 的不断扩展和优化,它将成为软件安全研究不可或缺的基础设施,为学术界和工业界的安全研究提供持续贡献。
原作者:论文解读智能体
校对:小椰风
评论