【论文速读】| ARVO: 开源软件可重现漏洞的全景图

news/2024/9/18 20:53:58/ 标签: 开源软件, 人工智能, 语言模型

图片

本次分享论文: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的不断扩展和优化,它将成为软件安全研究不可或缺的基础设施,为学术界和工业界的安全研究提供持续贡献。

原作者:论文解读智能体

校对:小椰风

图片


http://www.ppmy.cn/news/1518088.html

相关文章

js基础速成-条件语句

条件语句 条件语句用于根据不同的条件做出决策。 默认情况下,JavaScript 中的语句是从上到下顺序执行的。如果处理逻辑需要,可以通过两种方式改变执行的顺序: 条件执行:如果某个表达式为真,将执行一个或多个语句的代…

一起搭WPF之列表数据绑定

一起搭WPF之列表数据绑定 1 前言2 数据绑定2.1 前端2.2 后端实现2.2.1 界面后台2.2.2 模型与逻辑 3 问题3.2 解决 总结 1 前言 之前已经简单介绍了列表的大致设计,在设计完列表界面后,我们可以开展列表的数据绑定,在前端显示我们的数据&…

房产报备小程序房产报备系统源码搭建方案

房产客户报备小程序开发,php开发语言,前端是uniapp。 房产报备小程序三个端:报备端(经纪人报备客户),确客端(员工确认报备的客户),管理后台 一 报备端 经纪人报备客户…

特异性心肌细胞靶向肽(PCM);WLSEAGPVVTVRALRGTGSW;CAS:771479-86-8

【特异性心肌细胞靶向肽(PCM) 简介】 特异性心肌细胞靶向肽(PCM)是一种设计用于识别和结合心肌细胞特有的受体或分子标记的多肽序列。PCM可以通过其氨基酸序列的特定配置和表面特性实现对心肌细胞的选择性靶向,从而在心脏病治疗中递送药物、作…

Linux文件编程(进阶)

文章目录 Linux文件编程内核数据结构重定向dup2函数代码示例:将定义为输入重定向符号,将-定义为输出重定向符号 fcntl函数代码示例:使用O_APPEND标志位保证原子操作 I/O处理方式代码示例:阻塞I/O模型代码示例:非阻塞I/…

Nosql数据库redis集群配置详解

一、Redis的安装 环境介绍: 一主双从:10(redis-node1)主,20(redis-node2) 30(redis-node3)从——使用的是红帽9.1系统 源码安装redis [rootredis-node1 ~]# tar zxf red…

Ceruletide 雨蛙素;雨蛙肽;硫酸化蓝肽 简介

目录号 M9316 Ceruletide 雨蛙素;雨蛙肽;硫酸化蓝肽 Ceruletide (Caerulein) 是从澳大利亚青蛙皮肤中分离的生物活性十肽,是一种缩胆囊素受体 (cholecystokinin receptor) 激动剂。此外,Ceruletide还可用于构建小鼠急性胰腺炎模型…

强烈推荐!大模型辅助软件开发

图书推荐 作者介绍 很喜欢作者在书上的这句话了:是人类工程师的能力,而不是大模型的能力,决定了大模型协作式开发的上限。 本书内容 软件开发正在经历一场前所未有的范式变革。人工智能的飞速发展,特别是大型语言模型所取得的成…

tortoisegit突然停止工作

TortoiseGit突然停止工作可能由多种原因引起,以下是一些可能的原因及相应的解决方案: 可能原因及解决方案 Git进程冲突 描述:当TortoiseGit检测到有其他Git进程正在运行或之前崩溃未清理完全时,可能会出现冲突,导致T…

鸿蒙开发5.0【基于Swiper的页面布局】

场景一:Swiper页面支持自定义动画 方案: 给Swiper组件设置.nextMargin(50).prevMargin(50)属性。 给Swiper组件添加onChange事件,设置当前this.currentIndexindex,当currentIndex为首页或者尾页时,设置上一张以及下一…

黑马JavaWeb开发笔记10(前端完结)——Vue路由介绍入门、前端工程打包、nginx前端部署

文章目录 前言一、Vue路由1. 介绍2. 路由入门 二、打包部署1. 前端工程打包2. 部署前端工程2.1 nginx介绍2.2 部署 总结 前言 本篇文章是2023年最新黑马JavaWeb开发笔记10:Vue路由介绍&入门、前端工程打包、nginx前端部署的总结,帮助需要学习Web开发…

Python自动化测试requests库深度详解

前言 发送HTTP请求 import requests# 登录的接口地址url http://............/login# 登录的参数params {"mobile_phone": 18300000000,"pwd": 12345678}# 请求头headers {X-Lemonban-Media-Type: lemonban.v2}# 发送登录请求# 请求类型为 Content-Typ…

(二十)Flink Paimon

数据湖、湖仓一体是当前大数据领域技术发展的重要趋势。近几年开源数据湖技术如 Apache Hudi、Apache Iceberg、Apache Paimon、DeltaLake 等不断涌现,基于湖仓一体架构的统一元数据管理、数据治理也越来越受到关注。从传统数仓到数据湖、湖仓一体架构,从流批一体计算到基于数…

YOLOv9改进策略【损失函数篇】| 利用MPDIoU,加强边界框回归的准确性

一、背景 目标检测和实例分割中的关键问题: 现有的大多数边界框回归损失函数在不同的预测结果下可能具有相同的值,这降低了边界框回归的收敛速度和准确性。 现有损失函数的不足: 现有的基于 ℓ n \ell_n ℓn​范数的损失函数简单但对各种尺度…

python学习10-机器学习了解

AI(Artificial Intelligence)是最广泛的概念,是让机器拥有人和组织的能力,执行复杂的任务。下面分为机器人、语言处理、机器学习、深度学习等。机器学习是人工智能的一个子领域,它关注的是如何让计算机通过大量的数据自动学习和训练来对人的能…

git 项目可以拉取提交不了

记一次项目成员git提交异常 问题 Enumerating objects: 9, done. Counting objects: 100% (9/9), done. Delta compression using up to 8 threads Compressing objects: 100% (5/5), done. Writing objects: 100% (5/5), 418 bytes | 418.00 KiB/s, done. Total 5 (delta 4)…

Android APK打包脚本

build.gradle版本 同目录创建config.gradle文件写入需要的信息入 config.gradle文件内容 ext { /*** 自定义APP运行环境* dev: 开发* test: 测试* pro: 生产*/ env "pro" /*** 动态参数配置,根据自己需要添加参数* APP_ID: 包名* VERSION_CODE: 版本号…

实时数仓,站上产业潮头

在这场新的数据驱动战场里,谁能更好的对数据进行智能、准确、迅速、高性价比的体系化处理,谁能以更低的成本、更高效的能力构建底层的PaaS、IaaS组件,谁就能在如今的市场竞争中构建更具竞争力的业务模型,成为新的弄潮儿。 对Byt…

Incremental Text-to-Speech

ITTS(Incremental Text-to-Speech,增量式文本到语音)模型是一种在文本到语音(TTS)转换中逐步生成语音的技术。与传统的整句TTS系统不同,ITTS模型能够根据部分语境(即当前词汇以及前面已经观察到…

SSRF漏洞实现

ssrf简介: SSRF(Server-Side Request Forgery)攻击,即服务器端请求伪造攻击,是一种由攻击者构造请求,利用存在缺陷的Web应用作为代理,让服务端发起请求的安全漏洞。这种攻击方式允许攻击者绕过…