孙瑜,周安民
(四川大学电子信息学院,成都 610065)
基于Peach的视频文件安全脆弱性模糊测试方法研究
孙瑜,周安民
(四川大学电子信息学院,成都610065)
自2010年Google承认遭受严重黑客攻击之后,APT(高级持续性威胁)便成了信息安全圈子里众人皆知的“时髦名词”。其中,文件解析型漏洞在APT攻击中承担了重型武器的功能[1]。随着数字化媒体设备的发展,音视频文件的使用已越来越广泛,各种视频文件没有严格统一的规范,也没有专业的公司或者组织对其安全性进行升级,因此各种类型的视频文件在文档结构以及各种视频软件在实现上都存在着许多安全性问题。目前,针对视频软件的解析格式漏洞进行的深入研究比较少,而这类漏洞往往具有严重的危害性,因此对主流音视频文件格式进行分析,整理归纳易引发漏洞的数据结构,结合模糊测试的思想,对各种播放器进行有针对性的Fuzzing测试,对发现其潜在的漏洞具有重要意义。
模糊测试适用于对目标软件有输入的漏洞类型,输入相关的漏洞具体是指通过特定的输入触发异常的漏洞,由用户提供,因此对于主流视频处理软件来说,视频文件格式的分析十分重要。主流视频处理软件所处理的主要文件格式包括:AVI、MP4、FLV、ASF等。本文将以这四种文件格式为例,研究主流视频处理软件能够解析的这些文件格式,针对文件格式的详细分析编写Peach Pit文件。在此基础上按照一定规则构造大量特殊的“畸形”样本,将这些样本逐一送入视频处理软件进行解析,监测软件是否会出现异常、崩溃等情况,记录产生的错误信息。更进一步的工作是核实这些错误能否被利用,由此判断主流视频处理软件在解析文件格式时是否存在漏洞。
MP4视频文件是一种较为全面的容器格式,可以在其中嵌入任何形式的数据,各种编码的视频、音频等[2]。
MP4视频文件封装格式是基于QuickTime容器格式来定义的,因此需要参考QuickTime的格式定义来对MP4文件格式进行解析。MP4文件由若干个Box组成,其中所有数据都装在Box(QuickTime中为atom)中,Box可认为是一个数据对象块,每个Box有类型、大小和长度。大box中存放小box,一级嵌套一级来存放媒体信息。
FLV格式是一个用于提供视频在互联网上使用的容器文件格式,应用于Adobe Flash Player版本6或者更新的版本。由于其形成的文件小、加载的速度快等优点,使得网络观看视频成为可能,它的出现有效地解决了在视频文件导入Flash后不能很好地在网络上使用,导出的SWF文件过于庞大等缺点[3]。
FLV文件包括文件头和文件体两部分,其中文件体由一系列的Tag及Tag Size对组成。
ASF(Advanced Streaming Format)即高级串流格式,支持任意的压缩/解压缩编码方式,并且体积小,可以使用任何一种底层网络传输协议,具有很大的灵活性[4]。其数据组合形式也十分灵活,能够将声音、动画以及图形等数据组合在一个ASF格式文件中,也可以与其他格式的音视频文件相互转换。还可以在ASF视频文件中增加带有命令的代码,执行某个事件或某种操作。
ASF对象是ASF文件的基本组织单元,由一个Object ID(128位全球唯一对象标识符,GUID),一个Object Size(64位的对象大小)和一个Object Data(可变长的对象数据)组成。对象大小的值等于对象数据的大小加24比特之和。
AVI即音频视频交错格式,微软公司于1992年11月推出的一种多媒体文件格式。音频视频交错,就是将音频与视频流数据交织在一起,同步播放,它的优点是可以跨平台使用。
AVI文件格式包含三部分:文件头、数据块,以及索引块。数据块是文件的主体,它包含实际的数据流,也就是图像和声音序列数据,这部分信息决定了文件主要容量。索引块包含数据块的列表以及它们在文件中对应的位置信息,用以提供数据在文件中的随机存取能力[5]。文件头包含定义数据格式、文件所用压缩算法、文件通用信息等参数。AVI文件属于一种用于采集、编辑、播放的RIFF文件。RIFF文件格式是一种树状的结构,它的基本组成单元包含LIST和CHUNK两种结构。LIST相当于文件的目录,它可以包含多个CHUNK结构或者多个LIST结构,包含关键字“LIST”。CHUNK结构是保存数据的最基本单元,可用于保存各种音视频数据或者某些参数的信息。
在对文件格式解析的基础上,编写Peach Pit文件,选取初始模板,由系统完成模糊测试功能,具体执行流程为如图1所示:
图1 系统框架执行流程
样本变异策略,即Peach模糊测试框架内预先制定的一些处理输入文件的规则。Peach自带三种变异策略,分别为随机变异策略、顺序变异策略、混合变异策略[6]。
(1)随机变异策略,策略中Peach每次会从数据模型中取MaxFieldsToMutate个元素,其中MaxFieldsTo-Mutate是Pit文件的测试模块中预先设定的参数,然后为每一个数据元素随机选择一种变异方法。Peach是通过随机数种子来实现随机化的。随机变异策略可以设置测试数据模型的次数,也可以设置迭代数据模型中元素的数目。该策略最适合用于测试较大的数据结构,且与顺序策略联合使用。
(2)顺序变异策略中,Peach每次按照数据模型中的元素集合的顺序依次对所有元素进行Fuzz,从最顶端的元素开始,对每个数据元素应用变异器中所有的有效变异方法,然后按照顺序再对元素集合中下一个元素继续上述操作。
(3)混合变异策略中,结合了随机变异策略和顺序变异策略的一种方法,解决了随机变异策略的无限测试问题,它为整个模糊测试设置确定开始和结束元素,就是数据模型中元素集合的起点和终点。
根据前面的介绍可以了解Peach三大变异策略,但不同的策略都会有一定的局限性。
(1)随机变异策略可能对同一个数据进行两次相同的变异,会生成两个相同的变异文件,大大增加了Fuzzing test的开销,降低了模糊测试的效率。另外,随机策略是一种无限测试,如果没有外部中断,测试将一直运行下去。
(2)顺序变异策略已对数据元素集合中的所有元素穷尽各种变异方法,就不用再次重复进行,所以采用这种变异策略的模糊测试所迭代的次数是有限的,即生成的畸形样本个数是有限的。适用于较小的数据结构的细粒度模糊测试,即使遍历所有数据元素,穷尽变异方法,畸形样本数量也不会太多。
(3)混合变异策略对于各元素的变异顺序就不再采用集合元素的顺序,而是随机获取数据元素进行变异,这点与随机变异策略一致。尽管没有按照元素集合中的顺序进行变异,但还是会对每个元素遍历变异器中的所有变异方法,因此这种变异策略也是一种有限测试。
(4)三种系统提供的变异策略均属于一维的变异策略,即每次只调用一种变异方法来改变某个字节的值,或删除,或插入,或替换,这样不仅效率低。各类视频文件中都存在很多关联的数据,如果每次只变异某个地方的数据,如果其正好存在其他的关联数据,那么变异后生成的测试样本很可能是无效的,大大增加了无效样本的数量,降低了测试效率。
因此,基于以上对三种变异策略的分析,提出了一种多维的变异策略,主要的优化方法如下:
(1)利用历史漏洞分析结果,通过在Peach Pit中限制数据的定义等,缩小所需变异的元素范围;
(2)判断当前数据元素是否存在与其相关联的其他数据元素,如果不存在则调用混合变异策略;如果存在关联数据元素,则对所有相关的元素数据分别调用随机变异策略;
(3)变异后生成的测试样本文件,以其文件内容的MD5值命名,能验证当前生成的测试样本文件是否已经存在。
具体的多维变异策略逻辑过程如图2所示。
图2 多维变异策略示意图
为了验证变异策略的有效性,对常见的播放器软件如RealPlayer、Adobe Flash Player、Win Media Player等软件进行模糊测试,测试环境为Windows XP3。
此开源漏洞挖掘框架系统在历史漏洞复现方面有很好的表现,以下选取了近年危害比较严重的视频软件漏洞,通过构造漏洞触发样本来测试此系统在漏洞行为监控和记录现场的性能指标,具体测试结果如表1所示:
表1 测试历史漏洞复现统计表
实验结果表明,此系统能对近年绝大部分的视频软件漏洞实现复现,说明通过利用变异策略能够提高模糊测试的效率和正确性,进而能够主动防范借助于视频软件的恶意攻击行为。未来会进一步深入研究模糊测试变异策略,在已有变异策略的基础上进行优化,并继续研究其他视频文件,尽可能提高普遍性。
[1]比特网安全(ChinaByte).http://sec.chinabyte.com/7/12162007.shtm.2015-3-5.
[2]陈吉.浅谈流媒体技术[J].常州信息职业技术学院学报,2008(03):10-12.
[3]严鸣.SVC封装技术研究和实现[D].重庆:重庆大学,2013.
[4]陈吉.浅谈流媒体技术[J].常州信息职业技术学院学报,2008(03):10-12.
[5]谢金祥.基于流媒体技术的工交学院校园网设计与实现[D].合肥:华中科技大学,2006.
[6]周俊.谈谈AVI文件的修复[J].电脑知识与技术(经验技巧).2003,(01):30-31.
[7]Peach[EB/OL].http://www.PeachFuzzer.com.2015-2-5.
Fuzzing;Peach;Mutation Strategy
Research on Fuzzing Mutation Strategy of the Video Player Based on the Peach
SUN Yu,ZHOU An-min
(College of Electronic and Information Engineering,Sichuan University,Chengdu 610065)
1007-1423(2016)02-0058-04
10.3969/j.issn.1007-1423.2016.02.014
孙瑜(1990-),女,硕士研究生,研究方向为信息安全、网络通信
2015-12-01
2015-12-30
文件解析型漏洞在恶意代码攻击中扮演着重要的角色。攻击者通过将有特殊功能的代码嵌入文件中,让软件在解析这些文件时出错,从而执行有特殊功能的代码,实现对漏洞的利用。旨在通过研究视频文件格式,总结出其中的“脆弱点”,提出更加有效的样本构造方法;对Peach的变异策略进行研究,提出更加有效的变异策略,提高样本生成率,从而更加有针对性地对视频文件格式缺陷进行相应的Fuzz测试,以主动防范基于视频软件的恶意攻击行为。
模糊测试;Peach;变异策略
周安民(1963-),男,硕士生导师,研究员,研究方向为信息安全关键技术和核心产品工程
The file analytical vulnerability plays an important role in attack from malicious code.The code with special function be embedded in the file,through the way,the attackers make the software error when parsing the file,to execute a code with special function.It makes the vulnerability exploitation successful.Sums up the files'"weak point"through studying the video file format,and puts forward a more effective approach.In order to achieve the goal of improve sample generation rate,puts forward more effective mutation strategies through studying the Peach mutation strategy.Thus can more targeted to the video file format defect on the corresponding Fuzzy test,and then to take the initiative to prevent malicious attacks by means of video software.On the basis of the research objectives,research contents are as follows.