论文部分内容阅读
随着信息技术的发展,信息技术在人类经济社会中发挥着越来越大的作用。但信息技术是一柄“双刃剑”,它一方面促进了信息的共享与社会的发展进步,另一方面,它也给人类社会带来不容忽视的信息安全问题。来自国家互联网应急响应中心的报告显示,我国电子商务、金融机构以及第三方在线支付网站均面临网络钓鱼软件的威胁,我国网络用户的个人信息泄露情况严重。尤其现在的的网络黑客以获利为目的网络犯罪行为对社会的危害更大,在每一次重大的信息安全事故背后我们都能找到根本的原因--软件漏洞,而每一次信息安全事件的发生都可以归结为对软件漏洞的成功利用。软件漏洞一直以来是信息安全领域所面临的一项亟待解决的疑难问题,漏洞是指计算机系统在软硬件、协议等的实现或系统采取的安全策略存在的缺陷与不足。某个软件漏洞如果被攻击者获悉,攻击者就有可能利用该漏洞获得额外的系统权限来访问系统资源,从而使系统面临安全风险。因而,对软件漏洞发掘技术进行研究,在软件推向市之前或先于攻击者之前找出软件隐藏的漏洞,对提高软件质量、有效降低软件运行中的安全风险意义重大而深远。
针对软件漏洞发掘的研究很早就开始了,在70年代美国南加州大学就针对操作系统的安全缺陷开展了PA研究计划,美国国家标准局针对操作系统脆弱性进行的RISOS研究计划,以及后来的B.Hebbard小组的“渗透分析”方法与Brian Marick公布的软件漏洞调查报告,还有Landwehr等人对软件漏洞分类的研究以及普渡大学COAST实验室提出的漏洞分类方法等。软件漏洞发掘技术对已知漏洞进行扫描分析,对未知漏洞的则根据软件的运行状态采取不同的方法,一般分为静态分析技术与动态检测技术两大类。安全扫描技术的基本原理是利用模拟非法用户攻击的形式对目标软件可能存在并已被发现的软件漏洞进行逐项检查,根据扫描器的体系结构与采取的扫描策略分为基于主机的安全扫描器与基于网络的安全扫描器,而根据扫描对象的性质又可分为端口扫描与漏洞扫描。静态分析技术是指在程序不运行的状态下,对目标软件的源程序或二进制编码进行分析,以期找出其中隐藏的漏洞。对源程序的分析主要通过人工或借助软件工具来进行,对二进制编码的分析则是先对可执行文件进行反汇编(又称逆向工程),再对反汇编代码进行分析。常见的静态分析技术有源程序扫描、反汇编检测、补丁比较等。源程序扫描主要借助工具进行分析,而反汇编检测常用的检测技术有IDC脚本分析、有向图分析、整数范围限制的分析等。补丁比较是通过比较安装补丁前后目标软件的差异来查找漏洞。静态分析技术检测速度快,对源程序覆盖全面,能检测一些常见软件漏洞如缓冲区溢出、格式字符串漏洞、竞争条件等漏洞,却难以发掘程序在运行时的漏洞。动态检测技术是通过调试器运行目标程序,获得目标程序运行时的运行状态与数据,对程序中的变量、内存、堆栈等运行情况进行分析,并对运行结果与程序设计预期进行比较,根据两者的差别判断是否存在漏洞。动态检测技术主要包括软件错误注入测试、堆栈分析、格式分析等。软件错误注入是指在目标软件运行过程中人为地注入错误数据,根据目标软件是处理过程中是否出现异常来判断是否存在漏洞。堆栈分析则分为栈不可执行、堆与数据不可执行、虚拟堆栈分析技术等。格式分析则是通过目标软件解析格式文件时产生漏洞进行的分析,包括文件格式解析漏洞与协议格式解析漏洞。动态检测技术类似于黑盒测试,有较强的针对性,准确率也较高。
Fuzzing技术也叫软件漏洞自动发掘技术,该技术基于错误注入,通过编写自动化测试工具向目标软件输入构造的半有效数据并观察目标软件在运行过程中的异常来发掘软件中的漏洞。Fuzzing技术的测试对象广泛,有基于浏览器的Fuzzing测试工具mangleme;基于文件格式的Fuzzing的测试工具FileFuzzing与SPIKEfile;基于ActiveX控件的Fuzzing测试工具COMRaider与AxMan;基于IRC协议的Fuzzing测试工具IrcFuzz;基于DHCP协议的Fuzzing测试工具DHCPFuzz;基于TFTP协议的Fuzzing测试工具TFTPFuzz等。可以概括为两类:一类是基于文件格式的Fuzzing技术,主要针对各种文件格式如文档格式、多媒体格式、图像格式等。另一类是基于协议的Fuzzing技术,主要针对各种网络协议如TFTP协议、HTTP协议、TCP/IP协议等。Fuzzing技术通过以下流程予以实现:首先确定Fuzzing目标,然后构造半有效数据,接着调用目标程序并把半有效数据作为输入,接下来对目标程序进行监测,最后对疑似漏洞进行分析。Fuzzing技术简单易行,正确率高,能重现软件的异常情况,具有高度自动化的特点。不足之处在于前期准备工作需要花大量精力。
对一款应用广泛的软件Flash Player进行软件漏洞发掘是本文研究的创新点,首先对Flash Player软件的安全现状作了充分的分析,然后通过分析软件安全漏洞数据库CVE中有关Flash Player类漏洞的特征,得出大量的软件漏洞产生于Flash Player软件对SWF文件的解析过程中。因此,确定以SWF格式文件为研究对象,分析其结构特征,发现对SWF文件头中部分字段作修改,对标签数据块进行非法代码注入,以及在数据块中注入非法链接等是很好的测试点,并在此基础上构造半有效数据文件--SWF格式文件,还可以把SWF格式的文件名定义成超长文件名。最后通过设计的Fuzzing工具实现对Flash Player软件漏洞的自动发掘。经实践,Fuzzing工具发现了Flash Player软件的部分漏洞。