[发明专利]一种指引二进制漏洞挖掘路径的方法及其应用有效
申请号: | 201911350827.4 | 申请日: | 2019-12-24 |
公开(公告)号: | CN111523121B | 公开(公告)日: | 2023-08-29 |
发明(设计)人: | 何金;赵迪;董阳;陈亮;张国强;李洁 | 申请(专利权)人: | 国网天津市电力公司;国家电网有限公司 |
主分类号: | G06F21/57 | 分类号: | G06F21/57 |
代理公司: | 天津创智睿诚知识产权代理有限公司 12251 | 代理人: | 李玲 |
地址: | 300010*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 指引 二进制 漏洞 挖掘 路径 方法 及其 应用 | ||
本发明公开了一种指引二进制漏洞挖掘路径的方法,主要包括:划分出基本块和片段、计算基本块的复杂度、计算片段的复杂度、计算路径的复杂度、结合漏洞存在因素计算路径的优先度几大步骤,所述漏洞存在因素包括不同漏洞类型的漏洞的对应代码出现频率和对应代码复杂度。通过融合基本块的复杂度、片段的复杂度、路径的复杂度并且结合漏洞存在因素,对漏洞挖掘的路径优先级做出定量计算。实现了对疑似漏洞的代码可达路径进行优先级排序,优先挖掘容易触发漏洞、危害更大、漏洞存在概率更大的路径,更快的发现漏洞。
技术领域
本发明涉及电力信息安全技术领域,特别是涉及一种指引二进制漏洞挖掘路径的方法及其应用。
背景技术
现阶段,面向源代码的应用漏洞挖掘技术已经有了显著的发展。国网公司对于应用上线前的安全渗透测试设有强制性要求,能够有效发现应用中存在的部分漏洞,提升了应用的安全性。
然而,面向源代码的应用漏洞挖掘也存在一些不足,由于应用的开发使用的都是高级语言(C语言、Java等),在实际运行时都将被编译成二进制代码,在编译、链接的过程中可能由于设置不当等多种原因引入漏洞,使得这些新引入的漏洞难以被检测。
面向二进制程序的漏洞挖掘具有语言无关性且不需要程序源代码,同时也不需要进行编译和链接,可以直接被执行,因此对二进制程序开展漏洞挖掘能够发现面向源代码的漏洞挖掘难以发现的漏洞。
然而,面向二进制程序的漏洞挖掘由于接触的是计算机底层语言,对于挖掘人员的技术要求高,整体挖掘难度较大。目前,公司红队中仅有部分高水品人员具有针对二进制程序的漏洞挖掘能力,且需要较长时间。而电网网络资产,诸如配电系统的应用大多为C/S架构(例如:配电用电网络安全监测系统),对于二进制程序的漏洞挖掘需求较大,现有依靠个别专业人员进行的手动挖掘难以在效率上满足。
分析产生上述面向二进制程序漏洞挖掘效率低、难度大的原因,主要是因为在挖掘二进制程序时,由于缺乏对于漏洞存在位置的预知,因此依赖于尽可能多的覆盖二进制代码的方式来发现漏洞,需要耗费大量的时间来探索程序中的各条路径,对于何时能够发现漏洞存在很大的随机性。
由于漏洞点所在基本块的可达路径可能有多条,每条代码路径触发漏洞的难易程度不一样,如果对所有的代码路径随机选择并进行漏洞挖掘,则可能需要经过很长时间才能挖掘到漏洞,由于漏洞挖掘需要的时间周期往往很长,越晚发现漏洞对于商业软件来说受到的损失越大。
发明内容
本发明的目的是针对现有技术中缺乏对于漏洞存在位置的预知,对于何时能够发现漏洞存在很大的随机性,而提供一种指引二进制漏洞挖掘路径的方法。
本发明的另一方面,提供上述指引二进制漏洞挖掘路径的方法在漏洞挖掘中的应用。
为实现本发明的目的所采用的技术方案是:
一种指引二进制漏洞挖掘路径的方法,包括下列步骤:
步骤1:对待挖掘漏洞的二进制程序逆向编译成可读形式,划分出基本块和片段(一个片段中包含一个或多个基本块);
步骤2:通过指令数量和指令类型计算基本块的复杂度;
步骤3:根据片段中包含的各基本块的复杂度以及基本块的数量按照层级加权累和计算片段的复杂度;
步骤4:通过路径经过的片段的复杂度和基本块的复杂度来计算路径的复杂度;
步骤5:根据步骤4计算的路径复杂度预测疑似漏洞点,根据疑似漏洞点所在路径的复杂度结合漏洞存在因素计算疑似漏洞点所在路径的优先度,所述漏洞存在因素包括不同漏洞类型的漏洞对应代码出现频率和对应代码复杂度。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国网天津市电力公司;国家电网有限公司,未经国网天津市电力公司;国家电网有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911350827.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:切换先行关联预备支持方法和系统
- 下一篇:移动设备上的三维环境中的导航