论文学习_An Empirical Study of Deep Learning Models for Vulnerability Detection

news2024/9/21 2:49:53

1. 引言

研究背景:近年来,深度学习漏洞检测工具取得了可喜的成果。最先进的模型报告了 0.9 的 F1 分数,并且优于静态分析器。结果令人兴奋,因为深度学习可能会给软件保障带来革命性的变化。因此,IBM、谷歌和亚马逊等行业公司非常感兴趣,并投入巨资开发此类工具和数据集。

现存问题:尽管深度学习漏洞检测在前景上很有潜力,但目前尚未达到计算机视觉和自然语言处理的水平。目前大部分研究重点是尝试新兴的深度学习模型,并将其应用于类似 Devign 或 MSR 数据集的数据集。然而,对于模型本身,我们了解甚少,例如,模型能否有效处理哪种类型的程序,我们是否应为每种漏洞类型建立模型,或者应该为所有漏洞类型构建一个统一模型,好的训练数据集是什么样的,以及模型在做出决策时使用了哪些信息。了解这些问题的答案可以帮助我们更好地开发、调试和应用模型。然而,考虑到深度学习的黑盒特性,这些问题很难回答。论文的目的不是提供这些问题的完整解决方案,而是探讨这些目标。

科学问题:在本文中,论文对一系列最先进的深度学习漏洞检测模型进行了调查和重现,并建立了研究问题,以便理解这些模型,旨在从中汲取经验教训和指导,以更好地设计和调试未来的模型。论文构建了研究问题,并将其分为三个领域,即模型能力训练数据模型解释。具体来说,论文的首要目标是了解深度学习在漏洞检测问题中的处理能力,特别关注以下研究问题:

  • 问题 1:不同模型在漏洞检测上是否能达成共识?不同模型之间存在哪些差异?
  • 问题 2:某些类型的漏洞是否更容易检测? 应该为每种类型的漏洞构建模型,还是应该构建一个可以检测所有漏洞的模型?
  • 问题 3:是否存在一些模型难以预测的代码模式?如果存在这种代码模式,这是怎样的一种代码模式?

论文的第二项研究重点是训练数据。论文的目标是了解训练数据的规模和组成是否以及如何影响模型性能。具体来说,论文构建了以下研究问题:

  • 问题 4:增加数据集大小是否有助于提高漏洞检测的模型性能?
  • 问题 5:训练数据集中的项目组成如何影响模型的性能?

最后,论文的第三个研究领域是模型解释。 论文使用SOTA模型解释工具来调查:

  • 问题 6:模型用于预测的源代码信息是什么? 模型对重要特征是否一致?

研究内容:为了回答上述问题,论文调查了最先进的深度学习模型,并在它们的原始数据集上成功重现了 11 个模型。这些模型采用了不同的深度学习架构,例如 GNN、RNN、LSTM、CNN 和 Transformers。为了比较这些模型,论文设法让 9 个模型与 Devign 和 MSR 这两个流行的数据集一起运行。论文选择这两个数据集的原因是:(1) 这两个数据集都包含真实世界的项目和漏洞;(2) 大多数论文中的模型都是使用 Devign 数据集进行评估和调优的;(3) MSR 数据集包含 310 个项目,其中数据有漏洞类型的注释,这对我们的研究问题至关重要。通过精心设计的实验和对威胁的考虑,论文发现了 6 个研究问题的结果。总的来说,论文的研究贡献包括:

  • 贡献 1:论文对深度学习漏洞检测模型进行了全面调查。
  • 贡献 2:论文提供了一个代码仓库,其中包含 11 个具有各种研究设置的 SOTA 深度学习框架的训练模型和数据集。
  • 贡献 3:论文设计了 6 个科学问题来理解模型能力、训练数据和模型解释。
  • 贡献 4:论文构建了研究并通过实验获得了所提科学问题的结果。
  • 贡献 5:论文准备了有趣的例子和数据,以进一步研究模型的可解释性。

2. 模型复现

为了收集最先进的深度学习模型,论文研究了 2018 年至 2022 年的论文,并参考了微软的 CodeXGLUE 排行榜以及 IBM 的缺陷检测 D2A 排行榜。论文使用了所有可获取的开源模型,并成功复现了 11 个模型。论文的数据复制包中包含了完整的模型列表,以及我们未能重现某些模型的原因。

