CN102693396B - 一种基于虚拟执行模式的Flash漏洞检测方法 - Google Patents

一种基于虚拟执行模式的Flash漏洞检测方法 Download PDF

Info

Publication number
CN102693396B
CN102693396B CN201210190206.6A CN201210190206A CN102693396B CN 102693396 B CN102693396 B CN 102693396B CN 201210190206 A CN201210190206 A CN 201210190206A CN 102693396 B CN102693396 B CN 102693396B
Authority
CN
China
Prior art keywords
virtual execution
flow process
leak
flash
statement
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201210190206.6A
Other languages
English (en)
Other versions
CN102693396A (zh
Inventor
王建新
彭程
聂石婧
董苹苹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hunan kebohua Technology Co. Ltd.
Original Assignee
Central South University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Central South University filed Critical Central South University
Priority to CN201210190206.6A priority Critical patent/CN102693396B/zh
Publication of CN102693396A publication Critical patent/CN102693396A/zh
Application granted granted Critical
Publication of CN102693396B publication Critical patent/CN102693396B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种基于虚拟执行模式的Flash漏洞检测方法,对于待检测的Flash文件,通过对其进行反编译得到ActionScript代码,然后对其类结构进行分析,根据分析的结果生成多个虚拟执行流程,每个虚拟流程即是对某一段代码的虚拟执行。在虚拟执行过程中,若遇到分支语句,则修改相应变量的值,使其能够覆盖所有分支,并为每一个分支新增虚拟执行流程,以待执行。当一次虚拟执行流程结束以后,通过对相应变量值或其它条件进行漏洞匹配,若符合Flash漏洞的触发条件,即成功检测出漏洞,否则表明该Flash文件是安全的。本发明具有误判率低,执行效率高的特点。

Description

一种基于虚拟执行模式的Flash漏洞检测方法
技术领域
本发明涉及一种基于虚拟执行模式的Flash漏洞检测方法。
背景技术
Adobe公司的Flash Player是一款目前使用极为广泛的客户端播放器,能够在各种主流操作系统、浏览器、移动电话和移动设备上提供功能强大与内容丰富的视频体验。现在,几乎绝大部分PC机或其它终端都装有Flash Player,但与此同时,Flash Player漏洞也日益增多,并对互联网的安全造成了严重的威胁。
根据CVE公布的漏洞报告,Flash漏洞数量目前仍呈增长趋势,Flash Player已成为高危漏洞最多的黑客攻击重灾区。而2011年十大安全漏洞当中,FlashPlayer共曝出四次高危漏洞,其危险程度已超过微软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:基于类结构信息生成虚拟执行流程,并将虚拟执行流程放入虚拟执行流程栈中;
步骤6:漏洞检测过程:
从虚拟执行流程栈依次取出一个流程并执行,将该流程中调用过的函数标记为“已执行”状态,在流程执行过程中进行漏洞规则匹配,如果匹配成功,则提示存在漏洞,否则执行下一个从虚拟执行流程栈取出的流程;直到最后一个流程执行完成;
步骤7:输出漏洞检测结果,检测结束。
在步骤6的流程执行过程中,判断是否遇到分支语句,若遇到分支语句,根据判定覆盖原理新增虚拟执行流程,存入虚拟执行流程栈中;
在步骤6的流程执行过程中,当虚拟执行流程栈为空时,即虚拟执行流程栈中的流程都已经执行完毕时,进一步判断是否仍有函数状态为“未执行”,如果是,则为未执行的函数生产新的虚拟执行流程并存入虚拟执行流程栈中,并返回到步骤6的开始;否则跳转至步骤7。
漏洞规则匹配的过程为:一个虚拟执行流程执行完毕,根据当前变量信息进行漏洞规则匹配,若符合某漏洞规则,则表示该Flash文件具有漏洞,若所有漏洞规则都不符合,则表示该Flash文件是安全的。
漏洞规则存储在漏洞规则库中,漏洞规则库是根据CVE(CommonVulnerabilities & Exposures,中文名称为公共漏洞与暴露,是国际上著名的发布各种漏洞信息的字典表)关于Flash的漏洞报告所编写的函数集,每个函数对应一个Flash漏洞匹配规则。
所述虚拟执行流程的包括如下设置:
1)虚拟执行流程包含所需执行代码段的开始结点m_pBegNode和结束结点m_pEndNode,两结点确定代码段的范围;包含一个指针m_pNode,指示当前所执行语句的结点,指针的初始位置为虚拟执行流程的开始结点;
2)虚拟执行流程包含两个指针m_pFunction和m_pClass,m_pFunction指示所需执行代码段所属的函数,m_pClass指示所需执行代码段所属的类;
3)每个虚拟执行流程包含一个变量m_vars,用于存储该流程所需的所有变量信息。
对本发明技术路线的说明:
(1)反编译Flash文件,得到ActionScript代码
由于Flash编译器在编译ActionScript代码时,将其转换成了一种称之为“字节码”的中间码格式,故需首先进行反编译。
(2)单词扫描及词法分析
反编译ActionScript代码后,为了方便进行后续的分析及虚拟执行,需要对代码进行单词扫描,即将ActionScript代码转换成单词流,并对每个单词的类型进行分析。
例如对于语句“var num:int=10;”,单词扫描及词法分析过后,应生成如下单词流("var",保留字),("num",标识符),(″:",符号),("int",保留字),("=",符号),("10",数字),(";",符号)。
(3)构建生成树
为方便后续的虚拟执行,需要对单词流进行整形,以生成树的结构存储ActionScript代码。树中每个结点存储ActionScript的一行语句,若某结点具有子结点,则每个子结点存储的ActionScript语句是其父节点的ActionScript语句的子语句。
生成树构建后,在虚拟执行过程中,只需要从开始结点处,对其进行先序深度遍历即可,且在查找上层语句时较方便。
(4)分析ActionScript代码结构
构建完ActionScript代码的生成树后,此时并不虚拟执行任何代码,而是对其类结构进行分析,即包含哪些类,类的成员函数与成员变量有哪些,其类型是什么(与C++语言的头文件类似),并设计一个类或数据结构保存这些信息。其具体分析方法是先序深度遍历生成树,对于每个结点中的语句,若找到关键字“class”则为类定义语句,此时关键字“class”后的第一个单词为类名,再找到关键字“extends”则紧跟其后的第一个单词为该类的基类名;在类定义语句结点的孩子结点中,若找到关键字“var”或“const”则为类成员变量定义语句,此时“var”或“const”后第一个单词为变量名,“:”后第一个单词为变量类型,“=”后的单词为变量值;在类定义语句结点的孩子结点中,若找到关键字“function”则为类的成员函数定义语句,此时关键字“function”后的第一个单词为函数名,关键字“(”和“)”之间的单词为该函数的参数变量。
(5)虚拟执行ActionScript代码
与Flash Player播放Flash文件不同,这里并不真正执行ActionScript代码,由于Flash缓冲区溢出漏洞大多只与变量与内存空间相关,故虚拟执行时只关心代码中的各变量改变,而不关心各功能的实现。
虚拟执行流程的初始化,是根据可能最先执行的函数生成虚拟执行流程。由于ActionScript不同于C/C++,没有类似main()这样确定的入口函数,故只能猜测哪些可能是最先执行的函数,这样做的目的也是为了尽量模拟真实的执行环境与顺序。实际上此类函数的选择对漏洞检测结果影响不大,一般将各个类的构造函数及事件响应函数作为可能最先执行的函数。初始化完毕后,依次选取各个虚拟执行流程进行虚拟执行。
虚拟执行时,遇到功能实现代码或其它与变量变化无关的代码不需要实现其执行,如添加事件监听器或载入对象,以简单方法的实现并提高执行效率。但执行诸如内存空间的分配与回收,或变量的新建、赋值与修改等,则记录该变量名称,类型,值以及作用域。
若虚拟执行过程中,遇到分支语句,则根据判定覆盖的原理,根据每个分支的条件表达式修改相应变量的值,以覆盖所有分支语句,并为其新增虚拟执行流程,以待后续的执行。
(6)匹配漏洞的触发条件
每当一个虚拟执行流程执行完毕时,提取当前虚拟执行流程的变量信息,并遍历查询漏洞规则库,判断目前条件或存储的变量值是否符合漏洞触发条件。漏洞规则库是根据CVE发布的Flash的漏洞报告的漏洞原理,将其编写成一个个漏洞匹配函数(根据漏洞报告中的漏洞原理编写漏洞匹配函数,本领域技术人员无需经过创造性劳动即可完成),每个函数对应一个Flash漏洞匹配规则。若符合,则提示有漏洞,若当所有漏洞规则都与当前变量信息不匹配时,则可以认为该Flash文件是安全的。
(7)对从未执行函数进行虚拟执行
当虚拟执行流程队列中,所有的虚拟执行流程都执行完毕,还需对ActionScript代码中所有函数再次进行扫描,若此时发现有函数的m_IsExecute字段值为false,则表示该函数从未被虚拟执行过,则为该函数新增虚拟执行流程,并进行虚拟执行。当此类流程也执行完毕后,则表示所有函数都至少被执行了一次。
有益效果:
本发明的基于虚拟执行模式的Flash漏洞检测方法,与静态代码分析方法相比,采用判定覆盖的方式,弥补了基于虚拟执行方法当中不能虚拟执行所有ActionScript代码的缺陷;能检测出更多的Flash漏洞数量,其正确率依赖于ActionScript代码的复杂程度。对于大多数包含漏洞的Flash文件,编写者往往注重漏洞利用的实现,而不会将其ActionScript代码写得过于复杂与繁琐,故正确率较静态代码分析方法和虚拟执行方法更高。在误判率方面,由于对Flash漏洞的检测是根据CVE的漏洞报告进行精确漏洞规则匹配,其变量信息来源于虚拟执行后的结果,因而能最大可能的保障误判率小,正常的ActionScript代码很难满足以上要求。此外,与虚拟执行方法相比,由于该方法只模拟执行流程中变量的变化,而并不真正执行ActionScript代码中的方法,故效率更高。
综上说述,该方法通过采用判定覆盖的方式,虚拟执行所有ActionScript代码,并根据执行完毕后的变量状态及其它信息进行漏洞规则匹配,以检测是否具有漏洞,具有正确率高且效率高的优点。
附图说明
图1为基于虚拟执行模式的Flash漏洞检测方法的流程图;
图2为生成树构建范例对应的示意图。
具体实施方式
以下将结合附图和具体实施例对本发明做进一步详细说明:
一种基于虚拟执行模式的Flash漏洞检测方法,包括以下步骤:
步骤1:将待检测的Flash文件进行反编译,得到ActionScript代码;
步骤2:对ActionScript代码进行单词扫描及词法分析,即将ActionScript代码转换成单词流,并对每个单词的类型进行分析,单词的类型包括保留字、标识符、符号、数字;
步骤3:构建生成树:
以生成树存储ActionScript代码:生成树中每个结点用于存储ActionScript的一行语句,若某结点具有子结点,则每个子结点存储的ActionScript语句是其父节点的ActionScript语句的子语句;
步骤4:对每个结点中的语句进行结构分析,得到类结构信息,其中语句结构包括类定义语句、类成员变量定义语句及类的成员函数定义语句;在分析ActionScript代码结构时,对代码逐行进行扫描,若发现关键字“class”则为类定义语句,关键字“function”则为类的成员函数定义语句;若找到关键字“var”或“const”则为类成员变量定义语句;
标记所有函数的状态为“未执行”;
步骤5:基于类结构信息生成虚拟执行流程,并将虚拟执行流程放入虚拟执行流程栈中;
步骤6:漏洞检测过程:
从虚拟执行流程栈依次取出一个流程并执行,将该流程中调用过的函数标记为“已执行”状态,在流程执行过程中进行漏洞规则匹配,如果匹配成功,则提示存在漏洞,否则执行下一个从虚拟执行流程栈取出的流程;直到最后一个流程执行完成;
步骤7:输出漏洞检测结果,检测结束。
在步骤6的流程执行过程中,判断是否遇到分支语句,若遇到分支语句,根据判定覆盖原理新增虚拟执行流程,存入虚拟执行流程栈中;
在步骤6的流程执行过程中,当虚拟执行流程栈为空时,即虚拟执行流程栈中的流程都已经执行完毕时,进一步判断是否仍有函数状态为“未执行”,如果是,则为未执行的函数生产新的虚拟执行流程并存入虚拟执行流程栈中,并返回到步骤6的开始;否则跳转至步骤7。
漏洞规则匹配的过程为:一个虚拟执行流程执行完毕,根据当前变量信息进行漏洞规则匹配,若符合某漏洞规则,则表示该Flash文件具有漏洞,若所有漏洞规则都不符合,则表示该Flash文件是安全的。
漏洞规则存储在漏洞规则库中,漏洞规则库是根据CVE(CommonVulnerabilities & Exposures,中文名称为公共漏洞与暴露,是国际上著名的发布各种漏洞信息的字典表)关于Flash的漏洞报告所编写的函数集,每个函数对应一个Flash漏洞匹配规则。
所述虚拟执行流程的包括如下设置:
1)虚拟执行流程包含所需执行代码段的开始结点m_pBegNode和结束结点m_pEndNode,两结点确定代码段的范围;包含一个指针m_pNode,指示当前所执行语句的结点,指针的初始位置为虚拟执行流程的开始结点;
2)虚拟执行流程包含两个指针m_pFunction和m_pClass,m_pFunction指示所需执行代码段所属的函数,m_pClass指示所需执行代码段所属的类;
3)每个虚拟执行流程包含一个变量m_vars,用于存储该流程所需的所有变量信息。
实施例1:
图1是本发明的流程图,步骤如下:
(1)反编译Flash文件,得到ActionScript代码
由于Flash编译器在编译ActionScript代码时,将其转换成了一种称之为“字节码”的中间码格式,故需首先进行反编译。
(2)单词扫描及词法分析
反编译ActionScript代码后,为了方便进行后续的分析及虚拟执行,需要对代码进行单词扫描,即将ActionScript代码转换成单词流,并对每个单词的类型进行分析。
例如对于以下语句:var num:int=10;,单词扫描及词法分析过后,应生成如下单词流("var",保留字),("num",标识符),(":",符号),("int",保留字),("=",符号),("10",数字),(";",符号)。
(3)构建生成树
为方便后续的虚拟执行,需要对单词流进行整形,以生成树的结构存储ActionScript代码。树中每个结点存储ActionScript的一行语句,若某结点具有子结点,则每个子结点存储的ActionScript语句是其父节点的ActionScript语句的子语句。
在构建生成树结构时,先新建一个结点指针,代表指向父节点,初始值为树的根结点。然后新建一结点变量,再对单词流进行遍历,每遍历一个单词时,将其加入到该结点当中。当遍历到分号时,表明该行语句结束,将该结点链接到当前父节点的子结点当中;当遍历到左大括号时,表明其后为子语句,此时将现有结点链接至父节点的子结点当中,然后指针指向该结点,然后再进行遍历;当遍历到右大括号时,表明子语句结束,将该结点链接至父节点的子结点后,指针指向其父结点的下一个结点。根据该规则,最后直至所有单词都遍历结束。图2为一段ActionScript示例代码对应的生成树结构。
对每个结点中的语句进行结构分析,得到类结构信息,其中语句结构包括类定义语句、类成员变量定义语句及类的成员函数定义语句等;在分析ActionScript代码结构时,对代码逐行进行扫描,若发现关键字“class”则为类定义语句,关键字“function”则为函数定义语句。然后用一种数据结构将该类信息存储起来,以便后续的分析及执行。
存储类信息的类设计结构如下:
初始化虚拟执行流程时,通过分析函数名是否与类型相同,来判断构造函数,通过分析函数的参数列表中是否含有关键字“Event”来判断事件响应函数,并为这两种函数建立虚拟执行流程。
虚拟执行流程的类设计如下所示:
其中变量信息的初始内容,为所属类的成员变量及所属函数的参数变量。
虚拟执行过程中,若遇到变量的新增、赋值、修改等操作,需要对其进行记录,以备后续漏洞规则匹配之用。
存储变量信息的类设计如下所示:
若在虚拟执行过程中,遇到if语句,switch语句,while语句,for语句这四种分支语句时,则根据判定覆盖的原理,修改相应变量信息,并新增虚拟执行流程。例如遇到如下语句:
if(a1>=0){...}
else if(a1<0){...}
若执行到该if语句时,原来变量a1的值大于等于0,则新增一个虚拟执行流程,将其中的变量a1的值修改为小于0(如值为-1),并将该虚拟执行流程的开始行号设置为条件表达式(a1<0)后的语句块内的首条语句。
一个虚拟执行流程执行完毕以后,需要根据当前变量信息进行漏洞规则匹配,若符合某漏洞规则,则表示该Flash文件具有漏洞,若所有漏洞规则都不符合,则表示该Flash文件是安全的。
如对于CVE-2011-2137漏洞,其规则是:若发现一类型为FileReference的变量进行save操作,且操作的参数变量中存在一个长度大于0x4000的string类型变量,则匹配成功,提示有漏洞。
当所有虚拟执行流程都执行完毕后,需检查是否仍有函数从未执行过。若存在该类函数,则为其新增虚拟执行流程,并依次虚拟执行。
采用本发明方法进行Flash漏洞检测,与静态代码分析方法相比,能检测出的Flash漏洞数量更多,且采用判定覆盖的方式,弥补了基于虚拟执行方法当中不能虚拟执行所有ActionScript代码的缺陷。此外,本发明的执行效率较基于虚拟执行的方法也更高。
采用本发明方法进行Flash漏洞检测,其正确率依赖于ActionScript代码的复杂程度。对于大多数包含漏洞的Flash文件,编写者往往注重漏洞利用的实现,而不会将其ActionScript代码写得过于复杂与繁琐,故正确率较静态代码分析方法和虚拟执行方法更高。在误判率方面,由于对Flash漏洞的检测是根据CVE的漏洞报告进行精确漏洞规则匹配,其变量信息来源于虚拟执行后的结果,正常的ActionScript代码很难满足以上要求,故误判率极低。
CVE所有漏洞报告及对应的漏洞利用的样本文件均可在其网站上免费下载,抽选了其中十个较新的Flash漏洞对应的样本文件,表1是分别采用静态分析代码方法和本发明方法是否能成功检测出漏洞的结果:
表1静态代码分析方法与本发明方法检测结果比较
  漏洞名称   静态代码分析方法   本发明方法
  CVE-2011-2134   √   √
  CVE-2011-2135   √
  CVE-2011-2136   √
  CVE-2011-2137   √
  CVE-2011-2138   √
  CVE-2011-2139   √
  CVE-2011-2140   √   √
  CVE-2011-2414   √
  CVE-2011-2416   √
  CVE-2011-2425   √   √
