当前位置: 首页 > news >正文

C/C++漏洞检测数据集汇总

漏洞检测这个方向最近几年尤为热门,尤其是与深度学习技术相结合的研究,同时一些公开可用的数据集的出现也进一步推动了这些技术的发展。本篇文章总结归纳了目前在 C/C++ 源代码漏洞检测方向的一些公开数据集以及相关文献。

1 Devign (FFmpeg+Qemu)

简介:Zhou 等人[1] 从 4 个大型 C 语言开源项目(包括 Linux Kernel、Qemu、Wireshark 和 FFmpeg)中收集并人工标注函数,构成了该数据集,它包含 12460 个存在漏洞的函数和 14858 个不存在漏洞的函数,属于一个较为平衡的数据集。

  1. 数据集链接:function.json - Google 云端硬盘
  2. 标注级别:函数级
  3. 类别:真实项目数据集
  4. 数据文件:function.json
  5. 项目地址:原作者没有开源项目,这里列出第三方复现代码:GitHub - epicosy/devign: Effective Vulnerability Identification by Learning Comprehensive Program Semantics via Graph Neural Networks

2 Reveal (Chrome + Debian)

简介:Saikat 等人[2] 从 Chromium 和 Debian 项目的开发者/用户报告的漏洞中整理出一个真实世界数据集,它包含 2240 个存在漏洞的函数和 20494 个不存在漏洞的函数,更接近于漏洞代码在真实世界中的分布情况。

  1. 数据集链接:Chromium_And_Debian_Vulnerability_Data - Google 云端硬盘
  2. 标注级别:函数级
  3. 类别:真实项目数据集
  4. 数据文件:vulnerables.json(漏洞样本)和 non-vulnerables.json(非漏洞样本)
  5. 项目地址:GitHub - VulDetProject/ReVeal

3 BigVul

简介:Fan 等人[3] 从 348 个开源 Github 项目中收集,包括从 2002 年到 2019 年的 91 个不同的 CWE,188636 个 C/C++ 函数。其中漏洞函数比例为 5.7%(即 10,900 个漏洞函数),以及 5,060,449 个 LOC,漏洞行比例为 0.88%(即 44,603 条漏洞行)。在这 10,900 个易受攻击的功能中,易受攻击线路的比率从 2.5%(第一四分位数)到 20%(第三四分位数)不等,中位数为 7%。

  1. 数据集链接:MSR_20_Code_vulnerability_CSV_Dataset/all_c_cpp_release2.0.csv at master · ZeoVan/MSR_20_Code_vulnerability_CSV_Dataset · GitHub
  2. 标注级别:行号级
  3. 类别:真实项目数据集
  4. 数据格式:all_c_cpp_release2.0.csv
  5. 项目地址:GitHub - ZeoVan/MSR_20_Code_vulnerability_CSV_Dataset: A C/C++ Code Vulnerability Dataset with Code Changes and CVE Summaries

4 SARD+NVD

简介:Li 等人[4] 从国家漏洞数据库 (NVD) 和软件保障参考数据集 (SARD)中收集了 15150 个程序,包括 2821 个真实世界程序和 12329 个人工合成程序。从 NVD 中收集到的程序附有差异(diff)文件,以程序在修补相关漏洞前后的差异代码的位置作为漏洞行号标签;从 SARD 收集到的程序附有标签,标明这些程序是否存在漏洞。该数据集过滤了代码长度少于 500 行的程序,因为这些程序过于简单,对于真实漏洞检测任务不太适用。

  1. 数据集链接:VulDeeLocator/data/programs at master · VulDeeLocator/VulDeeLocator · GitHub
  2. 标注:函数级和行号级
  3. 类别:人工合成,真实项目数据集
  4. 数据格式:.C / .CPP 源文件
  5. 项目地址:GitHub - VulDeeLocator/VulDeeLocator

5 Juliet C/C++ 1.3.1

简介:一个由美国国家标准与技术研究院(NIST)创建的脆弱数据集,该数据集共包含 64099 个源程序测试用例,这些测试用例覆盖了 118 个不同的 CWE 漏洞类型。

  1. 数据集链接:Juliet C/C++ 1.3.1 with extra support - NIST Software Assurance Reference Dataset
  2. 标注:行号级别
  3. 类别:人工合成数据集
  4. 数据格式:.C / .CPP 源文件
  5. 项目地址:无

6 D2A

简介:Zheng 等人[5] 基于差异分析的方法,用于标记静态分析工具报告的问题。D2A 数据集是通过分析来自多个开源项目的版本对来构建的。从每个项目中,选择错误修复提交,并对此类提交之前和之后的版本运行静态分析。如果在 before-commit 版本中检测到的一些问题在相应的 after-commit 版本中消失,那么它们被视为提交修复的真实 bug。

  1. 数据集链接:D2A - Differential Analysis Dataset - IBM Developer
  2. 标注:函数级
  3. 类别:真实项目数据集
  4. 数据格式:.pickle / .json
  5. 项目地址:GitHub - IBM/D2A: This repository is to support contributions for tools and new data entries for the D2A dataset hosted in DAX

