【技术实现步骤摘要】
本专利技术涉及计算机应用
,特别涉及一种二进制程序漏洞挖掘方法和系统。
技术介绍
从漏洞挖掘对象来分,软件漏洞挖掘可以分为两类:一类是针对源代码的漏洞挖掘;另一类是针对二进制程序的漏洞挖掘。源代码漏洞挖掘的最大特点是:有丰富、完备的语义信息。所以,针对源代码的漏洞挖掘相对比较容易。一般采用静态分析的方法就可以检测出漏洞,且在静态分析时,由于有明确的程序执行路径,所以其通常有较高的代码覆盖率。然而源代码毕竟不是二进制程序,源代码层次的安全并不代表二进制程序的安全,两者之间的对应性无从验证,比如,源代码中不存在编译、链接过程中引入的漏洞。Linux系统下的符号链接漏洞就是在链接过程中引入的漏洞,该类漏洞在源代码中并不存在,却真实地存在于二进制程序中。另一方面,由于商业利益和软件产权保护等问题,很多时候安全工作者并不能拿到软件源代码,而只能针对二进制程序进行漏洞挖掘。所以,研究二进制程序的漏洞挖掘具有十分重要的意义。从语义信息上来说,二 ...
【技术保护点】
一种二进制程序漏洞挖掘方法,其特征在于,包括步骤:步骤A,采用反编译器IDA将二进制程序转化为汇编语言,并基于IDA进行汇编语言层次的静态分析得到函数流图;步骤B,通过中间语言平台BAP将所述汇编语言转化为BIL语言,并结合静态分析的分析结果对所述BIL语言进行Promela模型建模;步骤C,构建漏洞模型,并插入到所述Promela模型中;步骤D,引入外部C代码修补SPIN,并基于修补后的SPIN模拟执行所述Promela模型,检测漏洞;步骤E,输出检测结果和漏洞信息。
【技术特征摘要】
1.一种二进制程序漏洞挖掘方法,其特征在于,包括步骤:
步骤A,采用反编译器IDA将二进制程序转化为汇编语言,并基于IDA
进行汇编语言层次的静态分析得到函数流图;
步骤B,通过中间语言平台BAP将所述汇编语言转化为BIL语言,并结
合静态分析的分析结果对所述BIL语言进行Promela模型建模;
步骤C,构建漏洞模型,并插入到所述Promela模型中;
步骤D,引入外部C代码修补SPIN,并基于修补后的SPIN模拟执行所
述Promela模型,检测漏洞;
步骤E,输出检测结果和漏洞信息。
2.根据权利要求1所述的二进制程序漏洞挖掘方法,其特征在于,所述
步骤B中结合静态分析的分析结果对所述BIL语言进行Promela模型建模包
括步骤:
B1,依据静态分析得出的函数流图,对BIL代码进行程序切片切分成
BIL语句;
B2,进行从切分后得到的BIL语句到Promela语句的细粒度代码转化;
B3,将经过细粒度代码转化后的Promela语句构建、组装成Promela模
型。
3.根据权利要求2所述的二进制程序漏洞挖掘方法,其特征在于,所述
步骤B1包括步骤:
依据静态分析的函数流图,以sub函数为单位,将BIL代码切分成不同
函数片断;
对BIL代码中的汇编指令进行多维度匹配,将所述函数片断切分成指令
集;
对BIL语句的完备性进行检验,以将BIL指令集切分成BIL语句。
4.根据权利要求2所述的二进制程序漏洞挖掘方法,其特征在于,所述
\t步骤B2包括步骤:
预先对BIL语句的各种特征进行总结,并构建BIL语句的特征池将其置
于特征池中;
将待转化的BIL语句与所述特征池中的特征进行匹配;
将匹配后的BIL语句转化为符合Promela中嵌C语法的Promela语句。
5.根据权利要求1所述的二进制程序漏洞挖掘方法,其特征在于,所述
步骤C包括:
对已知的软件漏洞样本进行分析总结,抽象出漏洞特征,用Promela语
言描述漏洞特征,建立漏洞模型;
采用代码插桩技术,将所述漏洞模型插入到所述Promela模型中。
6.根据权利要求1所述的二进制程序漏洞挖掘方法,其特征在于,所述
步骤D中引入外部C代码修补SPIN包括步骤:
预先设置外部C代码,来构建执行所述Promela模型必要的系统资源、
维护临时状态、处理SPIN无法处理的BIL中的表达式和关键字以及处理BAP
无法解析的汇编指令;
所述步骤D中基于修补后的SPIN模拟执行所述Promela...
【专利技术属性】
技术研发人员:崔艳鹏,胡建伟,
申请(专利权)人:西安胡门网络技术有限公司,
类型:发明
国别省市:陕西;61
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。