如上表所示,复现的模型涵盖了各种深度学习架构。Devign 和 ReVeal 在属性图上使用了 GNN,融合了控制流、数据依赖性和 AST。ReGVD 在 token 上采用了 GNN。Code2Vec 在 AST 上使用了多层感知器 (MLP)。VulDeeLocator 和 SySeVR 则是基于 RNN 和 Bi-LSTM 的序列模型。最近的深度学习检测采用了预训练的 Transformer,包括 CodeBERT、VulBERTa-CNN、VulBERTa-MLP、PLBART 和 LineVul。

针对论文的研究问题,论文选用了 Devign 和 MSR 数据集。论文研究了这 11 个模型在其原始论文中使用的数据集,这些数据集如上表所示。论文发现 Devign 数据集已被用于对 8 个模型进行评估和调整。该数据集是一个平衡数据集,包含大致相同数量的易受攻击和非易受攻击的示例,总共有 27,318 个数据点(每个示例也被称为一个数据点)。LineVul 使用了 MSR 数据集,这是一个近期可用的数据集。该数据集是不平衡的,包含 10,900 个易受攻击的示例和 177,736 个非易受攻击的示例。这些示例具有它们的源项目以及常见弱点枚举(CWE)条目,显示了漏洞的类型。论文利用这些数据集特征来制定一些研究问题。

论文根据原始数据集和设置复现了模型的结果,如上表所示。其中,A、P、R、F 列代表深度学习漏洞检测中常用的指标,包括准确率、精确率、召回率和 F1 分数。论文的复现结果与原始论文相比,通常计算误差在 2% 以内。特殊情况是 ReVeal,作者确认我们的结果纠正了原始论文中的数据泄漏错误,以及 Devign,论文使用了第三方复现代码(Chakaborthy 等人发布的),因为原始 Devign 代码并未开源。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1916460.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

threadx netxduo stm32f407上实现http server

这次用的是CubeIDE CubeMX 要把NX_APP的mem分配的大一些,在app_azure_rtos.c中,我给的是40*1024,如果给的不够,会导致后面无法分配pool和thread等等 需要用到filex 要在CubeMX里面勾选上,还要用到http_server和dhcp …

苹果手机抹机(马来西亚)操作步骤

苹果手机抹机(马来西亚)操作步骤 操作环境操作步骤 操作环境 苹果6s,没有插卡,就连接上了一个wifi 操作步骤

YOLOv10改进 | Conv篇 | 利用FasterBlock二次创新C2f提出一种全新的结构(全网独家首发,参数量下降70W)

一、本文介绍 本文给大家带来的改进机制是利用FasterNet的FasterBlock改进特征提取网络,将其用来改进ResNet网络,其旨在提高计算速度而不牺牲准确性,特别是在视觉任务中。它通过一种称为部分卷积(PConv)的新技术来减少…

小白的OS Copilot 产品测评

背景 通过群友介绍才知OS Copilot 。不想错过任何优秀的AI产品。随着互联网的发展和时代的进步,要紧跟时代,了解市面上的优秀的AI科技产品。 OS Copilot 产品体验评测 1)您的角色是什么?开发、运维、学生?如果使用O…

微软推出全新的学习网站 Microsoft Learn

微软官方宣布推出全新的学习网站 Microsoft Learn,供开发人员学习 Microsoft 技术。 该网站包含所有 Microsoft 产品和服务(从 HoloLens 到 Azure)的技术文档。提供了超过 80 小时的学习内容,涉及 Azure、Dynamics 365、PowerApps、Microsoft Flow 和 Po…

杜比全景声——空间音频技术