表1中数据能够表明本发明所提供的Flash漏洞检测方法明显优化于静态代码分析方法,在相同条件下,能够检测出更多的漏洞。

Claims (6)

1.一种基于虚拟执行模式的Flash漏洞检测方法,其特征在于,包括以下步骤:
步骤1:将待检测的Flash文件进行反编译,得到ActionScript代码;
步骤2:对ActionScript代码进行单词扫描及词法分析,即将ActionScript代码转换成单词流,并对每个单词的类型进行分析,单词的类型包括保留字、标识符、符号、数字;
步骤3:构建生成树:
以生成树存储ActionScript代码:生成树中每个结点用于存储ActionScript的一行语句,若某结点具有子结点,则每个子结点存储的ActionScript语句是其父节点的ActionScript语句的子语句;
步骤4:对每个结点中的语句进行结构分析,得到类结构信息,其中语句结构包括类定义语句、类成员变量定义语句及类的成员函数定义语句;在分析ActionScript代码结构时,对代码逐行进行扫描,若发现关键字“class”则为类定义语句,关键字“function”则为类的成员函数定义语句;若找到关键字“var”或“const”则为类成员变量定义语句;
标记所有函数的状态为“未执行”;
步骤5:基于类结构信息生成虚拟执行流程,并将虚拟执行流程放入虚拟执行流程栈中;
步骤6:漏洞检测过程:
从虚拟执行流程栈依次取出一个流程并执行,将该流程中调用过的函数标记为“已执行”状态,在流程执行过程中进行漏洞规则匹配,如果匹配成功,则提示存在漏洞,否则执行下一个从虚拟执行流程栈取出的流程;直到最后一个流程执行完成;
步骤7:输出漏洞检测结果,检测结束。
2.根据权利要求1所述的基于虚拟执行模式的Flash漏洞检测方法,其特征在于,在步骤6的流程执行过程中,判断是否遇到分支语句,若遇到分支语句,根据判定覆盖原理新增虚拟执行流程,存入虚拟执行流程栈中。
3.根据权利要求1所述的基于虚拟执行模式的Flash漏洞检测方法,其特征在于,在步骤6的流程执行过程中,当虚拟执行流程栈为空时,即虚拟执行流程栈中的流程都已经执行完毕时,进一步判断是否仍有函数状态为“未执行”,如果是,则为未执行的函数生产新的虚拟执行流程并存入虚拟执行流程栈中,并返回到步骤6的开始;否则跳转至步骤7。
4.根据权利要求1所述的基于虚拟执行模式的Flash漏洞检测方法,其特征在于,漏洞规则匹配的过程为:一个虚拟执行流程执行完毕,根据当前变量信息进行漏洞规则匹配,若符合某漏洞规则,则表示该Flash文件具有漏洞,若所有漏洞规则都不符合,则表示该Flash文件是安全的。
5.根据权利要求1所述的基于虚拟执行模式的Flash漏洞检测方法,其特征在于,漏洞规则存储在漏洞规则库中,漏洞规则库是根据CVE关于Flash的漏洞报告所编写的函数集,每个函数对应一个Flash漏洞匹配规则,所述的CVE即CommonVulnerabilities&Exposures,中文名称为公共漏洞与暴露,是国际上著名的发布各种漏洞信息的字典表。
6.根据权利要求1-5任一项所述的基于虚拟执行模式的Flash漏洞检测方法,其特征在于,所述虚拟执行流程的包括如下设置:
1)虚拟执行流程包含所需执行代码段的开始结点m_pBegNode和结束结点m_pEndNode,两结点确定代码段的范围;包含一个指针m_pNode,指示当前所执行语句的结点,指针的初始位置为虚拟执行流程的开始结点;
2)虚拟执行流程包含两个指针m_pFunction和m_pClass,m_pFunction指示所需执行代码段所属的函数,mpClass指示所需执行代码段所属的类;
3)每个虚拟执行流程包含一个变量mvars,用于存储该流程所需的所有变量信息。
CN201210190206.6A 2012-06-11 2012-06-11 一种基于虚拟执行模式的Flash漏洞检测方法 Expired - Fee Related CN102693396B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210190206.6A CN102693396B (zh) 2012-06-11 2012-06-11 一种基于虚拟执行模式的Flash漏洞检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210190206.6A CN102693396B (zh) 2012-06-11 2012-06-11 一种基于虚拟执行模式的Flash漏洞检测方法

