基于BERT模型的源代码漏洞检测技术研究.pdf
《基于BERT模型的源代码漏洞检测技术研究.pdf》由会员分享,可在线阅读,更多相关《基于BERT模型的源代码漏洞检测技术研究.pdf(8页珍藏版)》请在咨信网上搜索。
1、信息安全研究第10 卷第4期2 0 2 4年4月Journalot information Security ResearchVol.10No.4Apr.2024DOl:10.12379/j.issn.2096-1057.2024.04.02基于BERT模型的源代码漏洞检测技术研究罗乐琦张艳硕王志强文津薛培阳(北京电子科技学院北京100070)()Research on Source Code Vulnerability Detection Based on BERT ModelLuo Leqi,Zhang Yanshuo,Wang Zhiqiang,Wen Jin,and Xue Peiya
2、ng(Beijing Electronic Science and Technology Institute,Beijing 100070)Abstract Techniques such as code metrics,machine learning,and deep learning are commonlyemployed in source code vulnerability detection.However,these techniques have problems,suchas their inability to retain the syntactic and sema
3、ntic information of the source code and therequirement of extensive expert knowledge to define vulnerability features.To cope with theproblems of existing techniques,this paper proposed a source code vulnerability detection modelbased on BERT(bidirectional encoder representations from transformers)m
4、odel.The model splitsthe source code to be detected into multiple small samples,converted each small sample into theform of approximate natural language,realized the automatic extraction of vulnerability features inthe source code through the BERT model,and then trained a vulnerability classifier wi
5、th goodperformance to realize the detection of multiple types of vulnerabilities in Python language.Themodel achieved an average detection accuracy of 99.2%,precision of 97.2%,recall of 96.2%,andan F1 score of 96.7%across various vulnerability types.This represents a performance improvement of2%to 1
6、4%over existing vulnerability detection methods.The experimental results showed thatthe model was a general,lightweight and scalable vulnerability detection method.Key words vulnerability detection;deep learning;Python language;BERT model;natural languageprocessing摘要源代码漏洞检测常使用代码指标、机器学习和深度学习等技术.但是这些技
7、术存在无法保留源代码中的句法和语义信息、需要大量专家知识对漏洞特征进行定义等问题.为应对现有技术存在的问题,提出基于 BERT(bidirectional encoder representations from transformers)模型的源代码漏洞检测模型.该模型将需要检测的源代码分割为多个小样本,将每个小样本转换成近似自然语言的形式,通过BERT模型实现源代码中漏洞特征的自动提取,然后训练具有良好性能的漏洞分类收稿日期:2 0 2 3-0 5-30基金项目:中国博士后科学基金面上项目(2 0 19M650606);中央高校基本科研业务费专项资金项目(32 8 2 0 2 2 0 3,
8、2 0 2 30 0 45Z0114);北京电子科技学院一流学科建设项目(32 0 10 12)通信作者:王志强()引用格式:罗乐琦,张艳硕,王志强,等。基于BERT模型的源代码漏洞检测技术研究J.信息安全研究,2 0 2 4,10(4):2 94-30 12941学术论文.ResearchPapers器,实现Python语言多种类型漏洞的检测.该模型在不同类型的漏洞中实现了平均99.2%的准确率、97.2%的精确率、96.2%的召回率和96.7%的F1分数的检测水平,对比现有的漏洞检测方法有2%14%的性能提升.实验结果表明,该模型是一种通用的、轻量级的、可扩展的漏洞检测方法.关键词漏洞检测
9、;深度学习;Python语言;BERT模型;自然语言处理中图法分类号TP393.08随着互联网技术的快速发展,互联网已经融入现代社会的方方面面,包括医疗保健、能源、交通、公共安全、教育、娱乐等,互联网已经成为民生国计中不可或缺的一部分.然而,互联网面临着越来越严重的网络攻击威肋胁.网络安全漏洞可以出现在各种不同的系统和应用程序中,包括操作系统、网络设备、应用程序、数据库等.这些漏洞可能会被黑客用来窃取敏感信息、破坏系统、分发恶意软件、进行勒索攻击等.例如,勒索软件WannaCry利用Windows操作系统的漏洞进行传播,导致数百万计算机系统和网络设备瘫痪,波及医院、银行、电信运营商、政府机构等
10、.往往只是因为几行代码不规范或者没有考虑到安全问题,就足以导致严重的漏洞并使系统成为容易攻击的目标.著名的“心脏滴血”漏洞是OpenSSL密码库中一个严重的缓冲区溢出漏洞,影响了数十亿互联网用户,但只需要增加2 行安全代码就可以防范.截至2 0 2 2年,通用漏洞披露(common vulnerabilities andexposures,C V E)已记录了36 6 8 15个漏洞,其中危险漏洞占比高达41.8 2%.这些漏洞的成因复杂,种类繁多,给漏洞的预防和检测带来了很大的困难,如何高效地进行漏洞检测是一个迫切且值得研究的课题.检测漏洞的经典方法是静态分析、动态分析和动静混合分析,运用这
11、些方法进行漏洞检测需要人类专家进行大量工作.然而,现代软件和操作系统的规模更大且复杂性也更高,这些方法耗费的人力成本越来越大,漏洞检测的效果也不佳。机器学习技术的出现带来了漏洞检测的新思路.机器学习算法可以学习易受攻击代码的模式并提取漏洞特征.但是基于机器学习的检测技术的性能仍然依赖于人类专家定义的模式的质量,这意味着专业知识水平会对性能产生重大影响.本文提出了一种基于BERT(b id ir e c tio n a lencoder representations from transformers)模型的源代码漏洞检测模型,将需要检测的源代码分割为一个个适合训练的小样本,将源代码视为自然语
12、言文本,通过BERT模型实现源代码中漏洞特征的自动提取,并训练具有良好性能的分类器实现多种漏洞的检测.本文的创新点和主要贡献如下:1)提出基于BERT模型的源代码漏洞检测模型,不需要依托专家知识即可实现对多种不同类型漏洞的检测;2)提出一种代码切片的方法实现数据的自动化预处理,便于模型将输人转换为所需的向量形式;3)在Python源代码数据集上开展了大量的实验和评估,实验结果表明,本文模型在不同类型的漏洞中实现了平均9 9.2%的准确率、9 7.2%的精确率、96.2%的召回率和96.7%的F1分数的检测水平与现有检测技术相比,本文模型有更高的准确率和更好的模型鲁棒性.1相关工作源代码漏洞检测
13、的研究方法分为3类:基于代码指标的漏洞检测、基于机器学习的漏洞检测和基于深度学习的漏洞检测.不同的研究方法没有绝对的区别,通常根据不同的应用场景、数据类型和规模进行混用。1.1基于代码指标的漏洞检测研究Morrison等人提出使用一系列代码指标构建漏洞检测模型,其中包括流失指标、复杂性指标、依赖性度量指标、规模指标等,这些指标已经被广泛运用于漏洞检测模型中。Shin等人2 采用代码复杂性指标对Mozilla应用程序框架中JavaScript引擎的9 个复杂性指标进行漏洞度量,使用2 元逻辑回归模型实现了80%召回率和2 5%误报率的预测结果.Chowdhury等人31在软件早期开发阶段运用网址
14、http:/1295信息安全研究第10 卷第4期2 0 2 4年4月Journalotinformatien Security ResearchVol.10No.4Apr.2024了复杂性、耦合性和内聚性相关的软件指标自动预测MozillaFirefox中容易出现漏洞的文件,利用决策树、随机森林、逻辑回归和朴素贝叶斯等技术,实现了整体预测准确率约为7 4%的预测效果。Zhou等人4设计了K-fold(K折交叉切分)堆叠分类器,基于提交信息和错误报告中对某一问题的代码修改,结合自然语言处理和机器学习技术,实现了8 3%精确率和7 4%召回率的预测效果。1.2基于机器学习的漏洞检测研究机器学习技术
15、已经被用于许多编程语言的漏洞检测中,通过分析有漏洞的代码段即可定义漏洞模式用于漏洞检测。Pang等人5 使用特征选择和分析将整个Java类分类为易受攻击或不易受攻击,对4种不同类型的Java Android应用程序进行预测,实现了约 92%准确率、96%精确率和8 7%召回率的预测效果.Hovsepyan等人6 将JavaAndroid项目的源代码视为一种自然语言.他们使用词袋技术将源代码转换为特征向量.然后使用支持向量机算法对这些特征进行2 元分类训练,达到了8 7%准确率、85%精确率以及8 8%召回率的预测效果。1.3基于深度学习的漏洞检测研究深度学习技术相比机器学习技术不需要手动定义漏
16、洞模式,可以通过深度神经网络提取易受攻击的特征.Nguyen等人门将漏洞检测视为归纳性的文本分类问题,通过将源代码视为标记序列的方式构建图,使用预训练编程语言模型的标记嵌人层进行初始化,然后利用图神经网络进行训练,获得较好的分类效果。陈传涛等人8 1提取程序的抽象语法树信息,并对抽象语法树进行压缩编码,在保留程序结构和语义特征的同时减少了语法树的复杂性,有效提升漏洞检测的效率。Wartschinski等人9从Github中收集一个大型的Python源代码提交数据集,通过词嵌人模型将源代码转换为子向量,通过训练长短期记忆网络模型,实现了96.8%准确率、8 3%召回率、91%精确率和8 7%F1
17、分数的预测效果.1.4存在的问题基于代码指标的漏洞检测无法保留源代码中2961的语义信息,限制了其在漏洞检测方面的表现,例如文献2-4.基于机器学习的漏洞检测研究可以较好地提取出漏洞特征,但是需要大量的专家知识对漏洞模式进行定义,例如文献5.基于深度学习的漏洞检测能自动地提取漏洞特征,然而其性能受限于数据集能否转化成AST或者图结构等便于提取的模式,例如文献7-8 .同时如文献6,9 表明,将源代码视为自然语言似乎能够提取更深层次的信息本文在以上研究的基础上,提出基于BERT模型的漏洞检测模型.通过将源代码视为自然语言进行训练,降低了数据集收集与处理的难度.本文通过BERT模型从代码中自动提取
18、漏洞语义特征,在保留源代码语义信息的同时,也解决了提取特征需要大量专家知识的问题.本文还对模型进行优化,使得检测性能优于现有研究的水平。2模型设计2.11BERT模型BERT模型是Google团队于2 0 18 年提出的一种预训练自然语言处理模型.BERT模型通过在大规模的文本数据上进行无监督的预训练来学习通用的语言表示,并将这些通用的语言表示用于各种下游自然语言处理任务,如文本分类、命名实体识别、语义相似度计算等.BERT模型的基本结构如图1所示。BERT模型将输人的文本转化为3种向量:1)字向量.每个字在字向量表中对应的1维向量2)文本向量.该向量的取值在模型训练过程中自动学习,用于刻画文
19、本的全局语义信息,并与单字/词的语义信息相融合.3位置向量.用于区分由于出现在文本不同位置的字/词所携带的语义信息的差异。BERT模型将字向量、文本向量和位置向量的加和作为输人,通过多层Transformer编码器10 1架构进行漏洞语义特征的提取。Transformer编码器结合多头注意力机制、前馈神经网络与残差连接等技术,通过双向训练及多层Transformer编码器堆叠的方式,可以准确地捕捉文本中长距离的依赖关系和上下文信息,进而生成高质量的表示向量.学术论文ResearchPapers语义特征多层Transformer编码器残差连接与标准化位置向量前馈神经网络残差连接与标准化文本向量多
20、头注意力机制字向量输入文本b图1BERT模型的基本结构2.2基于BERT模型的源代码漏洞检测模型本文在BERT模型的基础上,设计了用于源代码漏洞检测的总体模型,模型主要分为3个部分:数据预处理、训练模型及分类器.如图2 所示.训练一个高效的漏洞检测模型需要大量的源代码作为数据集.数据预处理部分对从网上收集的BERT模型Transformer编码器大量源代码进行切片操作,切割后的源代码成为一个个小样本,每个小样本都会打上有无漏洞的标签.将一个小样本与它对应标签作为模型训练的输入,从而形成训练数据集。训练模型主要由BERT模型、随机失活层、线性层与Sigmoid激活函数组成.语义特征Transfo
21、rmer编码器Transformer编码器代码向量化表示数据预处理代码集随机失活层线性层Sigmoid函数分类器输出是否存在漏洞图2 基于BERT的源代码漏洞检测总体模型网址http:/1297信息安全研究第10 卷第4期2 0 2 4年4月Journalotinformatien Security ResearchVol.10No.4Apr.20241)BER T 模型.基本架构是12 层Transformer编码器结构,采用掩码语言模型11I的方法进行预训练,可用于提取代码中的语义信息。2)随机失活层.随机地将一些神经元的输出设置为0,防止模型在训练时出现过拟合的现象,随机失活层参数设置为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 BERT 模型 源代码 漏洞 检测 技术研究
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【自信****多点】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【自信****多点】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。