[发明专利]一种基于深度神经网络的二进制程序模糊测试方法及系统有效
申请号: | 202111428321.8 | 申请日: | 2021-11-29 |
公开(公告)号: | CN114064506B | 公开(公告)日: | 2023-04-04 |
发明(设计)人: | 牛伟纳;周孝笑;张小松;王天瑞;李杰;曹晟;陈瑞东 | 申请(专利权)人: | 电子科技大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F21/57;G06N3/08 |
代理公司: | 成都正煜知识产权代理事务所(普通合伙) 51312 | 代理人: | 徐金琼 |
地址: | 611731 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 深度 神经网络 二进制 程序 模糊 测试 方法 系统 | ||
1.一种基于深度神经网络的二进制程序模糊测试方法,其特征在于:包括离线模型训练和在线指导模糊测试;
离线模型训练:
S1、源代码抓取
抓取二进制程序数据集和相应的测试用例,其中,二进制程序数据集包括脆弱程序和安全程序,脆弱程序即指打补丁前的版本,安全程序即指打补丁后的版本;
S2、路径提取与标记
将测试用例作为输入执行相应的二进制程序,并提取执行路径,并对获得的执行路径进行标记,其中,执行路径的每条指令均以字节码形式记录;
S3、路径矢量化
执行词嵌入,即将包含指令字节码的、标记后的执行路径转换为矢量表示,转换后得到的路径向量会保留尽可能多的执行路径原始语义信息;
S4、神经网络模型训练
基于步骤S3得到的路径向量训练神经网络模型,得到能预测模糊处理过程中触发的看不见的执行路径是否为脆弱程序的预测模型;
在线指导模型测试:S5、执行程序并跟踪
用集成了预测模型的模糊器对目标程序进行模糊测试,模糊测试过程中实时跟踪得到控制流信息并进行解码,解码后得到代码分支覆盖信息的位图,其中,代码分支覆盖信息的位图中的代码分支是指目标程序的执行路径;
S6、恢复执行路径
基于表示代码分支覆盖信息的位图恢复目标程序的执行路径;
S7、路径矢量化
将目标程序的执行路径转换为路径向量;
最终,基于模糊器中的预测模型对目标程序的路径向量进行脆弱性预测,再根据预测结果对种子进行突变能量分配;
所述步骤S4的神经网络模型为带Attention层的双向长短期记忆的神经网络模型;
神经网络模型包括6层,第一层为输入层,第二层为嵌入层,用于将执行路径的指令序列中的所有元素映射到固定维向量;第三层和第四层是堆叠的双向连接的LSTM层,LSTM层包含双向形式的64个LSTM单元,用于学习更高级别的指令序列,第五层是Attention层,用于先计算每个时序的权重,再将所有时序的向量进行加权和作为特征向量,第六层为softmax输出层,用于对任务中的两个类别进行预测,即对安全程序或脆弱程序进行预测;
所述步骤S5是将种子输入模糊器执行目标程序,执行过程中,使用IntelPT捕获控制流信息存储在特定内存中,存储的同时,实时对控制流信息进行解码,得到代码分支覆盖信息的位图,其中,种子为初始的测试用例;
存储在特定内存中的控制流信息为数据包形式,包含TNT数据包、TIP数据包和 FUP数据包,其中,TNT数据包中的特定位可以指示是否在条件跳转中执行分支;TIP数据包记录间接跳转或传输指令的目标指令指针;FUP数据包则提供源IP地址,因为TIP数据包在这些事件中不起作用;
所述步骤S6的具体步骤为:
根据表示代码分支覆盖信息的位图显示当前执行的路径是否实现了新的代码分支的覆盖,若未实现,则说明未出现新的执行路径,若覆盖,首先,加载目标程序,并从主入口函数获得指令;
然后,根据当前指令类型获得下一条指令,并将其字节码添加到执行路径中,直到跟踪的最后一条指令为止,即恢复了执行路径,当前指令类型为以下几类:
如果当前指令是有条件的跳转,则下一条指令是根据TNT数据包确定的;
如果当前指令是间接跳转或转移,则根据TIP数据包获得下一条指令;
如果当前指令是无条件的直接跳转,则从指令中获得下一条指令;
如果该当前指令不是跳转指令,则根据当前指令的大小获得下一条指令;
基于离线模型训练和在线指导模糊测试得到的结果进行脆弱性预测,再根据预测结果进行突变能量分配的具体步骤为:
使用预测模型对路径向量进行脆弱性预测,再根据预测结果标记种子,标记后将其添加到种子队列中,其中,标记为高熵种子或为低熵种子;
从种子队列中获取种子后,判断是否为高熵种子,如果是高熵种子,则模糊器将优先为其分配突变能量;
设原始模糊器为种子
。
2.根据权利要求1所述的一种基于深度神经网络的二进制程序模糊测试方法,其特征在于:所述步骤S1从NIST SARD、GitHub和Exploit-DB三个数据源中抓取二进制程序和相应的测试用例。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111428321.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种脱墨清洗一体化装置及脱墨清洗方法
- 下一篇:一种物料抬升架