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

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

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 代码并未开源。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 利用 Plotly.js 创建交互式条形图
  • 【js面试题】深入理解浏览器对象模型(BOM)
  • HiFi音频解码器:音质提升的秘密武器
  • ios swift5 蓝牙广播出数据
  • 蚁剑编码器编写——php木马免杀
  • DID差分模型案例集(传统DID、队列DID、渐近DID、空间DID、PSM-DID)
  • 使用 FFmpeg 处理视频:简介、常用命令及在 C++ 中调用 FFmpeg
  • jmeter-beanshell学习3-beanshell获取请求报文和响应报文
  • dify/api/models/workflow.py文件中的数据表
  • 防火墙安全策略练习
  • uiautomation: debug记录
  • 【Pytorch】Conda环境pack打包迁移报错处理
  • 【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(十二)-管道、环境变量、常用命令
  • 科研绘图系列:R语言径向柱状图(Radial Bar Chart)
  • 集成sa-token前后端分离部署配置corsFliter解决跨域失效的真正原因
  • [数据结构]链表的实现在PHP中
  • Javascript设计模式学习之Observer(观察者)模式
  • PV统计优化设计
  • React Native移动开发实战-3-实现页面间的数据传递
  • vue-loader 源码解析系列之 selector
  • vue的全局变量和全局拦截请求器
  • XForms - 更强大的Form
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 分布式任务队列Celery
  • 回顾 Swift 多平台移植进度 #2
  • 精彩代码 vue.js
  • 排序算法学习笔记
  • 强力优化Rancher k8s中国区的使用体验
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 通过git安装npm私有模块
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 一些关于Rust在2019年的思考
  • 怎样选择前端框架
  • 正则表达式小结
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (11)MSP430F5529 定时器B
  • (BAT向)Java岗常问高频面试汇总:MyBatis 微服务 Spring 分布式 MySQL等(1)
  • (C语言)fgets与fputs函数详解
  • (ros//EnvironmentVariables)ros环境变量
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (四) Graphivz 颜色选择
  • (算法)N皇后问题
  • (贪心 + 双指针) LeetCode 455. 分发饼干
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转载)hibernate缓存
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET NPOI导出Excel详解