什么是杜比?是否是标清、高清、超清之上的更清晰的格式?杜比全景声 和传统多声道立体声的差别?杜比全景声音频的渲染方式?车载平台上杜比技术的应用? 杜比技术的起源 杜比实验室(Dolby Laboratories&…

谷歌内置AI部署

感谢阅读 准备工作开启功能查看下载情况安装插件效果截图网页版地址(需进行前面的所有步骤) 准备工作 点我下载谷歌dev版本 注意这个版本不需要卸载之前版本 开启功能 使用下载的浏览器依次导航到下面两个地方,然后点击enablebypass以及en…

STM32 - PWR 笔记

PWR(Power Control)电源控制 PWR 负责管理 STM32 内部的电源供电部分,可以实现 可编程电压监测器 和 低功耗模式 的功能 可编程电压监测器(PVD)可以监控VDD电源电压,当VDD下降到PVD阀值以下或上升到PVD…

arm 、stm32、linux该如何学习?有没有先后顺序,先学什么比较好?

先讲自己,我是从Arduino单片机入门,再到stm32 ,再开发瑞萨,TI,然后学校教了51。这是一个奇怪的学习过程,所以当我第一次接触51单片机的时候,刚好我有一些资料,是我根据网友给的问题精…

MacOS如何切换shell类型

切换 shell 类型 如果你想在不同的 shell 之间切换,以探索它们的不同之处,或者因为你知道自己需要其中的一个或另一个,可以使用如下命令: 切换到 bash chsh -s $(which bash)切换到 zsh chsh -s $(which zsh)$()语法的作用是运…

c++ learn fourth day

2.LOL Lovers 我们可以从 1 遍历到 len−1,以第 𝑖i 个位置为分割线,统计 [0,i−1] 与 [i,len−1] 的 l 和 o 的个数,判断是否不相等,如果不相等,输出 i,然后退出即可。 如果到最后一直没有输出…

【Mac】Charles for Mac(HTTP协议抓包工具)及同类型软件介绍

软件介绍 Charles for Mac 是一款功能强大的网络调试工具,主要用于HTTP代理/HTTP监视器。以下是它的一些主要特点和功能: 1.HTTP代理:Charles 可以作为HTTP代理服务器,允许你查看客户端和服务器之间的所有HTTP和SSL/TLS通信。 …

2970.力扣每日一题7/10 Java(暴力枚举)

博客主页:音符犹如代码系列专栏:算法练习关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 目录 解题思路 解题方法 时间复杂度 空间复杂度 Code 解题思路 incre…

SDF矩形(附圆角)公式推导

SDF矩形(附圆角)公式推导 矩形 一般情况下,我们会使用(top_left, top_bottom), (width, height)来定义一个矩形,但是对于SDF而言,使用(centerX, centerY), (HalfSizeX, HalfSizeY)会更方便一些。 假设一个矩形,我们先定…

利用【Python】【线性规划】优化工厂生产:实现智能资源配置与利润最大化的现代解决方案

目录 1. 问题背景和描述 1.1 问题背景 1.2 问题描述 2. 数学模型的建立 2.1决策变量 2.2 目标函数 2.3 约束条件 2.4 数学模型总结 3. 使用Python解决线性规划问题 3.1 导入必要的库 3.2 定义目标函数系数 3.3 定义不等式约束矩阵和向量 3.4 定义变量的边界 非负…

MAVLink代码生成-C#

一. 准备Windows下安装环境 Python 3.3 – 官网链接下载Python future模块 –pip3 install future TkInter (GUI 工具). – python for Windows自带,无需下载环境变量PYTHONPATH必须包含mavlink存储库的目录路径。 –set PYTHONPATH你的mavlink源码路径 源码下载在…

【Linux】Windows环境下配置虚拟机静态IP

当前我们虚拟机的Linux操作系统,其IP地址是通过DHCP服务获取的。 DHCP:动态获取IP地址,即每闪重启设备后都会获取一次,可能导致IP地址频繁变更 原因1:办公电脑IP地址变化无所谓,但是我们要远程连接到Linux系统&#x…

IDEA之Debug的使用

自定义功能图表 功能说明 光标回到Debug行 执行到光标所在行 Force Step into Trace Current Stream Chain Reset Frame 重置方法入栈

ESP32网络开发:1.创建一个基于TCP网络协议的网站

一、TCP协议的介绍 TCP(传输控制协议,Transmission Control Protocol)是互联网协议套件中的一种核心协议,主要用于在网络中的计算机之间可靠地传输数据。TCP协议位于OSI模型(开放系统互联模型)的传输层&…

系统架构设计师教程(清华第2版)<第2章 计算机系统基础知识>解读

系统架构设计师教程 第二章 计算机系统基础知识-2.1计算机系统概述 2.2 计算机硬件 2.1 计算机系统概述2.2 计算机硬件2.2.1 计算机硬件组成2.2.2 处理器2.2.2.1 控制单元(CU)2.2.2.2 算术逻辑单元(ALU)2.2.2.3 指令集2.2.2.3.1 CISC的特点2.2.2.3.2 RISC的特点2.2.3 存储器2.2…