[发明专利]深度学习梯度指导变异的软件安全漏洞检测方法及系统有效
申请号: | 202010839157.9 | 申请日: | 2020-08-19 |
公开(公告)号: | CN112069061B | 公开(公告)日: | 2021-08-20 |
发明(设计)人: | 陈红松;杜彦瑶 | 申请(专利权)人: | 北京科技大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F21/57;G06N3/08;G06N3/04 |
代理公司: | 北京市广友专利事务所有限责任公司 11237 | 代理人: | 张仲波 |
地址: | 100083*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 深度 学习 梯度 指导 变异 软件 安全漏洞 检测 方法 系统 | ||
1.一种深度学习梯度指导变异的软件安全漏洞检测方法,其特征在于,所述深度学习梯度指导变异的软件安全漏洞检测方法包括:
获取测试用例,并对获取的测试用例进行预处理,得到测试用例中最大测试用例的大小和每一测试用例在被测程序中的执行路径;其中,测试用例的大小指的是向量化后的测试用例的长度;
建立深度神经网络模型,所述深度神经网络模型包括输入层、输出层和位于所述输入层与输出层之间的多个隐藏层;其中,所述输入层的输入维度为所述最大测试用例的大小,所述输出层的输出神经元个数为所述执行路径的总数;
将测试用例向量化,并利用向量化后的测试用例训练深度神经网络模型;
基于训练好的深度神经网络模型进行梯度计算,生成梯度信息;
基于所述梯度信息对测试用例进行变异,并进行模糊测试,生成测试结果;
所述基于训练好的深度神经网络模型进行梯度计算,包括:
根据被测试程序分支总数按照预设比例随机选取输出层神经元个数m;
若当前为第一次执行梯度计算,则从初始输入的测试用例中随机选取m个测试用例存到第一数组和第二数组中;若当前不是第一次执行梯度计算,则从初始输入的测试用例中随机选取m个测试用例存到所述第一数组中,并从变异生成的测试用例中随机选取m个测试用例存到所述第二数组中;
每次计算梯度都从所述第一数组和第二数组中各选取一个组成第三数组;
通过模型获取所选取出的m个输出层神经元的损失,并计算m个输出层神经元的损失相对于所述第三数组对应的两个测试用例的梯度;
所述生成梯度信息,包括:
遍历m个输出层神经元,分别按照下式计算梯度值:
loss=y,seed=[a,b,...,n],
其中,n表示最大测试用例的大小,loss表示一个输出层神经元的损失值,seed表示一个向量化后的测试用例,grads表示输出层神经元的损失loss关于向量化后的测试用例seed的导数;
若是第一次执行,则将每个输出层神经元对所述第三数组中对应的两个测试用例进行梯度计算;将计算得到的梯度值根据其绝对值从大到小排序,并保存排序前梯度值对应的位置信息,最终得到一个2m*n的二维矩阵;若非第一次执行,则除了使用所述第三数组中对应的两个测试用例计算梯度之外,还会使用第三数组中对应的两个测试用例按照预设拼接规则进行拼接产生新的测试用例去计算梯度;将计算得到的梯度值根据其绝对值从大到小排序,并保存排序前梯度值对应的位置信息,最终得到一个3m*n的二维矩阵;最终将梯度值对应的位置信息、梯度值的正负以及计算梯度的测试用例的名称保存在梯度文件中;
所述基于所述梯度信息对测试用例进行变异,包括:
对所述梯度文件进行解析,每行数据都分为梯度值对应的位置、梯度符号和求取梯度的测试用例的名称三部分;
根据测试用例的名称获取到测试用例内容,将测试用例根据最大测试用例的大小分为多段,并分别对每一段进行变异;变异时在某一段中找到这段的梯度值对应的测试用例位置,将该位置的字节加1或者减1,之后作为变异之后的测试用例放入模糊测试队列中,以进行模糊测试,接着对下一段进行变异。
2.如权利要求1所述的深度学习梯度指导变异的软件安全漏洞检测方法,其特征在于,基于所述梯度信息对测试用例进行变异,并进行模糊测试,生成测试结果之后,所述方法还包括:基于变异生成的测试用例重新生成梯度信息。
3.如权利要求1所述的深度学习梯度指导变异的软件安全漏洞检测方法,其特征在于,所述对获取的测试用例进行预处理,包括:
随机打乱所获取的测试用例的顺序,获取最大测试用例的大小;
遍历所有测试用例,获取每一测试用例在被测程序中的执行路径;
将获取的执行路径的信息保存在一个二维数组中;其中,所述二维数组的低维表示测试用例名,高维表示对应测试用例的分支信息,将所述二维数组进行01表示,测试用例经过的路径标识为1,没有经过的路径标识为0;其中,所述分支信息表示测试用例经过各分支的概率;
对所述二维数组进行去重处理,经过相同路径的测试用例只保留一个。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京科技大学,未经北京科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010839157.9/1.html,转载请声明来源钻瓜专利网。