收藏本站
收藏 | 手机打开
二维码
手机客户端打开本文

基于符号执行的二进制代码动态污点分析

王卓  
【摘要】:随着计算机在社会应用的日益增多,计算机安全逐渐成为关注的焦点。人们提出了许多技术来发掘软件的漏洞,污点分析和符号执行是其中两种有效的方法。污点分析是一种数据流分析方法,它将来自于可疑渠道的信息标记为“被污染”,并通过分析每条指令确定哪些数据被可疑数据影响,将这些数据也标记为“被污染”,最后通过一定的检测规则查找软件漏洞。符号执行是采用符号对变量进行表示,并用符号代替实际的数值进行程序执行的方法。 目前存在的污点分析工具存在三个问题,其一是存在检测盲点,即无法检测仅仅改变了程序的某些数据,而并没有改变控制流的漏洞;其二是无法进行位分析,即无法判断输入数据的哪些字节触发了系统漏洞;其三是路径覆盖率低,仅能对一条路径进行分析,而不能指导生成可以测试其他路径的测试用例。 本文根据目前污点分析技术存在的问题,提出了采用第三种污染状态“受控污染”来丰富检测手段的方案,并通过对漏洞特征的总结,提出了六种漏洞检测规则,解决了检测盲区的问题,并且可以发现潜在的漏洞。针对污点分析固有的无法进行位分析和路径覆盖率低的缺点,本文提出了借助符号执行的完善方法:为每个内存字节分配符号,并记录内存地址与符号之前的对应关系以便进行字节级的数据跟踪;记录每次执行的路径条件,根据路径条件指导可以选择其他路径的测试用例生成。 为了验证所提出的针对污点分析的完善技术是否有效,本文提出了基于上文原理的动态污点分析工具DsVD(Dynamic Software Vulnerability Detector)和它的符号执行扩展版本DsVD-SE(Dynamic Software Vulnerability Detector– Symbolic Execution)。DsVD采用三种污染状态及新归纳的六条检测规则来发掘漏洞。DsVD-SE采用了符号化的内存污点管理模型,从而可以进行细粒度的分析,具体确定是输入的哪些字节触发了软件的漏洞,同时可以记录路径信息,指导测试用例生成。为了保证DsVD和DsVD-SE的运行效率,本文采用了两种优化方法,无关API过滤和基本块处理,来减少系统开销。 实验表明,DsVD和DsVD-SE可以有效的检测软件漏洞,通过对五款现实存在的软件的检测,我们共发现63个漏洞。受益于两种优化方法,加载DsVD后目标软件运行时间仅增多3.1倍,相对于其他工具,如LIFT3.6倍,TaintCheck约20倍,DsVD具有最小的系统开销。DsVD-SE的系统开销为17.34倍,慢于LIFT而优于Taintcheck。


