[发明专利]一种基于中间语言的软件漏洞智能检测与定位方法与系统有效
| 申请号: | 201910423893.3 | 申请日: | 2019-05-21 |
| 公开(公告)号: | CN110222512B | 公开(公告)日: | 2021-04-20 |
| 发明(设计)人: | 邹德清;朱亚威;李珍;金海;李道祥 | 申请(专利权)人: | 华中科技大学;深圳华中科技大学研究院 |
| 主分类号: | G06F21/57 | 分类号: | G06F21/57;G06F21/56;G06N3/04;G06N3/08 |
| 代理公司: | 华中科技大学专利中心 42201 | 代理人: | 李智;曹葆青 |
| 地址: | 430074 湖北*** | 国省代码: | 湖北;42 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 中间 语言 软件 漏洞 智能 检测 定位 方法 系统 | ||
1.一种基于中间语言的软件漏洞智能检测与定位方法,其特征在于,该方法包括以下步骤:
S1.分别将训练程序源码和目标源码转化为与各可疑漏洞元素对应的中间语言程序切片,所述中间语言程序切片包含与该可疑漏洞元素之间存在依赖关系的代码;
S2.若训练程序源码对应的中间语言程序切片包含已知漏洞代码,为其添加“有漏洞”标签并记录已知漏洞代码在该切片中的位置;否则,为其添加“无漏洞”标签;
S3.基于训练程序源码对应的中间语言程序切片集合,训练基于样本差异性的循环神经网络;
S4.使用训练好的基于样本差异性的循环神经网络,对目标程序源码对应的中间语言程序切片进行漏洞智能检测与定位;
步骤S3包括以下子步骤:
S301.对各中间语言程序切片进行预处理,将单词序列编码为向量;
S302.将该向量输入循环神经网络,读取该循环神经网络顶层输出序列;
S303.基于该向量的标签类型和漏洞位置,生成掩码对角矩阵;
S304.掩码对角矩阵和顶层输出序列相乘,得到基于样本差异性的循环神经网络的输出序列,输出序列中预设数量的最大值的均值即为预测结果。
2.如权利要求1所述的智能检测与定位方法,其特征在于,步骤S1包括以下子步骤:
S101.根据语法特征,从程序源码中提取可疑漏洞元素;
S102.根据所述可疑漏洞元素,从程序源码编译得到的中间语言文件中提取与所述可疑漏洞元素对应的中间语言程序切片;
S103.根据函数执行顺序调整中间语言程序切片中的代码顺序。
3.如权利要求1或2所述的智能检测与定位方法,其特征在于,可疑漏洞元素是指API调用类型元素和指针类型元素。
4.如权利要求1或2所述的智能检测与定位方法,其特征在于,所述依赖关系包括控制依赖关系和数据依赖关系。
5.如权利要求1所述的智能检测与定位方法,其特征在于,所述预处理包括:将中间语言程序切片分词并除去非ASCII字符;将每个用户自定义变量名、自定义函数名分别映射为变量符号名称和函数符号名称。
6.如权利要求1所述的智能检测与定位方法,其特征在于,所述基于该向量的标签类型和漏洞位置,生成掩码对角矩阵,具体如下:
对于有漏洞切片而言,掩码对角矩阵Mn*n在对应漏洞行位置的对角元素λm为1,其他元素为0;对于无漏洞切片而言,掩码对角矩阵Mn*n为单位矩阵,n为切片的长度。
7.如权利要求1所述的智能检测与定位方法,其特征在于,步骤S4具体为:
将目标源码对应的中间语言程序切片预处理后转成向量,输入训练好的基于样本差异性的循环神经网络,得到循环神经网络顶层的输出序列之后,对序列中的各个维度的值按照其对应的切片语句行进行划分,再从每一行对应的数值集合中提取限定数目的最大值后计算平均值,若该平均值超出阈值,则判定该行为漏洞行,否则判定为非漏洞行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学;深圳华中科技大学研究院,未经华中科技大学;深圳华中科技大学研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910423893.3/1.html,转载请声明来源钻瓜专利网。





