[发明专利]一种基于集成神经网络的源代码漏洞检测方法有效
| 申请号: | 201510236687.3 | 申请日: | 2015-05-11 | 
| 公开(公告)号: | CN104809069A | 公开(公告)日: | 2015-07-29 | 
| 发明(设计)人: | 周诚;张涛;马媛媛;楚杰;汪晨;时坚;李伟伟;张波;黄秀丽;费稼轩 | 申请(专利权)人: | 中国电力科学研究院;国网智能电网研究院;国家电网公司;国网安徽省电力公司 | 
| 主分类号: | G06F11/36 | 分类号: | G06F11/36;G06N3/02 | 
| 代理公司: | 北京安博达知识产权代理有限公司 11271 | 代理人: | 徐国文 | 
| 地址: | 100192 北*** | 国省代码: | 北京;11 | 
| 权利要求书: | 查看更多 | 说明书: | 查看更多 | 
| 摘要: | |||
| 搜索关键词: | 一种 基于 集成 神经网络 源代码 漏洞 检测 方法 | ||
技术领域
本发明涉及一种检测方法,具体涉及一种基于集成神经网络的源代码漏洞检测方法。
背景技术
随着黑客攻击事件数量的不断上升,蠕虫在Internet上的泛滥,信息安全逐渐成为人们眼中的焦点。信息安全中的一个核心问题就是存在于计算机系统中的软件安全漏洞,恶意的攻击者可以利用这些安全漏洞提升权限,访问未授权资源,甚至破坏敏感数据。
软件安全漏洞造成的重大损失以及还在不断增长的漏洞数量使人们已经开始深刻认识到软件安全的重要性。从上世纪90年代,信息安全学者,计算机安全研究人员就开始了对计算机安全漏洞的研究,最为人熟知的就是缓冲区溢出攻击漏洞。但研究的范围主要包括如何监测和防御恶意攻击者利用安全漏洞进行攻击,由此开发出来入侵检测系统(IDS)和入侵防御系统(IPS)等等商业产品,以及针对缓冲区溢出的堆和栈,不可执行堆栈等等技术。直到本世纪初,研究人员才把研究的重点放在如何发现安全漏洞,更进一步说,如何借助自动化或半自动化的辅助工具使软件开发人员在开发阶段就发现软件漏洞己经成为研究的重点。这类辅助工具的开发需要大量使用诸如类型分析,指针别名分析,模型匹配,代码植入和动态监测等程序分析技术。比起早期用于编译器优化和软件测试错误查找中的标准程序分析技术,软件安全漏洞的检测要求更加复杂。如何从问题的根源上解决软件安全问题,如何才能更有效的利用这些分析技术来进行安全漏洞查找已经成为具有实用价值的课题和方向。
发明内容
为了克服上述现有技术的不足,本发明提供一种基于集成神经网络的源代码漏洞检测方法,较为有效地应用于源代码的漏洞检测,采取如下技术方案:
本发明提供一种基于集成神经网络的源代码漏洞检测方法,所述方法包括以下步骤:
步骤1:建立漏洞检测模型;
步骤2:基于漏洞检测模型进行源代码漏洞检测。
所述步骤1包括以下步骤:
步骤1-1:给定训练集;
步骤1-2:对源代码进行预处理,之后基于N-gram算法进行特征提取;
步骤1-3:基于提取的特征,采用ReliefF算法进行特征选取;
步骤1-4:基于集成神经网络进行源代码漏洞检测学习。
所述步骤1-1中,给定经过人工分类的训练集D={d1,d2,…,di,…,dn},其中di表示第i个训练样本,即第i个源代码;n表示训练样本个数,即源代码个数。
所述步骤1-2包括以下步骤:
步骤1-2-1:对每个源代码进行预处理,包括数据规整、去噪和剔除垃圾数据,预处理后的训练样本数用m表示;
步骤1-2-2:基于N-gram算法对源代码进行划分,生成对应的N-gram集合,完成特征提取。
所述步骤1-3具体包括以下步骤:
步骤1-3-1:初始化每个特征属性A的特征权值W[A],使得W[A]=0;
步骤1-3-2:统计源代码类别中训练样本个数,为每个类别C分配kc值;
步骤1-3-3:随机提取训练样本R,并找到与训练样本R最近邻的kc个同类别的训练样本Hj;
步骤1-3-4:从提取的训练样本R的不同类别的训练样本中均找出kc个近邻训练样本Mj(C);
步骤1-3-5:对每个特征属性A,按照以下公式更新其特征权值:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国电力科学研究院;国网智能电网研究院;国家电网公司;国网安徽省电力公司,未经中国电力科学研究院;国网智能电网研究院;国家电网公司;国网安徽省电力公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510236687.3/2.html,转载请声明来源钻瓜专利网。