知网文化
【相似文献】
中国期刊全文数据库 前20条
1 周孔伟,蔡经球;符号执行—介于程序验证和程序调试之间的方法[J];小型微型计算机系统;1982年04期
2 高仲仪 ,梁霞;符号执行和测试数据辅助生成的实验系统[J];北京航空航天大学学报;1988年04期
3 刘宗田,朱逸芬;符号执行技术在68000C反编译程序中的应用[J];计算机学报;1988年10期
4 翁子盛;王宝生;林锦滨;;程序符号执行中的数组分析[J];长江大学学报(自然科学版)理工卷;2010年01期
5 卢虹,徐宝文;一种Web应用的状态测试方法[J];计算机工程与应用;2002年02期
6 洪宇;陈光;于见平;韩柯;;处理符号执行中数组元素混淆的一种新方法[J];计算机应用;2005年S1期
7 崔宝江;国鹏飞;王建新;;基于符号执行与实际执行的二进制代码执行路径分析[J];清华大学学报(自然科学版);2009年S2期
8 史桂红;一种基于对象状态的软件测试方法[J];电脑与信息技术;2005年02期
9 娄坚波;刘久富;李金奎;王伟;;基于条件值的C/C++预处理测试算法[J];计算机工程;2011年14期
10 林锦滨;蒋凡;;错误模式和程序切片的软件漏洞检测[J];信息安全与通信保密;2009年11期
11 林锦滨;蒋凡;;执行路径建模进程化代码分析[J];计算机工程;2010年09期
12 陈福安,刘宗田,李力;8086 C语言反编译系统的设计及实现技术[J];小型微型计算机系统;1993年04期
13 林梦香;陈胤立;陈睿;周刚;;基于懒替换的C符号执行[J];北京航空航天大学学报;2009年06期
14 代子营;毛晓光;马晓东;王瑞;;基于抽象符号表的内存模型[J];计算机工程与科学;2011年06期
15 时志伟;李小军;;基于信息流分析的源代码漏洞挖掘技术研究[J];信息网络安全;2011年11期
16 刘磊,刘英,张晓东;面向Java操作的可交换性检测技术[J];吉林大学自然科学学报;2000年01期
17 张利云;薛质;李建华;;模块二进制木马分析方法的研究与实现[J];信息安全与通信保密;2006年11期
18 杨飏;张焕国;王后珍;;一种C程序内存访问缺陷自动化检测方法研究[J];计算机科学;2010年06期
19 易宇;金然;;基于符号执行的内核级Rootkit静态检测[J];计算机工程与设计;2006年16期
20 张健;;精确的程序静态分析[J];计算机学报;2008年09期
中国重要会议论文全文数据库 前6条
1 林锦滨;张晓菲;刘晖;;符号执行技术研究[A];全国计算机安全学术交流会论文集(第二十四卷)[C];2009年
2 万琳;张威;马雪雁;陈曼青;;基于路径的测试用例自动生成技术[A];第十届全国容错计算学术会议论文集[C];2003年
3 高海昌;冯博琴;侯芸;;测试数据自动生成的研究进展[A];2006中国控制与决策学术年会论文集[C];2006年
4 王建东;曾庆凯;;整数漏洞现状研究[A];2011年全国通信安全学术会议论文集[C];2011年
5 刘莉;金大海;宫云战;;区间运算中提高循环处理精度的研究[A];第十四届全国容错计算学术会议(CFTC'2011)论文集[C];2011年
6 庄棪;;浅析基于Rootkit技术的手机安全[A];四川省通信学会2011年学术年会论文集[C];2011年
中国博士学位论文全文数据库 前10条
1 陈厅;动态程序分析技术在软件安全领域的研究[D];电子科技大学;2013年
2 曹琰;面向软件脆弱性分析的并行符号执行技术研究[D];解放军信息工程大学;2013年
3 范文庆;分段符号执行模型及其环境交互问题研究[D];北京邮电大学;2010年
4 程绍银;需求驱动的软件安全缺陷自动测试生成[D];中国科学技术大学;2009年
5 高鹰;代码迷惑及其语义研究[D];中国科学技术大学;2007年
6 王嘉捷;多重循环程序内存访问越界增量检测方法[D];中国科学技术大学;2009年
7 李仁见;堆操作程序分析验证技术研究[D];国防科学技术大学;2011年
8 李飞宇;基于内存建模的测试数据自动生成方法研究[D];北京邮电大学;2013年
9 陈勇;面向嵌入式系统绿色需求的编译技术研究[D];武汉大学;2013年
10 柳溪;软件服务业务流程设计的若干问题研究[D];南京大学;2012年
中国硕士学位论文全文数据库 前10条
1 肖戌;基于符号执行的软件脆弱性分析技术研究[D];电子科技大学;2011年
2 倪康奇;基于二进制代码的动态符号执行工具[D];上海交通大学;2011年
3 闫晓伟;基于符号执行的软件脆弱性测试技术[D];电子科技大学;2012年
4 邵巳航;基于过程间动态符号执行的自动测试工具设计与实现[D];华东师范大学;2014年
5 王卓;基于符号执行的二进制代码动态污点分析[D];上海交通大学;2011年
6 吉小丽;动态符号执行的性能优化[D];电子科技大学;2013年
7 国鹏飞;基于动态符号执行的二进制代码漏洞挖掘系统研究与设计[D];北京邮电大学;2011年
8 蒋思远;基于动态符号执行的测试工具设计与实现[D];华东师范大学;2012年
9 余啸;基于动态符号执行的并行化测试数据自动生成[D];华东师范大学;2011年
10 娄坚波;面向宿主的嵌入式软件符号执行技术研究与实现[D];南京航空航天大学;2011年
 快捷付款方式  订购知网充值卡  订购热线  帮助中心
  • 400-819-9993
  • 010-62982499
  • 010-62783978