Security Vulnerability Detection Using Deep Learning Natural Language Processing论文分享

今天分享的论文是《Security Vulnerability Detection Using Deep Learning Natural Language Processing》

原文链接:Security Vulnerability Detection Using Deep Learning Natural Language Processing | IEEE Conference Publication | IEEE Xplore

这篇论文是利用深度学习进行漏洞挖掘。

在软件漏洞被利用之前检测到它们一直是数十年来的难题。尽管提出了传统的代码分析方法,但这些方法通常效果不佳且效率低下。在本研究中,将软件漏洞检测建模为一个自然语言处理(NLP)问题,将源代码视为文本,并借助在书面英语上进行迁移学习的最新先进深度学习NLP模型,实现自动化的软件漏洞检测。为了训练和测试,对NIST NVD/SARD数据库进行了预处理,并构建了一个包含超过10万份C语言文件的数据集,涵盖123种类型的漏洞。经过广泛的实验,在检测安全漏洞方面取得了超过93%的准确率的最佳性能。

尽管存在多种用于检测代码中错误和其他问题的传统技术,但这些技术存在诸多问题,通常不准确或极具误导性。静态代码分析会查看原始代码中预定义的模式,以指示安全漏洞。动态代码分析则会运行原始代码,以找出底层计算行为的问题。在本研究中,采用深度机器学习来提取代码中可能导致错误和其他安全问题的安全模式。尽管之前有人对这一问题进行过研究并取得了一定的成功,本文是首次采用最先进的基于变换器的架构来解决这一问题。

本文的主要贡献如下: 

1. 首先,构建了一个包含原始C/C++代码的大型开放文本数据集。 

2. 其次,开发并测试了能够有效从原始代码中提取上下文信息的深度学习模型。特别是,展示了双向编码器表示从变换器(BERT)在对用C/C++编写的原始代码进行安全漏洞分类方面的能力,其表现远远超过了其他测试过的模型。 

3. 第三,成功地将从书面英语到计算机代码的迁移学习应用于实践,并观察到尽管它们的结构差异显著,但这种方法却出人意料地有效。

本文的其余部分安排如下:在第II部分,将概述最近在软件漏洞检测方面的研究工作,包括使用静态和动态代码分析以及与变换器相关的深度学习工作,以及使用机器学习从计算机代码中提取特征。第III部分将详细介绍构建的开放C代码数据集,其原始来源以及创建过程。在第IV部分,将详细描述用于软件漏洞检测的深度学习模型。然后,第V部分将比较这些模块在开发的数据集上的软件漏洞检测性能。

与本文的工作相关的研究可以分为两大类:人类语言的深度学习NLP模型,以及传统的软件漏洞检测解决方案。

Example of LSTM recurrence for predicting security vulnerabilities:

BERT software vulnerability detection model with 12 Transformer blocks, each of which has 768 hidden units and 12 attention heads, with the input of 256 word vectors at a time.:

总结:

在本研究中,首先开发了一个经过预处理的软件漏洞新型数据集。随后,基于最近的NLP深度学习研究进展,设计了几种深度学习模型,用于在源代码的文本表示中检测和分类软件漏洞。通过广泛的实验,证明了基于变换器的NLP深度学习模型在检测和分类代码中的软件漏洞方面能够取得令人印象深刻的结果。此外,观察到对于这一特定任务而言,保持整个序列的上下文信息至关重要。构建的软件漏洞数据集也可以供其他研究人员使用,以进一步推动这一领域的发展。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值