技术特征:
1.一种静态二进制漏洞挖掘方法,其特征在于,包括:解析可执行文件,获取可执行代码段以及数据段;依据解析结果获知可执行代码段,将可执行代码转化为汇编语言表述;对表述的汇编语言进行分析,将可执行代码重新划分成一个个函数,函数内划分成一个个代码块;进行代码块重组,根据计算机图论对各个代码块识别,并构建出这些块的嵌套关系;以块为单位构建中间码表述;将中间码用到的地址转化成变量形式表示;对所得到的变量从函数层面进行索引,挖掘执行漏洞。2.根据权利要求1所述的静态二进制漏洞挖掘方法,其特征在于:该可执行文件为elf格式的二进制文件。3.根据权利要求2所述的静态二进制漏洞挖掘方法,其特征在于:解析可执行文件的方法为:将文件按节表的信息,把文件内容加载到内存中,并获取可执行代码段以及各个数据段。4.根据权利要求1所述的静态二进制漏洞挖掘方法,其特征在于:将可执行代码转化为汇编语言表述的方法为:依据elf中e_machine的值获知上述可执行代码所对应的指令集平台,并启动和该平台相应的反汇编引擎,将这些二进制可执行代码转化为汇编语言表述。5.根据权利要求4所述的静态二进制漏洞挖掘方法,其特征在于:对表述的汇编语言进行分析的方法为:根据各指令集平台的约定规则进行函数头部/尾部识别。6.根据权利要求1所述的静态二进制漏洞挖掘方法,其特征在于:根据计算机图论对各个代码块识别的方法为:将各个代码块识别为if/else/switch/case块,并构建出这些块的嵌套关系。7.根据权利要求1-6中任一项所述的静态二进制漏洞挖掘方法,其特征在于:以块为单位构建中间码表述的方法为:将汇编表述翻译为一套自订的中间语言。8.根据权利要求7所述的静态二进制漏洞挖掘方法,其特征在于:对所得到的变量从函数层面进行索引的方法为:使用binql的查询语言撰写规则,将该获取用户输入的函数列为数据源,将带有命令执行功能的函数列为输出源;将该规则传入到binql引擎进行处理,当存在一个路径,这个不安全的用户输入会被送入命令执行类函数,那么binql就会告警,发现一个潜在的任意命令执行漏洞。9.根据权利要求8所述的静态二进制漏洞挖掘方法,其特征在于:binql引擎进行处理的方式为:binql查询函数调用不安全的函数的位置,以及函数的变量中存放的不安全的输入,以及这个变量被传送到的变量/函数参数,从而探测所有的路线。
技术总结
本发明公开了一种静态二进制漏洞挖掘方法,包括:解析可执行文件,获取可执行代码段以及数据段;依据解析结果获知可执行代码段,将可执行代码转化为汇编语言表述;对表述的汇编语言进行分析,将可执行代码重新划分成一个个函数,函数内划分成一个个代码块;进行代码块重组,根据计算机图论对各个代码块识别,并构建出这些块的嵌套关系;以块为单位构建中间码表述;将中间码用到的地址转化成变量形式表示;对所得到的变量从函数层面进行索引,挖掘执行漏洞;该静态二进制漏洞挖掘方法流程工序简单,节约时间,且成功率能够得到保证。且成功率能够得到保证。
技术研发人员:钱科铭
受保护的技术使用者:广州链安科技有限公司
技术研发日:2022.08.02
技术公布日:2022/10/20