基于代码属性图的web白盒模糊测试方法研究
作者单位:武汉大学
学位级别:硕士
导师姓名:赵磊
授予年度:2020年
学科分类:0839[工学-网络空间安全] 08[工学]
主 题:web漏洞挖掘 代码结构描述模型 白盒测试 模糊测试
摘 要:web安全漏洞是危害web系统安全重要原因,因此对web系统进行安全检测尤为重要。现有的web安全测试研究方向主要分为模糊测试以及白盒代码审计。然而现有的web模糊测试主要作为web系统发布后的一种黑盒或者灰盒的测试手段,其测试效果有限。而白盒代码审计依托大量的源码信息,取得的效果良好,但其核心技术符号执行需要消耗大量的时空资源。针对上述问题,本文认为web安全测试的效果以及时间需要取得平衡。因此,本文尝试设计一种基于代码结构描述模型的web白盒模糊测试工具。首先,针对现有web代码结构描述模型的存在的问题,设计web系统的代码结构描述模型代码属性图。而后,设计了基于代码属性图的web白盒模糊测试方法,将web系统的执行信息抽象为代码属性图中的路径信息,以引导模糊测试进程使其变异与筛选更具有针对性,并以此进行安全测试工作。本文的主要研究内容和创新点有以下三个方面:1)web代码结构描述模型研究web代码结构描述模型是白盒测试中一环,其作用是抽象出代码的结构以及语义关系。由于web场景较为复杂,传统的代码结构描述模型并不能对web系统的整体结构进行很好的抽象。因此本文首先对web场景的复杂性进行分析,并指出调用关系不可视是web场景复杂的主要原因。而后,基于调用关系设计出一种全新的代码结构描述方法代码属性图,将调用关系转化为图中的边结构,使其能够满足web复杂化场景中存在的调用关系的描述,以及web系统整体的结构关系的构造。2)基于代码属性图的web白盒模糊测试方法研究一般的黑盒或者灰盒web模糊测试方法采取的是没有引导信息的盲目变异,其无法通过许多的控制流分支,因此模糊测试的深度也停留在浅层。而将模糊测试与白盒信息结合后,白盒的代码结构描述模型可以提供给模糊测试模型丰富的语义、结构关系等信息,使得模糊测试深度更深。因此,本文基于具有丰富调用关系的代码属性图概念设计了白盒代码分析工作与黑盒模糊测试工作融合的web白盒模糊测试方法。首先,对web运行时信息进行感知与监控。其次,将运行时信息抽象为代码属性图中的路径信息输入黑盒,利用路径敏感的种子调度策略引导模糊测试种子的筛选过程,减少web模糊测试的盲目性,加快加深模糊测试进程。3)基于路径敏感的覆盖率导向模糊测试种子演化策略研究传统的模糊测试中的种子演化策略主要是基于函数距离、未探索分支的。这些策略主要强调对未知的子节点进行探索的能力,适用于软件安全领域。而在web安全测试中溢出、崩溃的情况较少,控制流分支路线差异较多,传统种子演化方法并不适用。本文基于web系统中控制流分支特性,设计了基于路径敏感的web模糊测试种子演化策略。首先通过定义变异前后路径间距离的计算方法,其次基于路径间距离定义了路径增益计算公式,最后通过计算种子间路径增益值对模糊测试种子进行调度,使得模糊测试方向能更加适应web系统。