模糊测试应用于二进制程序的漏洞发现方法研究

来源 :厦门大学 | 被引量 : 0次 | 上传用户:darkak
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
程序漏洞是网络安全的根源问题之一,如何快速发现程序漏洞是目前安全领域的一个研究热点,特别是基于二进制程序的漏洞发现技术研究由于其广泛的适用性和难度更是目前研究的前沿领域。目前,已有的程序发现技术包括静态分析技术、动态分析技术和渗透测试技术,其中动态分析技术中的模糊测试方法因为其高性价比:简单的思想、出色的漏洞发现数量,成为安全研究人员和黑客使用最广泛的漏洞发现技术。然而,传统的模糊测试存在两个关键问题:(1)生成的测试数据质量不高,表现为测试深度和广度不够(2)漏洞确认阶段需要大量的人工参与。针对模糊测试的数据生成问题,本文将其归约为逻辑领域的公式可满足性问题,使用动态符号执行作为归约实现手段。本文基于中间语言BIL介绍了动态符号执行用于测试数据生成的基本理论和作为动态符号执行重要性能优化措施的动态污点分析理论,包括符号引入、符号演算、搜索策略、SMT求解器、污点分析策略和主要的难题。在此基础上,本文设计并实现了一个离线动态符号执行引擎DSEE, DSEE首先将主体是汇编指令序列的轨迹翻译成BIL程序,然后基于BIL程序做符号执行,其间,由原是系统调用帧和污点引入帧翻译过来的BIL语句引入初始符号变量,依据BIL语句和表达式操作语义进行符号演算,生成由BIL表达式描述的路径公式,之后该公式被翻译成SMT求解器Z3支持的SMT2格式并被求解,该解将作为一个新的输入被继续测试,而关于下一个测试输入的选择问题则使用了改进的分代搜索算法。另外,本文还设计并实现了一个带污点分析的轨迹记录引擎TLET,设计内容包括:参照动画模型的轨迹模型设计、随机读取轨迹帧的序列化容器设计、会引入污点的linux系统调用建模、基于数据依赖的污点传播规则建模。本文对DSEE和TLET进行了实验测试和验证,结果显示,两者能达到之前的设计要求。针对漏洞确认问题,本文通过将栈溢出漏洞利用生成归约为逻辑公式可满足性求解实现了栈溢出漏洞的自动确认和利用自动生成。本文的主要贡献有:(1)设计实现了离线符号执行引擎DSEE和作为其基础的轨迹记录引擎TLET,实验证明两者能正确工作,这两者将是该领域后续继续研究工作的平台基础;(2)改进了分代搜索算法,加入启发因子,以期使搜索尽快朝高代码覆盖率方向前进,测试分析显示,改进后的算法能达到预期的目的;(3)使用动态污点分析和死码移除作为DSEE的性能优化措施,结果显示,能很大程度上减少需要符号执行的BIL语句数量,从而很大程度上减小了路径公式尺寸,是有效的优化措施;(4)将栈溢出漏洞归约为逻辑公式的可满足性问题,使用DSEE实现了该类漏洞的利用自动生成。
其他文献
研究抑郁症患者和正常人在不同的情绪认知任务下大脑功能网络是否存在差异。采用了相位同步的方法以衡量不同脑区间的连接强度,运用网络参数全局和局部效率来刻画大脑的小世
蛋白PopW是从青枯劳尔氏菌ZJ3721中鉴定得到的一种新的Harpin蛋白,为降低成本,我们对诱导剂IPTG的浓度进行了筛选,结果表明,诱导PopW蛋白表达的最适IPTG浓度为0.01 mmol/L。
<正> 发酵面团制品是面制品中的一大类,它组织膨松,吃口暄软,易于消化吸收.
手语是由手形、手臂运动并辅之以表情、唇动以及其它体势来表达思想的人体语言,具有规范的语法、明确的语义和完备的词汇体系。手语所含信息量丰富,与口头语及书面语等具有同
<正>说起荷兰美食,一般人或许会先皱着眉头,脑海里所浮现的却依然只有乳酪。也难怪大家会有这样的印象,深受喀尔文教派影响的荷兰人,永远相信工作为先,享乐其次,就连荷兰人自
期刊
开餐馆似乎是许多人发家的第一步。从欧美国家到非洲再回眸国内,多少华人以开中餐馆作为迈入商界的进阶石,其中有成功者,亦不乏苦苦支撑着的经营者,更有后来者勇敢地,义无反
本文在生态学、政治系统论等跨学科研究的基础上,提出一项新的政治分析框架——政治生态系统理论,界定了政治生态主体、政治生态位、生态链条、生态因子等概念,研究了政治生
食品安全牵动着每个人的心,不安全食品召回对消费者和企业的意义重大。调查显示消费者对食品安全状况的不满意在逐步增强,仅次于对物价水平的不满意,食品安全让消费者越来越担忧
当代,随着焊接所涉及的科学技术领域不断发展,当前社会对焊接生产效率,焊接产品质量和质量一致性要求不断提高,以及焊接产品生产中,人力成本越来越高和将人从恶劣的环境中解脱出来
随着科技的不断发展和信息时代的到来,我国网络游戏行业在短短的20年内保持了20%的年复合增长。网络游戏行业是一种将故事情节、动画、音乐、美术、计算机编程等的全方位多种