[发明专利]漏洞检测方法、装置、设备及存储介质在审
申请号: | 202110855058.4 | 申请日: | 2021-07-28 |
公开(公告)号: | CN113297584A | 公开(公告)日: | 2021-08-24 |
发明(设计)人: | 贾鹏;王炎;刘嘉勇 | 申请(专利权)人: | 四川大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06N3/04 |
代理公司: | 北京润泽恒知识产权代理有限公司 11319 | 代理人: | 王婷婷 |
地址: | 610065 四川*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 漏洞 检测 方法 装置 设备 存储 介质 | ||
本申请实施例提供一种漏洞检测方法、装置、设备及存储介质,涉及网络信息安全技术领域,所述方法包括:首先,将待检测程序的二进制代码反编译为伪代码。检测伪代码中的危险函数,接着以危险函数为切片点,提取与危险函数调用相关的切片代码,其次,将切片代码转换为向量表示,最后将向量化的切片代码作为输入,通过检测神经网络判断待检测程序是否包含漏洞。本申请的方法可用于跨架构、跨平台的二进制代码漏洞识别场景,在二进制代码级别上实现了对漏洞进行细粒度的检测,能够有效地实现自动化的特征提取,缓解不同编译选项以及补丁代码造成的高误报影响,拥有着极高的准确率和极低的误报率及漏报率。
技术领域
本申请实施例涉及网络信息安全技术领域,具体而言,涉及一种漏洞检测方法、装置、设备及存储介质。
背景技术
当前的网络攻击很多都是通过漏洞实现,因此漏洞发现成为了安全领域的一个重要研究方向。
由于在软件系统中存在大量的重用代码库或共享代码逻辑(例如,相似对象在不同用途中拥有相似的处理逻辑),因而在实际程序中广泛存在着彼此具有相似特征但未被发现的重复出现的漏洞。并且,许多开发人员在重用库时没有执行深入的安全分析以发现代码中的潜在漏洞。因此,重复的漏洞检测得到了广泛的普及,特别是随着漏洞可用性的增加。
对于现有的二进制代码克隆漏洞检测,主要分为基于模式匹配和基于代码相似性两种检测方法。基于模式匹配的方法需要专家提前定义的漏洞模式进行漏洞检测。基于代码相似性检测主要是提前构建好漏洞库,然后与未知的代码进行相似性比较,存在较高相似性则表示该代码存在漏洞,反之代码正常。但是,这些检测方法存在误报率/漏报率高、精度较低等缺点。
因此,本领域技术人员迫切需要一种误报率或漏报率低、检测精度高的新的检测方法。
发明内容
本申请实施例提供一种漏洞检测方法、装置、设备及存储介质,旨在解决以上至少一项技术问题。
本申请实施例第一方面提供一种漏洞检测方法,所述方法包括:
反编译待检测程序,得到所述待检测程序的伪代码;
检测所述伪代码中是否包含危险函数;
当包含危险函数时,提取所述危险函数的前向切片代码片段和后向切片代码片段;
组合所述前向切片代码片段和后向切片代码片段获得危险函数的完整切片代码;
将所述完整切片代码转换为向量表示;
将所述向量表示输入检测神经网络中进行检测,以检测所述待检测程序是否包含漏洞。
可选地,所述检测神经网络,包括BiGRU层、自注意力层、扁平化层、全连接层和激活层,所述检测神经网络是经过预先训练的。
可选地,所述提取所述危险函数的前向切片代码片段和后向切片代码片段,包括:
提取所述伪代码中每个函数的控制依赖图和数据依赖图,构建程序依赖图;
基于所述程序依赖图,分析危险函数调用的参数和返回值进行前向切片,获得前向切片代码片段;
基于所述程序依赖图,分析危险函数调用的参数和返回值进行后向切片,获得后向切片代码片段。
可选地,所述方法还包括:
去除伪代码中所有的非ASCII字符以及注释;
对变量名、函数名进行符号化处理。
本申请实施例第二方面提供一种漏洞检测装置,所述装置包括:
反编译模块,用于反编译待检测程序,得到所述待检测程序的伪代码;
危险函数确定模块,用于检测所述伪代码中是否包含危险函数;
切片模块,用于当包含危险函数时,提取所述危险函数的前向切片代码片段和后向切片代码片段;
切片代码组合模块,用于组合所述前向切片代码片段和后向切片代码片段获得危险函数的完整切片代码;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于四川大学,未经四川大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110855058.4/2.html,转载请声明来源钻瓜专利网。