基于CNN+ATTENTION的漏洞检测系统


1、项目简介

​ 在网络日益发展的今天,软件安全成为了从业人员必须要注意的一块。在国际上,软件漏洞静态检测是一种有效的方式去检测程序中静态存在的错误。在检测方法中,相较于二进制漏洞检测法,源代码漏洞检测法更简便更快速。
​ 本项目核心思想是源代码漏洞检测法中基于深度学习的检测方法。由于CNN+ATTENTION机制的优秀表现,所以我们使用这个核心神经网络结构来训练模型,从而达到源代码静态错误的检测效果。

​ 具体流程:

  1. 平台从用户本地读入文件
  2. 一系列模型处理操作
  3. 将结果写入本地

2、项目特色

特色展示

​ 总结:采用CNN+Attention模型进行工作我们可以得到学习效率的模型,相对于RNN+LSTM更加的准确、快速。在漏洞检测这块,二进制漏洞检测由于其缺乏上层的代码结构信息和类型信息,分析难度大;源代码漏洞检测中的基于中间表示的漏洞检测,对大规模的程序进行形式化表示很困难。综合以上考虑,我们使用的基于逻辑推理的漏洞检测再结合计算机强大的算力会更加准确。

3、项目成果展示

3.1 成果简介

​ 项目实现一种基于CNN+ATTENTION 这两种神经网络以及已公布漏洞库中的代码数据所训练出来的具有能够检测到程序漏洞能力的模型。在服务器上配置好所需要的环境后,我们将所要检测的项目文件放入指定目录,然后通过执行脚本文件来进行载入模型,从而检测。最终检测结果将写入指定目录。这些目录参数均在本项目文件的特定类中。

3.2 技术及功能

项目中应用的关键技术:
CNN神经网络结构、
ATTENTION神经网络结构、
alter3工具进行词法语法语义解析、
LSTM神经网络。
主要功能:
对所给项目文件代码进行可能存在漏洞的检测。

3.3 界面

界面展示

3.4 数据分析

数据分析

4、项目意义与收获

​ 项目研究意义:这个项目的完成,以及模型评估后,CNN+ATTENTION机制的确比LSTM+RNN在“语言比对”方面要优秀。而且试验的准确度以及Bleu算法的得分曲线,我们是可以确定基于深度学习的漏洞检测是相对高效和准确的方式去检测源代码的漏洞。

​ 项目收获:我们学会了很多实用的知识,如熟练LINUX系统使用,学会使用深度学习框架,数据搜集和分析等,同时培养了我们团队合作解决难题的能力与意识,学会与人交流合作,发挥彼此的长处。每一步的前进,让我们逐渐体会其中的辛苦和意义,学到科学与人文知识,获得属于我们大学生的成长。


文章作者: kilig
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 kilig !
 上一篇
java细节 java细节
1、对象的clone1.1 实现Cloneable接口​ 继承Cloneable接口,覆盖public Object clone()方法。若类中还有其他类的引用,则其他类中也必须覆盖clone方法。 public class
下一篇 
MarkDown学习 MarkDown学习
1、标题#一级标题 ##二级标题 。。。 ######六级标题 最多支持六级标题 2、文字2.1删除线使用“~~”: ~~删除线~~ 实际效果:删除线 2.2斜体使用“*”: *斜体* 实际效果:斜体 2.3加粗使用”**” **加粗**
2019-05-13
  目录