Publications (2)

Publication Number Publication Date
CN102693396A CN102693396A (zh) 2012-09-26
CN102693396B true CN102693396B (zh) 2014-09-17

Family

ID=46858821

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210190206.6A Expired - Fee Related CN102693396B (zh) 2012-06-11 2012-06-11 一种基于虚拟执行模式的Flash漏洞检测方法

Country Status (1)

Country Link
CN (1) CN102693396B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103699844B (zh) 2012-09-28 2016-10-26 腾讯科技(深圳)有限公司 安全保护系统及方法
CN104298921B (zh) * 2013-07-15 2019-01-29 深圳市腾讯计算机系统有限公司 动画源文件安全漏洞检查方法及装置
CN104462962B (zh) * 2013-09-13 2018-07-03 北京安赛创想科技有限公司 一种检测未知恶意代码和二进制漏洞的方法
CN103559447B (zh) * 2013-11-15 2016-05-25 北京奇虎科技有限公司 一种基于病毒样本特征的检测方法、检测装置及检测系统
CN104932870B (zh) * 2014-03-18 2019-05-24 腾讯科技(深圳)有限公司 一种对虚幻脚本的数据处理方法,及装置
CN104408368B (zh) * 2014-11-21 2017-07-21 中国联合网络通信集团有限公司 网址检测方法与装置
CN106295346B (zh) * 2015-05-20 2022-08-30 深圳市腾讯计算机系统有限公司 一种应用漏洞检测方法、装置及计算设备
US9916443B1 (en) 2015-07-21 2018-03-13 Palo Alto Networks, Inc. Detecting an attempt to exploit a memory allocation vulnerability
CN106856473B (zh) * 2015-12-09 2021-04-20 阿里巴巴集团控股有限公司 漏洞的检测方法及装置
CN106934290B (zh) * 2015-12-31 2020-07-07 阿里巴巴集团控股有限公司 漏洞检测方法及装置
CN106650462A (zh) * 2016-11-28 2017-05-10 北京奇虎科技有限公司 一种检测Flash漏洞利用的方法和装置
CN108875361A (zh) * 2017-12-28 2018-11-23 北京安天网络安全技术有限公司 一种监控程序的方法、装置、电子设备及存储介质
CN112765611B (zh) * 2021-01-19 2022-11-25 上海微盟企业发展有限公司 一种越权漏洞检测方法、装置、设备及存储介质
CN116580757B (zh) * 2023-07-12 2023-09-22 悦芯科技股份有限公司 一种虚拟ate测试方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101482847A (zh) * 2009-01-19 2009-07-15 北京邮电大学 一种基于安全漏洞缺陷模式的检测方法
CN101964036A (zh) * 2010-10-29 2011-02-02 北京椒图科技有限公司 漏洞检测方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2092424B1 (en) * 2006-10-19 2015-12-30 Checkmarx Ltd. Locating security vulnerabilities in source code

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101482847A (zh) * 2009-01-19 2009-07-15 北京邮电大学 一种基于安全漏洞缺陷模式的检测方法
CN101964036A (zh) * 2010-10-29 2011-02-02 北京椒图科技有限公司 漏洞检测方法及装置

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
Flash应用程序漏洞挖掘与利用;贺拓;《中国优秀硕士学位论文全文数据库》;20101231;全文 *
Hannes Holm.Performance of automated network vulnerability.《Computers & Security》.2012,第31卷(第2期),第164页-175页.
Hannes Holm.Performance of automated network vulnerability.《Computers &amp *
Security》.2012,第31卷(第2期),第164页-175页. *
Takanobu Watanabe,et al.A New Security Testing Method for Detecting Flash Vulnerabilities by Generating Test Patterns.《13th International Conference on Network-Based Information Systems》.2010,第469-474页. *
贺拓.Flash应用程序漏洞挖掘与利用.《中国优秀硕士学位论文全文数据库》.2010,全文.

