[发明专利]二进制程序漏洞测试方法、装置及可读存储介质有效
申请号: | 202010397145.5 | 申请日: | 2020-05-12 |
公开(公告)号: | CN111581106B | 公开(公告)日: | 2023-05-23 |
发明(设计)人: | 席泽生;张波;马媛媛;邵志鹏;孙歆;管小娟;周诚;陈牧;陈璐;李尼格;戴造建;李勇 | 申请(专利权)人: | 全球能源互联网研究院有限公司;国家电网有限公司;国网浙江省电力有限公司;南京理工大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F21/57 |
代理公司: | 北京三聚阳光知识产权代理有限公司 11250 | 代理人: | 李博洋 |
地址: | 102209 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 二进制 程序 漏洞 测试 方法 装置 可读 存储 介质 | ||
本发明公开了一种二进制程序漏洞测试方法、装置及可读存储介质。该方法包括:对目标二进制程序进行插桩处理并生成插桩信息一致的LLVM位码和可执行文件;相互嵌套执行对可执行文件进行模糊测试及对LLVM位码进行符号执行的过程,通过模糊测试,生成测试用例并更新覆盖信息;通过符号执行,搜索程序执行树,当根据覆盖信息发现程序执行中有分支未被覆盖时,生成相应的测试用例并加入到测试用例集合中;通过模糊测试,监控测试用例集合,当有新的测试用例时,读取新的测试用例并加入到模糊测试的测试用例队列中,并基于新的测试用例,继续探索分支后面的分支,生成测试用例并更新覆盖信息;当检测到符合终止条件时,结束漏洞测试过程。
技术领域
本发明涉及电力信息安全技术领域,具体涉及一种二进制程序漏洞测试方法、装置及可读存储介质。
背景技术
现阶段,面向源代码的应用漏洞挖掘技术已经有了显著的发展。然而,面向源代码的应用漏洞挖掘也存在一些不足,由于应用的开发使用的都是高级语言(C语言、Java等),在实际运行时都将被编译成二进制代码,在编译、链接的过程中可能由于设置不当等多种原因引入漏洞,使得这些新引入的漏洞难以被检测。而面向程序的漏洞挖掘具有语言无关性且不需要程序源代码,同时也不需要进行编译和链接,可以直接被执行,因此对程序开展漏洞挖掘能够发现面向源代码的漏洞挖掘难以发现的漏洞。面向程序的漏洞挖掘由于接触的是计算机底层语言,对于挖掘人员的技术要求高,整体挖掘难度较大。
目前,程序漏洞挖掘效率低、难度大的原因,主要是因为在挖掘程序时,由于缺乏对于漏洞存在位置的预知,因此依赖于尽可能多的覆盖二进制代码的方式来发现漏洞,需要耗费大量的时间来探索程序中的各条路径,对于何时能够发现漏洞存在很大的随机性。
发明内容
有鉴于此,本发明实施例提供了一种二进制程序漏洞测试方法、装置及可读存储介质,以解决程序漏洞挖掘效率低、难度大的问题。
根据第一方面,本发明实施例提供了一种二进制程序漏洞测试方法,包括以下步骤:对目标二进制程序进行插桩处理并生成插桩信息一致的LLVM位码和可执行文件;相互嵌套执行对所述可执行文件进行模糊测试及对所述LLVM位码进行符号执行的过程,其中,通过模糊测试,生成测试用例并更新覆盖信息;通过符号执行,搜索程序执行树,当根据所述覆盖信息发现所述程序执行中有分支未被覆盖时,生成相应的测试用例并加入到测试用例集合中;通过模糊测试,监控所述测试用例集合,当有新的测试用例时,读取新的测试用例并加入到模糊测试的测试用例队列中,并基于新的测试用例,继续探索所述分支后面的分支,生成测试用例并更新覆盖信息;当检测到符合终止条件时,结束漏洞测试过程。
通过模糊测试探索程序执行树中的多个易覆盖的以及较深位置的分支,通过符号执行来系统性的搜索执行树,以尽可能的覆盖模糊测试未覆盖到的分支。实现对于二进制程序中漏洞更深层的测试,并提升漏洞的发现效率。
结合第一方面,在第一方面第一实施方式中,生成插桩信息一致的LLVM位码和可执行文件,具体包括:对目标二进制程序先插桩并编译为LLVM位码;将所述LLVM位码编译为目标代码,生成object文件;将object文件链接为可执行文件。
最终模糊测试与符号执行同步覆盖信息,仅插桩一次,从而保证了LLVM位码与可执行代码的插桩信息保持一致。
结合第一方面,在第一方面第二实施方式中,在对目标二进制程序进行插桩处理并生成插桩信息一致的LLVM位码和可执行文件之后,还包括:清除插桩后的冗余指令,所述清除插桩后的冗余指令,包括:输入插桩处理后的LLVM位码;删除插桩处理引入的外部全局变量;在插桩处理后的LLVM位码中的每一个基本块中,删除插桩处理的额外代码;对每个基本块,解析插桩指令并得到随机插桩编号,删除插桩指令,并插入一条指令以保存插桩编号的值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于全球能源互联网研究院有限公司;国家电网有限公司;国网浙江省电力有限公司;南京理工大学,未经全球能源互联网研究院有限公司;国家电网有限公司;国网浙江省电力有限公司;南京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010397145.5/2.html,转载请声明来源钻瓜专利网。