基于深度学习的代码漏洞检测方法

来源 :哈尔滨工业大学 | 被引量 : 0次 | 上传用户:repopw
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
随着互联网技术的蓬勃发展,软件中的代码漏洞也随之增多,导致企业用户或个人用户的软件安全受到巨大的威胁。虽然在开发软件的过程中避免代码漏洞的产生是一件较为困难的事情,但是尽早发现代码漏洞并及时修改也是一种合理的解决方法。目前,面向静态代码漏洞检测系统的研究可以划分为基于代码相似性的方法和基于模式的方法。基于代码相似性的方法主要用于检测代码克隆引起的漏洞,而对于其他原因引起的漏洞具有较高的假阴性。基于模式的方法需要专家手动定义漏洞特征,这就会造成时间和精力的浪费。而且由于定义特征是一项主观工作,专家的判断会影响检测的结果。于是在这时,人们迫切需要一种可以检测多种类型的漏洞并且不那么依赖于专家的方法。深度学习是机器学习研究的一个新领域,这几年得到了广泛的关注,它的使用大大解放了人力,这使得我们思考深度学习是否也可以应用于漏洞检测的研究中,是否也可以解决专家资源浪费的问题。本文研究了一种基于深度学习的代码漏洞检测方法。主要研究内容如下:收集C/C++关于函数调用、数组使用、指针使用和算术表达式的代码漏洞源代码,作为本文实验的数据集;提取四种代码漏洞的漏洞语义特征,将数据集与漏洞语义特征相匹配,生成基于语法的代码切片(Syntax-based Code Fragment,Sy CF);然后将生成的Sy CF转换成基于语义的代码切片(Semantic-based Code Fragment,Se CF)。对于Se CF进行一些数据处理,包括:将Se CF中所有字符串都替换成统一的字符串;然后对Se CFs进行分词处理;接着将Se CF中所有用户自定义的变量替换为v1,v2等,用户自定义的函数名替换为f1,f2等;最后将处理过的Se CF转换为向量表示。根据代码漏洞的特点,选择适合于文本分析的深度学习方法:LSTM,BLSTM,GRU,BGRU。设计并实现这四种深度学习方法,使其检测代码漏洞的准确率尽可能高。选择合理的度量方法对此方法进行评价,并且与其他检测代码漏洞的工具进行对比,判断此方法的有效性。
其他文献
诚信是构建社会主义和谐社会的重要内容和基本道德规范,一个社会能否和谐,一个国家能否长治久安,很大程度上取决于全体社会成员的诚实守信的道德水平。本文从诚实信用原则在
7月23-27日,"内蒙古兴安盟农垦行"活动在我局举行,来自广东、海南、江苏、江西、安徽等垦区的宣传工作者参加了活动。我1997年从事宣传工作,对《中国农垦》神往已久,十年前投过
在这份报纸,作者为点头随机变量的加权的和学习完全、弱、几乎肯定的集中并且为点头随机变量的加权的和获得一些新限制定理,它扩大黑啤的相应定理[1 ] ,织边[2 ] 并且胡等。[3 ]
熔模石膏型铸造工艺生产铜合金艺术品,优点是产品表面光滑,铜合金致密度高,优异的表面光洁度和精细复制能力,使艺术品还原逼真,铸件精度高模壳易于冲洗;此项铸造工艺技术至今
熔模石膏型铸造工艺生产铜合金艺术品,优点是产品表面光滑,铜合金致密度高,优异的表面粗糙度和精细复制能力,使艺术品还原逼真,铸件精度高,模壳易于冲洗;此项铸造工艺技术至
在这篇文章,我们在紧缩的公制的空格介绍为连续系统功能的熵的概念,并且证明一些它的性质。我们也从熵提取 Kolmogorov 熵功能。
简单介绍制动盘风道芯的结构特点,以及用覆膜砂生产制动盘风道芯射砂充型时遇到的问题,寻找问题根源,采取相应措施制定方案后用Procast软件模拟射砂充型过程,然后通过进行生
在现在的纸,我们学习几个复杂变量的全部功能的多项式近似。概括顺序的描述和慢生长的全部功能的概括类型以近似和插值错误被获得。
期刊