[发明专利]一种基于虚拟执行模式的Flash漏洞检测方法有效
| 申请号: | 201210190206.6 | 申请日: | 2012-06-11 |
| 公开(公告)号: | CN102693396A | 公开(公告)日: | 2012-09-26 |
| 发明(设计)人: | 王建新;彭程;聂石婧;董苹苹 | 申请(专利权)人: | 中南大学 |
| 主分类号: | G06F21/22 | 分类号: | G06F21/22 |
| 代理公司: | 长沙市融智专利事务所 43114 | 代理人: | 黄美成 |
| 地址: | 410083 湖南*** | 国省代码: | 湖南;43 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 虚拟 执行 模式 flash 漏洞 检测 方法 | ||
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漏洞匹配规则。
6.根据权利要求1-5任一项所述的基于虚拟执行模式的Flash漏洞检测方法,其特征在于,所述虚拟执行流程的包括如下设置:
1)虚拟执行流程包含所需执行代码段的开始结点m_pBegNode和结束结点m_pEndNode,两结点确定代码段的范围;包含一个指针m_pNode,指示当前所执行语句的结点,指针的初始位置为虚拟执行流程的开始结点;
2)虚拟执行流程包含两个指针m_pFunction和m_pClass,m_pFunction指示所需执行代码段所属的函数,m_pClass指示所需执行代码段所属的类;
3)每个虚拟执行流程包含一个变量m_vars,用于存储该流程所需的所有变量信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中南大学,未经中南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210190206.6/1.html,转载请声明来源钻瓜专利网。





