[发明专利]一种高效动态软件漏洞挖掘方法有效
申请号: | 201010171996.4 | 申请日: | 2010-05-07 |
公开(公告)号: | CN101853200A | 公开(公告)日: | 2010-10-06 |
发明(设计)人: | 王铁磊;李义春;韦韬;邹维;戴帅夫;张超;丁羽 | 申请(专利权)人: | 北京大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京君尚知识产权代理事务所(普通合伙) 11200 | 代理人: | 冯艺东 |
地址: | 100871 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 高效 动态 软件 漏洞 挖掘 方法 | ||
技术领域
本发明属于软件工程和信息安全领域,具体涉及一种高效的动态软件漏洞挖掘方法。
背景技术
计算机、网络通信及软件等信息技术的飞速发展与广泛应用,推动了现代社会向信息社会的迈进,而其中存在的大量漏洞和隐患也使得当前信息安全形势日益严峻,信息安全中的一个核心问题就是存在于计算机系统中的软件安全漏洞,恶意的攻击者可以利用这些安全漏洞提升权限,访问未授权资源,甚至破坏敏感数据。软件安全漏洞已经成为诸多系统安全问题的根源之一,因此如何发现软件中的安全漏洞至关重要。
模糊测试(Fuzzing),作为一种黑盒测试技术,是一种著名的软件安全漏洞动态挖掘技术。模糊测试以大量畸形数据作为目标程序输入,观测目标程序处理畸形数据时的表现,从而发掘目标程序内部潜在的缺陷或错误。模糊测试的工作流程包括以下几步:
1)按照一定规则产生一批畸形输入;
2)将畸形输入逐一送入目标软件进行处理,并监视软件是否会抛出异常;
3)记录软件产生的错误信息,如寄存器状态,栈状态等;
4)向测试人员发送异常信息,以便进一步鉴定这些错误是否能被利用。
在上述模糊测试(Fuzzing)技术中,如何生成畸形数据是影响模糊测试效率的关键因素。
很多模糊测试工具通常采用对正常输入进行随机修改的方法生成畸形数据。例如,Idefense公司的FileFuzz可以将正常文件的每一个字节依次替换为随机值或预定义的数值,进而生成畸形文件。但是,这样生成的畸形数据缺乏针对性,很难触发软件安全漏洞,导致模糊测试工具效率低下。
另外,一些模糊测试工具可以根据预定义的规则,自动生成畸形数据。但是这类模糊测试工具严重依赖于人工定义畸形数据的生成规则。对于复杂的数据格式,人工定义生成规则面临巨大的工作量,通常不可能完成;即使对于简单的数据格式,人工定义规则也很容易引入错误,导致生成的畸形数据无法触发安全漏洞。
发明内容
本发明的目的在于克服现有模糊测试技术中的不足,提供一种高效的软件漏洞挖掘方法
为表述方便,目标软件接收的各种类型的输入(包括文件、命令行参数、网络报文等)统称为输入数据。
为了实现本发明的目的,采用的技术方案概述如下:
一种高效动态软件漏洞挖掘方法,其步骤包括:
1)目标软件处理正常输入数据,并收集正常输入数据中传播进入系统函数参数、库函数参数的字节;
2)生成畸形数据;具体地,在正常输入数据中,修改传播进入系统函数、库函数的字节,生成畸形数据;
3)对目标软件测试;将生成的畸形数据输入至目标软件,如果目标软件处理这些畸形数据时异常,则生成漏洞报告。
进一步地,上述步骤1)收集正常输入数据中传播进入系统函数参数、库函数参数的字节的方法包括:
1.1)通过系统函数调用劫持技术(HOOK),劫持文件打开(例如UNIX系统里open()函数)、文件读取(例如UNIX系统里read()函数)、文件关闭(例如UNIX系统中close()函数),以及网络数据操作函数。根据操作系统不同以及对输入数据关注点不同,可以对需要劫持的函数范围适当修改,以达到最佳效果。
1.2)基于1.a)中工作,当目标程序将输入数据读入内存时,进一步地记录相应内存地址与输入数据之间的依赖关系。以每个字节在正常输入数据中的位置偏移标示该字节,并记录每个内存单元来源于哪些字节。
1.3)在程序执行过程中,跟踪输入数据的传播;特别地,采用动态代码插桩方法跟踪正常输入数据的传播,根据每条机器指令(例如mov、add、pop)的语义信息,在运行时刻跟踪、记录每个内存单元依赖于哪些输入字节。
1.4)调用系统函数或库函数时,检查相应参数是否依赖于输入数据。如果依赖,进一步输出相应参数依赖哪些输入字节。特别地,对于简单类型的参数(例如int,char类型),直接检查参数数值是否依赖输入数据;对于指针类型的数据(例如int*,char*类型),进一步检查指针所指向的内存单元是否依赖输入数据。对于其他复杂的函数参数,用户可根据先验知识和系统调用及库函数的原型声明,指定哪些系统调用和库函数需要检查以及相应的检查策略,以达最佳效果。
所述正常输入数据包括文件、命令行参数和网络报文。
进一步地,上述步骤2)包括但不限于以下几种修改模式:
2.1)对每个可以传入系统调用、库函数的字节逐一替换为随机值;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010171996.4/2.html,转载请声明来源钻瓜专利网。