D2A
收藏arXiv2021-02-16 更新2024-06-21 收录
下载链接:
https://github.com/ibm/D2A
下载链接
链接失效反馈官方服务:
资源简介:
D2A数据集由IBM研究院创建,旨在通过基于差分分析的方法来标记静态分析工具报告的问题,从而支持基于AI的漏洞检测方法。该数据集通过分析多个开源项目的版本对,识别并标记出由提交修复的真正漏洞,以及未被修复的潜在误报,以此来训练模型以减少静态分析中的误报,并帮助开发者优先处理可能的真实漏洞。
The D2A dataset was developed by IBM Research, aiming to label issues reported by static analysis tools using differential analysis-based methods, so as to support AI-powered vulnerability detection approaches. This dataset analyzes version pairs of multiple open-source projects, identifies and labels true vulnerabilities fixed via code commits, as well as potential false positives that remain unpatched, to train models for reducing false positives in static analysis and help developers prioritize genuine vulnerabilities.
提供机构:
IBM Research
创建时间:
2021-02-16
搜集汇总
数据集介绍

构建方式
D2A数据集的构建方式基于差异分析,旨在为基于AI的漏洞检测方法提供训练数据。首先,通过分析多个开源项目的版本对,选择修复bug的提交,并在这些提交前后对版本进行静态分析。如果在提交前的版本中检测到的问题在提交后的版本中消失,那么这些问题很可能是由提交修复的真实bug。通过对大量连续版本对的聚合分析,可以生成一个大规模的有标签数据集,用于训练漏洞识别模型。
特点
D2A数据集的特点在于其基于差异分析的自标定机制,能够有效地识别静态分析工具报告的问题中哪些更可能是真实bug,哪些更可能是误报。此外,D2A数据集提供了详细的bug相关信息,包括bug类型、位置、跟踪以及与原始代码库/提交的链接等,这些信息对于训练AI模型理解和检测漏洞至关重要。
使用方法
D2A数据集的使用方法主要涉及训练漏洞检测模型和静态分析误报减少模型。通过使用D2A数据集,可以训练一个分类器来识别静态分析报告的问题中可能的真实bug,从而帮助开发者优先处理和调查潜在的真正正例。此外,还可以使用D2A数据集训练一个静态分析误报减少模型,以有效降低误报率,帮助开发者优先处理和调查潜在的真实bug。
背景与挑战
背景概述
在现代软件程序中,由于复杂性及规模的不断扩大,编程错误和安全性漏洞往往被忽视。静态分析工具因其能够理解复杂行为和数百万行代码的程序而得到广泛应用。尽管静态分析工具非常流行,但它们通常会产生过多的误报。最近,机器学习模型理解编程语言的能力为静态分析带来了新的可能性。然而,现有的用于漏洞识别的模型训练数据集存在多方面的局限性,例如漏洞上下文有限、数据集规模有限以及源代码的合成和不符合现实情况。针对这些挑战,IBM Research的研究人员提出了D2A数据集,该数据集通过分析多个开源项目的版本对来构建,旨在为漏洞识别提供更高质量和更具代表性的数据。D2A数据集的创建时间为2021年2月,主要研究人员包括Yunhui Zheng、Saurabh Pujar等人。该数据集的核心研究问题是提高静态分析工具的准确性和效率,减少误报,从而帮助开发人员优先处理潜在的真实漏洞。D2A数据集的创建为相关领域的研究提供了重要的数据基础,有助于推动基于人工智能的漏洞检测方法的进一步发展。
当前挑战
D2A数据集主要面临的挑战包括:1) 静态分析工具的误报问题,即如何有效地区分真实漏洞和误报,减少开发人员的工作量;2) 数据集构建过程中的挑战,如如何选择合适的开源项目、如何处理版本之间的差异以及如何确保数据集的准确性和代表性等。为了解决这些挑战,D2A数据集采用了基于差异分析的自动标记方法,通过分析版本对来识别和标记真实漏洞。此外,D2A数据集还通过并行化处理和大规模分析,提高了数据集的构建效率和质量。尽管D2A数据集在解决上述挑战方面取得了显著成果,但在实际应用中,仍然需要进一步研究和优化,以进一步提高数据集的准确性和实用性。
常用场景
经典使用场景
D2A数据集主要用于基于机器学习的漏洞检测方法。该数据集通过分析多个开源项目的版本对,从每个项目中选取修复bug的提交,并在这些提交前后版本的代码上运行静态分析。如果一个在提交前版本中检测到的问题在提交后版本中消失了,那么这个问题很可能是一个真实的bug,并由提交修复。通过这种方法,D2A数据集生成大量的带标签数据集,用于训练漏洞检测模型。此外,D2A数据集还可以用于构建分类器,以识别静态分析报告中的潜在误报,从而帮助开发人员优先调查潜在的真正阳性问题。
解决学术问题
D2A数据集解决了现有漏洞检测数据集的几个常见问题。首先,现有的数据集大多是在函数级别上,没有提供解释bug如何发生的上下文信息(例如,跟踪)。其次,一些数据集(例如CGD [13])是从NVD [19]或CVE [20]中的确认bug中派生出来的。虽然它们具有高质量的标签,但样本数量有限,可能不足以用于模型训练。第三,一些合成数据集(例如Juliet [21]和S-babi[14])可以很大,但它们是根据几个预定义的模式生成的,因此不能代表现实世界程序中观察到的多样化行为。最后,还有一些基于提交消息或代码差异的标记工作。基于提交消息预测代码标签的方法已知会产生低质量的标签。基于代码差异的方法[15]假设bug修复提交中的所有函数都是有bug的,这在现实中可能并不总是如此。更重要的是,这些方法难以识别bug类型、位置和跟踪。另一方面,静态分析可以超越函数边界进行推理。它是自动化的,并且能够从野外的程序中生成大型数据集。因此,D2A数据集为漏洞检测任务提供了大量真实世界的数据集,并编码了超出函数边界的上下文信息。
衍生相关工作
D2A数据集的衍生相关工作主要集中在以下几个方面:首先,D2A数据集可以用于研究基于机器学习的漏洞检测方法,以提高漏洞检测的准确性和效率。其次,D2A数据集可以用于研究基于代码的上下文信息(例如,跟踪)的代码理解方法,以提高代码理解的准确性和深度。第三,D2A数据集可以用于研究基于代码差异的代码生成和代码补全方法,以提高代码生成和代码补全的准确性和效率。此外,D2A数据集还可以用于研究基于静态分析的代码质量评估方法,以提高代码质量的准确性和可靠性。
以上内容由遇见数据集搜集并总结生成