7 DBGBENCH

简介:DbgBench[6] 由一组现实世界中存在错误的 C 程序组成,专业软件工程师对这些程序进行了分析和修复。该数据集由 12 位专业软件工程师,一起花了一个月的时间来定位、解释和修复这些错误。并且该数据集可以准确确定开发人员将哪些陈述定位为错误,开发人员如何诊断和解释错误,以及开发人员如何修复错误。

  1. 数据集链接:Summary | DBGBench
  2. 项目地址:GitHub - dbgbench/dbgbench.github.io: DBGBench Website:

8 CodeXGLUE

简介:微软构建的代码智能基准数据集[7],包括一组代码智能任务和一个用于模型评估和比较的平台。CodeXGLUE 代表 code 的一般语言理解评估基准,其中包括 14 个数据集,用于 10 个多样化的代码智能任务,涵盖以下场景:

  1. 代码-代码(克隆检测、缺陷检测、完形填空测试、代码完成、代码修复和代码到代码转换);
  2. 文本-代码(自然语言代码搜索、文本到代码生成)
  3. 代码-文本(代码摘要)
  4. 文本-文本(文档翻译)
  1.  数据集链接:Hugging Face – The AI community building the future.
  2. 项目地址:GitHub - microsoft/CodeXGLUE: CodeXGLUE

9 参考

  • [1] Zhou Y, Liu S, Siow J, et al. Devign: Effective vulnerability identification by learning comprehensive program semantics via graph neural networks[J]. Advances in neural information processing systems, 2019, 32.
  • [2] Chakraborty S, Krishna R, Ding Y, et al. Deep learning based vulnerability detection: Are we there yet?[J]. IEEE Transactions on Software Engineering, 2021, 48(9): 3280-3296.
  • [3] Fan J, Li Y, Wang S, et al. AC/C++ code vulnerability dataset with code changes and CVE summaries[C]//Proceedings of the 17th International Conference on Mining Software Repositories. 2020: 508-512.
  • [4] Li Z, Zou D, Xu S, et al. Vuldeelocator: a deep learning-based fine-grained vulnerability detector[J]. IEEE Transactions on Dependable and Secure Computing, 2021, 19(4): 2821-2837.
  • [5] Zheng Y, Pujar S, Lewis B, et al. D2a: A dataset built for ai-based vulnerability detection methods using differential analysis[C]//2021 IEEE/ACM 43rd International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP). IEEE, 2021: 111-120.
  • [6] Böhme M, Soremekun E O, Chattopadhyay S, et al. Where is the bug and how is it fixed? an experiment with practitioners[C]//Proceedings of the 2017 11th joint meeting on foundations of software engineering. 2017: 117-128.
  • [7] Lu S, Guo D, Ren S, et al. Codexglue: A machine learning benchmark dataset for code understanding and generation[J]. arXiv preprint arXiv:2102.04664, 2021.

相关文章:

C/C++漏洞检测数据集汇总

漏洞检测这个方向最近几年尤为热门,尤其是与深度学习技术相结合的研究,同时一些公开可用的数据集的出现也进一步推动了这些技术的发展。本篇文章总结归纳了目前在 C/C 源代码漏洞检测方向的一些公开数据集以及相关文献。 1 Devign (FFmpegQemu) 简介&am…...

springboot后端开发-常见注解及其用途

文章目录 1. 组件注解2. 依赖注入注解3. 配置类注解4. 测试注解5. 控制器注解6. 安全和认证注解7. 切面相关注解8. API文档相关注解(需引入swagger)9. 其他注解 在Spring Boot框架中,有许多常用的注解用来简化开发过程中的依赖注入、组件扫描、配置、安全控制等方面…...

TypeScript 扩展

扩展 ?:可选参数 可选链事实上并不是TypeScript独有的特性,它是ES11(ES2020)中增加的特性 可选链使用可选链操作符 ? 作用是当对象的属性不存在时,会短路,直接返回undefined,如果存在,那么…...

按键学院往期视频

按键学院第五期 网游实战系列课程 按键学院第四期 网游实战系列课程01-回合制网游的特点:测试游戏后台按键图色 网游实战系列课程02-神武新手任务的识别与处理:字库识别任务 网游实战系列课程03-神武自动组队与攻击 网游实战系列课程04-神武自动逛地图与攻击 网游实战系列课程0…...

通信工程学习:什么是MRF多媒体资源功能、MRFC多媒体资源功能控制、MRFP多媒体资源功能处理

一、MRF多媒体资源功能 MRF(Multimedia Resource Function,多媒体资源功能)是3G/IMS网络中定义的提供多媒体资源功能的网络实体,它为3G/IMS网络的业务和承载提供媒体能力支持。MRF通过提供丰富的媒体处理功能,如播放声…...

【Windows】获取进程缓解策略设置情况

