一种基于简易符号执行的二进制代码漏洞挖掘方法技术

技术编号:8131031 阅读:592 留言:0更新日期:2012-12-27 03:11
本发明专利技术公开了一种基于简易符号执行的二进制代码漏洞挖掘方法,它有五大步骤;首先把二进制代码通过二进制代码翻译组件,转化为一种静态单赋值的中间语言。然后使用反汇编引擎对二进制代码进行反汇编,提取其中的控制流信息,基于该控制流信息在中间语言上进行静态的符号执行,在符号执行过程中需确认输入点,把输入向量转化为符号,并对调用函数进行建模。当符号执行过程完成后可得到依赖输入向量的中间语言的语句集合,对该集合中的语句简化后,使用安全属性规则验证后生成漏洞确认报告。

【技术实现步骤摘要】

本专利技术涉及到,可以检测由输入不当导致的漏洞。可适用于多平台,且只对二进制代码进行静态解释,不需要实际执行,因此较高效。使用其中一种安全属性规则成功地验证了所有近年来瑞星、超级巡警、诺顿等杀毒软件驱动程序中报的ioctrol例程中的漏洞。适用于软件测试、漏洞挖掘等领域。
技术介绍
传统软件漏洞挖掘方法一般使用黑盒Fuzz测试,通过构造一组随机输入传递给程序,直到程序崩溃。这种方法较盲目,既无法获知哪些程序路径已经被执行,也无法有导 向性地构造输入,使程序可执行到未被遍历过的路径。测试过程中的大部分时间都在重复执行着同样的路径,使测试时间成本过高。源码级的测试可以帮助程序员发现很多由于代码风格或错误的语法语义引起的BUG,但存在几个缺点1)无法发现程序运行时的BUG ;2)在很多情况下,源码并不是可及的;3)需对每一类程序设计语言分别考虑。对于软件测试、漏洞挖掘等领域,往往需要考虑代码覆盖问题,尽可能多地覆盖二进制代码的执行路径,可以提高发现程序代码中BUG的可能性。然而,由于二进制代码中的分支数量非常多,使获取某一执行路径所对应的输入成为最难的研究问题之一。为解决这个问题,学术界本文档来自技高网...

【技术保护点】
一种基于简易符号执行的二进制代码漏洞挖掘方法,其特征在于:该方法包括以下步骤:步骤A.实现反汇编引擎,提取二进制代码中的函数信息,并分析函数内的控制流信息;步骤B.实现二进制代码翻译组件,将二进制代码转化成中间语言;步骤C.确认输入点即函数的参数及子函数调用,对函数中调用的子函数进行建模;步骤D.根据步骤A,B,C中产生的结果进行符号执行,把输入作为符号,静态解释中间语言并更新每条指令执行的上下文,对于分支,需要保存当前上下文,遍历一条路径后,再恢复保存的上下文,继续执行下一条路径;步骤E.当执行到函数结束时,符号执行过程产生一些与输入相关的表达式集合,根据安全属性规则,简化、分析这些表达式最...

【技术特征摘要】

【专利技术属性】
技术研发人员:马金鑫李舟军忽朝俭
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1