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

news/2024/9/11 4:19:16/ 标签: 学习, 深度学习, 人工智能

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.ppmy.cn/news/1474507.html

相关文章

第2章 源码编译构建LAMP

LAMP LAMP是一个常见的开发平台和运行环境,主要用于支持动态网站和Web应用程序的开发和部署。 L: Linux,指操作系统,通常是Linux操作系统。A: Apache,指Web服务器软件,常用于托管网站。M: MySQL,指关系型…

python-26-零基础自学python-如何创建文件、读取数据、处理多个文件及程序异常处理等

学习内容:《python编程:从入门到实践》第二版第10章 知识点: 程序异常如何处理?try-except-else 多个文件处理 创建文件:在文件中储存数据 练习内容: 练习10-8:猫和狗 创建文件cats.txt和…

赠你一只金色的眼 - 富集分析和表达数据可视化

GOplot包介绍 GOplot包用于生物数据的可视化。更确切地说,该包将表达数据与功能分析的结果整合并进行可视化。但是要注意该包不能用于执行这些分析,只能把分析结果进行可视化。在所有科学领域,由于空间限制和结果所需的简洁性,切…

快速测试electron环境是否安装成功

快速测试electron环境是否安装成功 测试代码正确运行的效果运行错误的效果v22.4.1 版本无法使用v20.15.1版本无法使用v18.20.4 版本无法使用 终极解决办法 测试代码 1.npx create-electron-app my-electron-app 2.cd my-electron-app 3.npm start 正确运行的效果 环境没问题…

Vue从零到实战第一天

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

广度优先(BFS)

先看一道简单的题&#xff0c;迷宫问题&#xff1a; 洛谷P1746 离开中山路&#xff1a;P1746 离开中山路 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include<iostream> #include<cstring> #include<queue> #include <utility> #define N 1002 …

pandas+pywin32操作excel办公自动化

import pandas as pd import re import win32com.client as win32 from win32com.client import constants import os import os.path as osp #读取表格 pathos.getcwd() fposp.join(path,fuck_demo.xlsx) dfpd.read_excel(fp,header1,usecols[序号,光缆段落名&#xff08;A端…

2024年电子商务与大数据经济国际会议 (EBDE 2024)

2024年电子商务与大数据经济国际会议 (EBDE 2024) 2024 International Conference on E-commerce and Big Data Economy 【重要信息】 大会地点&#xff1a;厦门 大会官网&#xff1a;http://www.icebde.com 投稿邮箱&#xff1a;icebdesub-conf.com 【注意&#xff1a;稿将稿…

PyTorch 2-深度学习-模块

PyTorch 2-深度学习-模块 一: pytorch1> pytorch 介绍2> pytorch 作用3> pytorch 优点4> pytorch 流程二:pytorch 模块1> torch.Tensor 模块2> torch.nn模块3> torch.nn.function模块4> torch.random模块5> torch.onnx模块6> torch.sparse模块7…

原生android的内存性能提升方面的测试和优化方案大致设计

一 测试目标&#xff1a; 以满足用户设备的内存性能和不杀后台为目标。 1&#xff1a;满足用户设备的内存性能是指不出现因为内存原因导致的安卓设备死机&#xff0c;卡顿等问题。 2&#xff1a;满足不杀后台是指整个设备使用时&#xff0c;不出现后台app被杀。 通常是估算如果…

从科幻到现实,IOC如何驱动智慧城市“数字孪生”变革?

每天&#xff0c;世界各地的城市都面临着各种突发事件&#xff0c;这些事件要求跨部门和机构的实时通信及协作。遗憾的是&#xff0c;关键信息通常存储在多个分散的系统中&#xff0c;这阻碍了状况认知&#xff0c;并让各个部门难以协调其响应工作。如果没有单个集成的危机视图…

线程池操作数据库存在线程安全问题

目录 1、前言 2、问题 3、解决方法 3.1、方法一&#xff1a;数据库约束 3.2、方法二&#xff1a;使用锁进行线程的约束 4、总结 1、前言 当前需求为&#xff1a;处理数据&#xff0c;将数据存储到数据库中&#xff0c;在存储的过程中&#xff0c;会先查询该数据是否已经存…

FPGA(1)--什么是布局与布线

布局与布线是FPGA设计流程中非常关键的步骤&#xff0c;它们的目的是将经过综合的逻辑网表映射到FPGA芯片的物理资源上&#xff0c;并通过电气连接来实现设计的功能。具体来说&#xff0c;布局与布线包括以下工作&#xff1a; 布局&#xff08;Placement&#xff09;&#xff1…

9.Python学习:Socket

1.网络通信要素&#xff08;IP端口传输协议&#xff09; 2.Socket编程 2.1TCP、UDP协议了解 2.2 Socket流程 服务端有两个socket对象&#xff0c;客户端有一个 3.Socket实战 服务端代码&#xff1a; import socket #创建Socket对象 sksocket.socket() #绑定ip与端口号-使…

BUG解决:postman可以请求成功,但Python requests请求报403

目录 问题背景 问题定位 问题解决 问题背景 使用Python的requests库对接物联数据的接口之前一直正常运行&#xff0c;昨天突然请求不通了&#xff0c;通过进一步验证发现凡是使用代码调用接口就不通&#xff0c;而使用postman就能调通&#xff0c;请求参数啥的都没变。 接口…

day30--56. 合并区间+ 738.单调递增的数字

一、56. 合并区间 题目链接&#xff1a;https://leetcode.cn/problems/merge-intervals/ 文章讲解&#xff1a;https://programmercarl.com/0056.%E5%90%88%E5%B9%B6%E5%8C%BA%E9%97%B4.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV1wx4y157nD 1.1 初见思路 …

防火墙第一次综合实验

DMZ区内的服务器&#xff0c;办公区仅能在办公时间内(9:00-18:00)可以访问&#xff0c;生产区的设备全天可以访问。 办公区设备10.8.2.1不允许访问DMZ区的FTP服务器和HTTP服务器&#xff0c;仅能ping通10.0.3.10 1.先建立拒绝BG到DMZ区的安全策略 2.建立BG到DMZ区的icmp允许 3…

AI推介-大语言模型LLMs之RAG(检索增强生成)论文速览(arXiv方向):2024.06.01-2024.06.20

文章目录&#xff5e; 1.StackRAG Agent: Improving Developer Answers with Retrieval-Augmented Generation2.FoRAG: Factuality-optimized Retrieval Augmented Generation for Web-enhanced Long-form Question Answering3.Model Internals-based Answer Attribution for T…

springboot仓库管理系统+lw+源码+讲解+调试

第3章 系统分析 在进行系统分析之前&#xff0c;需要从网络上或者是图书馆的开发类书籍中收集大量的资料&#xff0c;因为这个环节也是帮助即将开发的程序软件制定一套最优的方案&#xff0c;一旦确定了程序软件需要具备的功能&#xff0c;就意味着接下来的工作和任务都是围绕…

vue项目实现路由按需加载(路由懒加载)的三种方式

使用异步组件 在使用vue-router配置路由时&#xff0c;可以使用异步组件来实现路由的按需加载。异步组件会在路由被访问时才进行加载&#xff0c;从而实现按需加载的效果。需要注意的是&#xff0c;使用异步组件需要借助webpack的动态import语法来实现。例如&#xff1a; cons…