目录 一、前言 二、主要概念 三、实现步骤 四、总结 原文出处链接:[https://blog.csdn.net/qq_59075481/article/details/142234952] 一、前言 在现代操作系统中,进程缓解策略(Process Mitigation Policy)提供了一种防御机制…...

语音识别相关概念

声音如何保存成数字信号? 声音是听觉对声波产生的感知,而声波是一种在时间和振幅上连续的模拟量,本质是介质的振动,,比如空气的振动。那么只需要把这个振动信号记录下来,并用一串数字来表达振动信号振动的…...

Iceberg与SparkSQL查询操作整合

前言 spark操作iceberg之前先要配置spark catalogs,详情参考Iceberg与Spark整合环境配置。 Iceberg使用Apache Spark的DataSourceV2 API来实现数据源和catalog。 使用SQL查询 查询的时候表要按照:catalog.数据库.表名的格式 SELECT * FROM prod.db.table; -- catalog: p…...

Linux 上安装 PostgreSQL

Linux 上安装 PostgreSQL PostgreSQL 是一款功能强大的开源关系数据库管理系统,因其稳定性、可扩展性和先进的功能而广受欢迎。在 Linux 系统上安装 PostgreSQL 是一个相对直接的过程,但具体步骤可能会因您使用的 Linux 发行版而异。本文将介绍在几种流行的 Linux 发行版上安…...

WRF-LES与PALM微尺度气象大涡模拟、PALM静态数据预备、PALM驱动数据预报、PALM模拟

查看原文>>>WRF-LES与PALM微尺度气象大涡模拟及ChatGPT在大气科学领域应用 针对微尺度气象的复杂性,大涡模拟(LES)提供了一种无可比拟的解决方案。微尺度气象学涉及对小范围内的大气过程进行精确模拟,这些过程往往与天气…...

需求分析概述

为什么要进行需求分析呢? 笑话:富翁娶妻 某富翁想要娶老婆,有三个人选,富翁给了三个女孩各一千元,请 她们把房间装满。第一个女孩买了很多棉花,装满房间的1/2。第 二个女孩买了很多气球,装满…...

Java | Leetcode Java题解之第391题完美矩形

题目&#xff1a; 题解&#xff1a; class Solution {public boolean isRectangleCover(int[][] rectangles) {long area 0;int minX rectangles[0][0], minY rectangles[0][1], maxX rectangles[0][2], maxY rectangles[0][3];Map<Point, Integer> cnt new HashM…...

java项目之基于web的人力资源管理系统的设计与实现(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的基于web的人力资源管理系统的设计与实现。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; …...

Linux 防火墙:iptables (二)

文章目录 SNAT 原理与应用SNAT 应用环境SNAT 原理SNAT 转换前提条件SNAT 格式SNAT 转换规则配置 DNAT 原理与应用DNAT 应用环境DNAT 原理DNAT 转换前提条件DNAT 格式DNAT 转换规则配置 iptables 规则的备份和还原导出&#xff08;备份&#xff09;所有表的规则导入&#xff08;…...

小目标检测顶会新思路!最新成果刷爆遥感SOTA,参数小了18倍

遥感领域的小目标检测一直是个具有挑战性和趣味性的研究方向&#xff0c;同时也是顶会顶刊的常客。但不得不说&#xff0c;今年关于遥感小目标检测的研究热情尤其高涨&#xff0c;已经出现了很多非常优秀的成果。 比如SuperYOLO方法&#xff0c;通过融合多模态数据并执行高分辨…...

【Ubuntu】虚拟机安装USB摄像头ROS驱动 usb_cam(最新方法)

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…...

免费的成绩查询微信小程序,让家长轻松掌握学生表现

传统的教学方式在不断地被革新。在成绩查询这一环节&#xff0c;老师们曾经面临着繁琐的手工操作和信息安全的风险。可现如今有一个让成绩查询变得轻松、高效且安全的新工具——易查分。 过去需要花费大量时间来整理成绩&#xff0c;然后通过短信或者打电话的方式告知给家长。以…...

[含视频和源码]CRUD的最佳实践,联动前后端,包含微信小程序,API,HTML等(三)

关说不练假把式&#xff0c;在上一&#xff0c;二篇中介绍了我心目中的CRUD的样子 基于之前的理念&#xff0c;我开发了一个命名为PasteTemplate的项目&#xff0c;这个项目呢后续会转化成项目模板&#xff0c;转化成项目模板后&#xff0c;后续需要开发新的项目就可以基于这…...

如何把我另一个分支上的commit拿过来

在开源过程中&#xff0c;每一次PR都是要经过严格的review的&#xff0c;这期间可能会进行多次修改&#xff0c;补充提交&#xff0c;而且这一般来说不是一个很迅速的过程&#xff0c;此时我们可能会先往后进行开发。我一般会把项目分模块逐步建立分支&#xff0c;当前一个pr合…...

【rpg像素角色】俯视角-行走动画

制作像素角色的俯视角行走动画并不像看上去那么复杂&#xff0c;尤其是在你已经完成了角色的4个方向站立姿势之后&#xff08;其中左右方向可以通过水平翻转实现&#xff09;。接下来&#xff0c;我会一步步为你讲解如何制作行走动画。 1. 理解行走规律 在制作行走动画之前&am…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...