[发明专利]一种基于虚拟执行模式的Flash漏洞检测方法有效
申请号: | 201210190206.6 | 申请日: | 2012-06-11 |
公开(公告)号: | CN102693396A | 公开(公告)日: | 2012-09-26 |
发明(设计)人: | 王建新;彭程;聂石婧;董苹苹 | 申请(专利权)人: | 中南大学 |
主分类号: | G06F21/22 | 分类号: | G06F21/22 |
代理公司: | 长沙市融智专利事务所 43114 | 代理人: | 黄美成 |
地址: | 410083 湖南*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 虚拟 执行 模式 flash 漏洞 检测 方法 | ||
技术领域
本发明涉及一种基于虚拟执行模式的Flash漏洞检测方法。
背景技术
Adobe公司的Flash Player是一款目前使用极为广泛的客户端播放器,能够在各种主流操作系统、浏览器、移动电话和移动设备上提供功能强大与内容丰富的视频体验。现在,几乎绝大部分PC机或其它终端都装有Flash Player,但与此同时,Flash Player漏洞也日益增多,并对互联网的安全造成了严重的威胁。
根据CVE公布的漏洞报告,Flash漏洞数量目前仍呈增长趋势,Flash Player已成为高危漏洞最多的黑客攻击重灾区。而2011年十大安全漏洞当中,Flash Player共曝出四次高危漏洞,其危险程度已超过微软Windows操作系统。鉴于Flash Player饱受诟病的安全性,IOS等操作系统甚至已拒绝支持Flash,以保证客户端安全。
Flash漏洞检测是对目标Flash文件是否为利用Flash漏洞编写的恶意文件进行检测的一种方法,通过检测,可以事先发现恶意Flash文件,阻止用户访问,从而保证用户的网络安全。
目前传统的Flash漏洞检测方法主要有三种:
(1)基于特征码匹配的Flash漏洞文件扫描
此方法类似于传统杀毒软件的文件扫描,即将待检测的Flash文件以二进制流的形式打开,通过匹配事先设定的特征码来确定该文件是否具有漏洞。这种对包含漏洞的Flash文件进行扫描的方法,适用面较窄,且效果不佳。
(2)基于静态分析代码的Flash漏洞检测
此方法首先将Flash文件中的ActionScript代码进行反编译,然后再对其代码进行静态分析,检测是否具有触发某一漏洞的特定条件。如根据CVE-2011-2134的漏洞描述,当代码中包含一个深度大于16的表达式时,会导致溢出并触发漏洞,例如:A.match(/(((((((((((((((((.*)))))))))))))))).)*/g);。因此当检测到具有该类表达式时,则成功检测出漏洞。
由于大部分Flash漏洞需要根据变量值等当前状态信息进行匹配,而静态分析代码无法得到此类执行Flash代码后的状态信息,故该方法效果不佳。
(3)基于虚拟执行的Flash漏洞检测
该方案的原理主要是将Flash文件在Flash播放器的虚拟机(即AVM2,已开源)中执行,通过其行为来检测是否具有漏洞。如大部分缓冲区溢出漏洞,就可根据Flash是否崩溃,堆或栈是否溢出来判定。
但该方案仍存在问题。如怎样实现执行Flash文件中的所有ActionScript代码尚需解决,因为攻击者可以将漏洞利用代码编写成需要特定触发条件才会执行,如点击Flash中某一按钮,或使用Firefox浏览器打开时才会执行等。此外,传统虚拟执行方法需要运行Flash文件,则在对大量Flash文件进行漏洞检测时,效率较低。
发明内容
本发明所要解决的技术问题是提供一种基于虚拟执行模式的Flash漏洞检测方法,该基于虚拟执行模式的Flash漏洞检测方法具有误判率低,执行效率高的特点。
发明的技术解决方案如下:
一种基于虚拟执行模式的Flash漏洞检测方法,包括以下步骤:
步骤1:将待检测的Flash文件进行反编译,得到ActionScript代码;
步骤2:对ActionScript代码进行单词扫描及词法分析,即将ActionScript代码转换成单词流,并对每个单词的类型进行分析,单词的类型包括保留字、标识符、符号、数字;
步骤3:构建生成树:
以生成树存储ActionScript代码:生成树中每个结点用于存储ActionScript的一行语句,若某结点具有子结点,则每个子结点存储的ActionScript语句是其父节点的ActionScript语句的子语句;
步骤4:对每个结点中的语句进行结构分析,得到类结构信息,其中语句结构包括类定义语句、类成员变量定义语句及类的成员函数定义语句;在分析ActionScript代码结构时,对代码逐行进行扫描,若发现关键字“class”则为类定义语句,关键字“function”则为类的成员函数定义语句;若找到关键字“var”或“const”则为类成员变量定义语句;
标记所有函数的状态为“未执行”;
步骤5:基于类结构信息生成虚拟执行流程,并将虚拟执行流程放入虚拟执行流程栈中;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中南大学,未经中南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210190206.6/2.html,转载请声明来源钻瓜专利网。