Also Published As

Publication number Publication date
CN102693396A (zh) 2012-09-26

Similar Documents

Publication Publication Date Title
CN102693396B (zh) 一种基于虚拟执行模式的Flash漏洞检测方法
He et al. Learning to fuzz from symbolic execution with application to smart contracts
CN107832619B (zh) Android平台下应用程序漏洞自动化挖掘系统及方法
CN110399730B (zh) 智能合约漏洞的检查方法、系统及介质
Wang et al. In-memory fuzzing for binary code similarity analysis
CN112800423B (zh) 一种二进制代码授权漏洞检测方法
CN104834859A (zh) 一种Android应用中恶意行为的动态检测方法
CN109635569B (zh) 一种漏洞检测方法及装置
RU91213U1 (ru) Система автоматического составления описания и кластеризации различных, в том числе и вредоносных, объектов
Sun et al. Hybrid firmware analysis for known mobile and iot security vulnerabilities
CN102012988B (zh) 自动二进制恶意代码行为分析方法
Dahse et al. RIPS-A static source code analyser for vulnerabilities in PHP scripts
CN103198260B (zh) 一种二进制程序漏洞自动化定位方法
Chen et al. DroidCIA: A novel detection method of code injection attacks on HTML5-based mobile apps
CN111092894A (zh) 一种基于增量学习的webshell检测方法、终端设备及存储介质
CN101751530A (zh) 检测漏洞攻击行为的方法及设备
Liao et al. Smartdagger: a bytecode-based static analysis approach for detecting cross-contract vulnerability
CN114579969A (zh) 漏洞检测方法、装置、电子设备及存储介质
CN111475820A (zh) 基于可执行程序的二进制漏洞检测方法、系统及存储介质
JPWO2019013266A1 (ja) 判定装置、判定方法、および、判定プログラム
KR102273135B1 (ko) 기호 실행을 사용하는 소프트웨어 테스트 입력 생성 장치 및 방법
US10579799B2 (en) System and method for execution of objects lacking rules of interpretation
CN113536308B (zh) 软件基因视角下多粒度信息融合的二进制代码溯源方法
CN112817877B (zh) 异常脚本检测方法、装置、计算机设备和存储介质
CN105354035A (zh) 用于编写web工程测试用例的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: HUNAN ZHONGKE BOHUA TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: CENTRAL SOUTH UNIVERSITY

Effective date: 20150421

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 410083 CHANGSHA, HUNAN PROVINCE TO: 410205 CHANGSHA, HUNAN PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20150421

Address after: 410205 Hunan high tech Zone Changsha Wenxuan Road No. 27 enterprises in the Park Plaza B1 Building 5 floor

Patentee after: Hunan kebohua Technology Co. Ltd.

Address before: Yuelu District City, Hunan province 410083 Changsha Lushan Road No. 932

Patentee before: Central South University

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140917

Termination date: 20180611