VulDeePecker:基于深度学习的脆弱性检测系统
最近的两款软件,VUDDY和VulPecker,假阴性率高而假阳性率低,用于检测由代码克隆引发的漏洞。而如果用于非代码克隆引起的漏洞则会出现高误报率。
本文使用深度学习处理程序中的代码片段,不应由专家来手动定义特征,在不产生高假阴性率,假阳性率适当,能够判断是否有漏洞,并定位漏洞位置
VulDeePecker的效果:能够同时检测不止一种漏洞,可以结合人类知识进一步提高有效性(不是定义特征)。
这一项目采用了由国家标准和技术研究所 (NIST) 和软件保证参考数据集 (SARD) 放出的数据集。
本文提出了三个指导原则
1.程序可以先转为一种中间表示,可以保留 (某些) 程序元素之间的语义关系 (例如,数据依赖和控制依赖关系)。然后再转化为向量表示输入神经。
2.程序片段粒度应当比函数小
3.由于一行代码是否包含漏洞可能取决于上下文,因此可以处理上下文的神经网络可能会更适合。
RNN有效被用于过程序分析(非漏洞检测),且会受消失梯度 (VG) 问题,同理BRNN
长期短期记忆 (LSTM) 细胞和门控轮回单元 (GRU) 细胞,由于 GRU 在语言建模上不超过 LSTM ,
本文选择了LSTM,但没有比较二者。由于LSTM是单向的,使用了双向LSTM(BLSTM)
关于代码片段:
直观地说,关键点的启发式概念在某种意义上可以看作是漏洞的 “中心” 或暗示漏洞存在的代码片段。对于库/API 函数使用不当造成的漏洞,调用的关键点是库/API 函数调用; 对于由于数组使用不当而导致的漏洞,关键点是数组。重要的是要注意,一种类型的漏洞可能有多种关键点。例如,缓冲区错误漏洞可能对应以下关键点: 库/API 函数调用、数组和指针。此外,在多种类型的漏洞中可能存在相同的关键点。例如,两个缓冲区错误资源管理错误漏洞可能包含库/API 函数调用的关键点。精确地定义关键点的启发式概念超出了本文的研究范围,成为未来研究的一个有趣问题; 我们专注于使用这个启发式概念作为 “镜头”,使用深度学习来学习漏洞模式。
代码片段可通过数据流或控制流分析程序生成,有一些算法和商业产品(如Checkmarx)。这些代码片段不一定是连续的代码行,而是语义上有关联的代码组成的。对每个代码片段标记是否脆弱,
网络的检测:给定程序,进行切片,获得代码片段,网路输出哪些片段是脆弱的,它们的下标会指引漏洞位置。
前向切片和后向切片:程序切成小片段的方法,对于一个库API函数,每个参数生成一个函数切片,然后将这些函数切片组合成代码片段,
等长输入处理:向量小于定长时,如果代码片段是从后向切片生成的,或者通过组合多个后向切片生成的,我们在向量的开头填充零; 否则,我们将零填充到向量的末尾。
向量大于定长时,如果代码片段是从后向切片生成的,或通过组合多个向后切片生成,我们删除向量的开始部分; 否则,我们删除向量的结束部分。
TP 是正确检测到漏洞的样本数,FP 是检测到错误漏洞的样本数,FN 是未检测到真正漏洞的样本数, TN 是没有漏洞未检测到的样本数。假阳性率=FP/(FP+TN),假阴性率FNR=FN/(TP+FN),真阳性率(召回率)TPR = TP/(TP+FN),
目前只处理C/C++程序,将来可能处理其他的。设计上只处理API相关漏洞
总的来讲,本工具使用了BLSTM,基于NIST和SARD所放出来的数据集,分类了有漏洞的代码片段和安全的代码片段,并依此来定位漏洞点,从而发现有漏洞的位置
VulDeePecker:基于深度学习的脆弱性检测系统的更多相关文章
- 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【一】如何配置caffe属性表
前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...
- 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【三】VGG网络进行特征提取
前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...
- 基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【二】人脸预处理
前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...
- 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【四】使用CUBLAS加速计算人脸向量的余弦距离
前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...
- #Deep Learning回顾#之基于深度学习的目标检测(阅读小结)
原文链接:https://www.52ml.net/20287.html 这篇博文主要讲了深度学习在目标检测中的发展. 博文首先介绍了传统的目标检测算法过程: 传统的目标检测一般使用滑动窗口的框架,主 ...
- 基于深度学习的中文语音识别系统框架(pluse)
目录 声学模型 GRU-CTC DFCNN DFSMN 语言模型 n-gram CBHG 数据集 本文搭建一个完整的中文语音识别系统,包括声学模型和语言模型,能够将输入的音频信号识别为汉字. 声学模型 ...
- 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN,Faster R-CNN
基于深度学习的目标检测技术演进:R-CNN.Fast R-CNN,Faster R-CNN object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.obj ...
- 基于深度学习的病毒检测技术无需沙箱环境,直接将样本文件转换为二维图片,进而应用改造后的卷积神经网络 Inception V4 进行训练和检测
话题 3: 基于深度学习的二进制恶意样本检测 分享主题:全球正在经历一场由科技驱动的数字化转型,传统技术已经不能适应病毒数量飞速增长的发展态势.而基于沙箱的检测方案无法满足 APT 攻击的检测需求,也 ...
- 一个基于深度学习回环检测模块的简单双目 SLAM 系统
转载请注明出处,谢谢 原创作者:Mingrui 原创链接:https://www.cnblogs.com/MingruiYu/p/12634631.html 写在前面 最近在搞本科毕设,关于基于深度学 ...
随机推荐
- 使用WSL连接Docker for Windows
在Windows下安装Docker for Windows Cotana搜索功能,打开Windows的Hype-v功能(注:会影响Virtualbox和Vmware的使用)并重启电脑. 从Docker ...
- asp.net图片上传及删除
方法一:UploadImage cetFU = new UploadImage(); if (cetFU.UpFile(FileUpload1, "teacher_picture" ...
- ADC0832的应用
ADC0832是美国国家半导体公司生产的一种8位逐次比较型CMOS双通道A-D转换器,采用5V电源电压供电,模拟电压输入范围为0~5V,内部时钟250KHz时转换速度为32微秒. 仿真图为: 程序为: ...
- JavaScript中的trim自定义
先直接贴代码 String.prototype.trimfy=function (val){ var demo=String(this); if(demo.indexOf(val)>=0){ i ...
- 浅谈java中的"=="和eqals区别
在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str2 = new String(&qu ...
- 跨域cors方法(jsonp,document.domain,document.name)及iframe性质
这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...
- 主成分分析PCA详解
转载请声明出处:http://blog.csdn.net/zhongkelee/article/details/44064401 一.PCA简介 1. 相关背景 上完陈恩红老师的<机器学习与知识 ...
- Kali Linux桥接模式配置DNS服务器
操作环境: 虚拟机操作系统: Kali Linux 2017.2 虚拟化软件: VMWare Workstation 14 pro 操作前的准备: 在设置里将Kali的上网模式设置成"桥接模 ...
- composer安装以及更新问题,配置中国镜像源。
配置国内镜像源 中国镜像源 https://pkg.phpcomposer.com/ composer 中文官网地址 http://www.phpcomposer.com/ 下载 Composer 安 ...
- 他学习一年Python找不到工作,大佬都说你别再学Python了!
引言: 都说,滴水穿石非一日之功.然而有些人即使奋斗一辈子也比不上别人一年,别人学习一年比不得你学习一个月.其中缘由,有些人看了大半辈子还没看明白. 即使Python这么火,为何你学习一年的Pytho ...