CN104298921B - 动画源文件安全漏洞检查方法及装置 - Google Patents
动画源文件安全漏洞检查方法及装置 Download PDFInfo
- Publication number
- CN104298921B CN104298921B CN201310295820.3A CN201310295820A CN104298921B CN 104298921 B CN104298921 B CN 104298921B CN 201310295820 A CN201310295820 A CN 201310295820A CN 104298921 B CN104298921 B CN 104298921B
- Authority
- CN
- China
- Prior art keywords
- variable
- function
- source file
- node
- tracking
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Processing Or Creating Images (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及一种动画源文件安全漏洞检查方法及装置。在一个实施例中,上述方法包括:对该动画源文件进行反编译以获取该动画源文件的程序结构及语法模型;将该程序结构及该语法模型转换成抽象语法树;根据该抽象语法树构建符号表和函数摘要;以及基于该符号表和函数摘要,结合漏洞规则进行污点回溯追踪,并将追踪结果输出。上述的动画源文件安全漏洞检查方法与装置详细跟踪外部恶意数据在程序中的传递及漏洞的产生过程,并可提高漏洞检测的覆盖率。
Description
技术领域
本发明涉及计算机程序安全检测技术,特别涉及一种动画源文件安全漏洞检查方法及装置。
背景技术
随着互联网技术的发展,用户已离不开各式各样的网络应用,如网络游戏、电子商城及各种社交应用。而在这些网络应用中,各种动画得到了广泛的运用。在各种动画中,尤以Adobe公司的flash动画(扩展名为.swf)应用最为广泛。flash动画由于强大的脚本语言(Action Script,AS)的支持,在页面展示时含有丰富的功能。但同时由于AS的功能的强大以及开放性,也带来不安全的因素。常见的安全漏洞包括跨站脚本攻击(Cross-SiteScripting,以下简称XSS)以及跨站flash(Cross-Site Flash,以下简称XSF)。
目前flash安全漏洞检测的常用方法分为静态分析和动态分析。其中静态分析更分成半自动化和自动化两种方式,常用的是半自动化的挖掘手段,通过人工审查源码定位关键函数,再查看参数是否外部可控。但是半自动化的方式需要肉眼分析,耗时耗力。
另外,静态自动化分析同样通过反编译获取AS源代码,然后基于漏洞代码特征,模式匹配进行安全检测。比如,flash反编译的AS代码片段为getURL(_root.gourl,_blank),通过搜索代码中关键函数getURL,并匹配参数是否为外部输入_root.*,即可发现漏洞。此种方案易于自动化实现,但检测能力具有很大局限性,仅能针对单一行代码。假如反编译的AS代码片段如下:
var param:Object=root.loaderInfo.parameters;
var swf:String=param[“swf”];
var myLoader:Loader=new Loader();
var url:URLRequest=new URLRequest(swf);
myLoader.load(url);
addChild(myLoader);
其中外部参数swf直接被载入,将导致XSF漏洞,但特征字符串匹配的方法很难检测出此类漏洞。
发明内容
因此,本发明提供一种动画源文件安全漏洞检查方法与装置,其可提高漏洞检测的覆盖率。
一种动画源文件安全漏洞检查方法,包括:对该动画源文件进行反编译以获取该动画源文件的程序结构及语法模型;将该程序结构及该语法模型转换成抽象语法树;根据该抽象语法树构建符号表和函数摘要;以及基于该符号表和函数摘要进行污点回溯追踪,并将追踪结果输出。
一种动画源文件安全漏洞检查装置,包括:反编译解析模块,用于对该动画源文件后进行反编译以获取该动画源文件的程序结构及语法模型;抽象语法树构建模块,用于将该程序结构及该语法模型转换成抽象语法树;符号表构建模块,用于根据该抽象语法树构建符号表;函数摘要模块,用于根据该抽象语法树构建函数摘要;以及污点追踪模块,用于基于该符号表和函数摘要进行污点回溯追踪,并将检查结果输出。
根据上述的动画源文件漏洞检测方法及装置,可以自动化地将动画源文件转换为抽象语法树,进而根据抽象语法构建出符号表及函数摘要,可以无限迭代的追踪出一个变量是否危险,详细跟踪外部恶意数据在程序中的传递及漏洞的产生过程,相比于传统的关键字查询方式,漏洞检出率得以提高。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
图1所示为一种计算机的结构框图。
图2为第一实施例提供的动画源文件漏洞检测方法的流程图。
图3为第二实施例提供的动画源文件漏洞检测方法的流程图。
图4为第三实施例提供的动画源文件漏洞检测方法的流程图。
图5为第四实施例提供的动画源文件漏洞检测方法的流程图。
图6为第五实施例提供的动画源文件漏洞检测方法的流程图。
具体实施方式
为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的动画源文件安全漏洞检查方法及装置其具体实施方式、结构、特征及功效,详细说明如后。
本发明实施例提供一种动画源文件安全漏洞检查方法,其可由计算机或者类似的运算装置执行。图1所示为一种计算机的结构框图。如图1所示,计算机100包括一个或多个(图中仅示出一个)处理器102、存储器104、以及传输模块106。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储软件程序以及模块,如本发明实施例中的跨终端输入方法、装置及系统对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的跨终端输入方法、装置及系统。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至电子装置100。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输模块106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输模块106包括一个网络适配器(NetworkInterface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网进行通讯。在一个实例中,传输模块106为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
图2为第一实施例提供的动画源文件漏洞检测方法的流程图。如图2所示,该方法包括以下步骤:
步骤S110、对该动画源文件进行反编译以获取该动画源文件的程序结构及语法模型。
在步骤S110之前,可首先获取要进行漏洞检查的动画源文件。若动画源文件存储在本机的存储器内,则可直接读取;若动画源文件是位于网络中,则可通过传输模块106连接至网络,从该网络中下载动画源文件。上述的动画源文件例如是flash动画源文件,其文件扩展名为“.swf”。
获取动画源文件后,对其进行反编译操作,获取动画源文件的程序结构及语法模型。上述的语法模型例如是指语句内存模型(treemodel)及字符名集合等信息。语句内存模型为临时内存结构,包含程序词法语法详细信息,如控制结构、运算操作等程序关键信息。
步骤S120、将该程序结构及该语法模型转换成抽象语法树。
具体地,首先构建各类或各帧的程序结构,然后将每种语法元素(treeItem)分别翻译转换为抽象语法树(Abstract Syntax Tree,AST)的结点,并逐步构建起整个AST。
步骤S130、根据该抽象语法树构建每个函数的符号表和函数摘要。
对类中的每个方法,一个方法对应一个符号表,符号表包含该方法的数据关联关系,如赋值关系、函数调用关系、变量声明、形参信息、返回语句等信息。符号表由两个二维映射表组成,变量类型表和变量值表。变量类型表是方法中声明变量的类型记录,变量值表是方法中变量的数据关联。
构建符号表的过程为:从AST获取方法根结点,提取方法的形参变量信息;然后取得方法体的根节点,递归地获取每种关注的子结点,并提取关键信息。上述关注的子结点,例如是指赋值结点、函数调用结点、变量声明节点、返回节点等。关键信息包括变量名、变量声明信息及相互关联信息等。如对于赋值结点(SetProperty),获取变量名a,构建右值对象b(含所在行、所在方法、AST结点等信息的对象),并将<a,b>添入符号表的变量值表。在递归分析过程中,将变量的声明信息同时添入变量类型表。
上述的函数摘要由多个映射表构成,包括返回值与参数的关系、返回值与成员变量的关系、成员变量与参数或其他成员变量的关系、参数与其他参数或成员变量的关系等。构建函数摘要即是建立上述结构的过程。以返回值关联为例,需要遍历方法中所有的返回点,回溯追踪返回表达式的最终来源,若关联到方法形参,则收集返回值到该形参位置的关系,结果可保存在对应的映射表内
步骤S140、基于该符号表和函数摘要进行污点回溯追踪,在追踪过程中结合预注册的漏洞规则检测安全漏洞。
对于给定的过程内变量、表达式、成员变量,根据符号表信息迭代查找与当前位置最近的前驱,直到没有前驱或者变量值已稳定,则停止追踪,返回安全、危险等状态。若最近前驱为赋值,继续回溯追踪右值;若为函数调用,则查找函数是否已被摘要,若无则实时进行摘要,并获取该函数返回值与参数的关联,继续回溯关联的参数;若当前回溯变量为类成员变量,前驱可能是该类的其他方法调用隐式传递(方法影响该成员变量的值),则需要回溯与该成员变量的最近关联。
对于步骤S140中发现的漏洞结果可添加至统一列表保存,在追踪完成后统一输出。
根据本实施例的动画源文件漏洞检测方法,可以自动化地将动画源文件转换为抽象语法树,进而根据抽象语法构建出符号表及函数摘要,可以无限迭代的追踪出一个变量是否危险,详细跟踪外部恶意数据在程序中的传递及漏洞的产生过程,相比于传统的关键字查询方式,漏洞检出率得以提高。
第二实施例提供一种动画源文件安全漏洞检查方法,其与第一实施例的方法相似,其不同之处在于,步骤S140具体包括:根据该符号表循环检查每个函数调用点,判断其是否为预注册的危险函数,若是则检测该危险函数的参数,若该参数为预定义的关键参数则回溯追踪该关键参数是否安全。
参阅图3,步骤S140具体可包括以下步骤:
步骤S210、根据符号表获取一个函数调用点。
步骤S220、判断获取的函数调用点是否为预注册的危险函数;若是则执行步骤S230,否则执行步骤S250。上述的预注册的危险函数是指可能带来安全风险的函数,例如读取外部资源的getURL函数。
可以理解,要进行步骤S220,就要了解哪些函数为预注册的危险函数。在一个实例中,上述的危险函数的列表存在于一个或多个配置文件内。因此在步骤S220之前,还可包括以下步骤:读取配置文件并根据该配置文件获取该预注册的危险函数列表、安全函数列表,以及外部数据源列表。追踪至安全函数列表内的函数无须再继续追踪,返回安全;追踪至外部数据源列表中的函数或变量无需再继续追踪,返回危险
步骤S230、判断该函数是否具有关键参数;若是则执行步骤S240,否则执行步骤S250。关键参数是指能够影响安全性的参数。以上述的getURL函数为例,一般来说,仅其中的资源定位符参数为关键参数。
步骤S240,回溯追踪该关键参数是否安全。
在一个实例中,步骤S240包括以下步骤:首先获取该关键参数的表达式;然后针对该表达式的每个节点进行以下步骤:若该结点为变量,则追踪该变量是否安全;若该结点为函数调用,则获取调用函数的函数摘要,若无函数摘要则实时构建函数摘要,并并根据摘要信息递归追踪该调用函数的关联参数或关联成员变量是否安全;若该结点为常量,则返回安全;若该结点为其他类型,则追踪该结点的子结点的表达式是否安全。
而追踪一个变量是否安全可包括以下步骤:
若该变量为外部输入变量则返回危险;若该变量为非字符串基本类型则返回安全;若该变量找不到任何关联和定义则返回危险;若该变量存在最近的关联值则递归追踪该关联值是否安全,并将该关联值的追踪结果作为该变量的追踪结果;若该变量不存在最近的关联值但该变量是类成员变量,则递归追踪该类成员变量是否安全,并将该类成员变量的追踪结果作为该变量的追踪结果。
在一个实例中,递归追踪该关联值是否安全包括:若该关联值的类型为赋值则递归追踪该赋值操作的右值表达式是否安全;若该关联值的类型为函数调用,则通过该函数已构建的函数摘要获取该关联值的关联值并追踪是否安全。
在一个实例中,递归追踪该类成员变量是否安全包括:获取该类成员变量最近的关联赋值或影响成员变量值的函数调用;若存在该最近的关联赋值或函数调用,则获取该类成员变量的关联值;以及递归追踪该类成员变量的关联值是否安全。
步骤S250,根据符号表判断是否是最后一个函数调用点;若是,则流程结束;否则流程再次回到步骤S210。
根据本实施例的动画源文件漏洞检测方法,可以自动化地将动画源文件转换为抽象语法树,进而根据抽象语法构建出符号表及函数摘要,可以无限迭代的追踪出一个变量是否危险,相比于传统的关键字查询方式,漏洞检出率得以提高。
第三实施例提供一种动画源文件安全漏洞检查方法,其与第一实施例的方法相似,其不同之处在于,参阅图4,在步骤S140之前还包括步骤S310:根据该抽象语法树收集类名、包名、引入的类名、以及类成员变量信息,优先分析引入的类内是否存在漏洞,并对引入的类进行摘要。
可以理解,在编程当中,出于使程序结构更加清晰的目的,将不同的程序模块放在不同的文件当中是一种常见的做法。通过引入语句(例如import)可在当前的程序模块中引入保存在其他文件中的程序模块。而且这些被引入的程序模块仍然可以引用其他的程序模块。而这些程序模块都会被执行,因此在检查动画源文件漏洞时,若漏掉这些被引入的模块无疑会具有漏检的风险。因此在本实施例的方法中,在进行本程序模块的污点回溯之前,先进行这些被引入的模块的污点回溯,避免安全漏洞被漏检。
第四实施例提供一种动画源文件安全漏洞检查方法,其与第一实施例的方法相似,其不同之处在于,参阅图5,在步骤S140之后还包括步骤S410、将该追踪结果添加至统一列表保存,在追踪完成后统一输出。
对于每个漏洞,可记录以下信息:漏洞类型、触发点和数据流轨迹,其中触发点和轨迹中的值由函数名和行数定位在代码中位置,输出时统一计算并翻译得到源代码。
根据本实施例的动画源文件漏洞检测方法,可以采用直观的方式将各漏洞输出,方便用户查看并进行人工追踪确认。
可以理解,以上虽然以各实施例对上述的动画源文件漏洞检测方法进行了说明,但以上实施例并不能对上述动画源文件漏洞检测方法作出任何限制,例如,本领域具有通常知识者可在上述的实施例的基础上进行简单变化,或者将上述的各实施例的步骤进行组合而得到新的实施方式,这些新的实施方式也应包含在上述的动画源文件漏洞检测方法的范围内。
第五实施例提供一种动画源文件安全漏洞检查装置,参阅图6,上述的装置包括:反编译解析模块51、AST构建模块52、符号表模块53、函数摘要模块54、以及污点追踪模块55。
反编译解析模块51用于对该动画源文件后进行反编译以获取该动画源文件的程序结构及语法模型。
AST构建模块52用于将该程序结构及该语法模型转换成抽象语法树;符号表构建模块53用于根据该抽象语法树构建每个函数的符号表。
函数摘要模块54用于根据该抽象语法树构建每个函数的函数摘要。
污点追踪模块55用于基于该符号表和函数摘要进行污点回溯追踪,并将检查结果输出。具体地,污点追踪模块55用于进行以下步骤:获取该参数的表达式;根据该表达式的节点类型进行:若该结点为变量,则追踪该变量是否安全;若该结点为函数调用,则获取调用函数的摘要,并递归追踪该调用函数的关联参数或关联成员变量是否安全;若该结点为常量,则返回安全;若该结点为其他类型,则追踪该结点的子结点的表达式是否安全。
追踪该变量是否安全包括:若该变量为外部输入变量则返回危险;若该变量为非字符串基本类型则返回安全;若该变量找不到任何关联和定义则返回危险;若该变量存在最近的关联值则递归追踪该关联值是否安全,并将该关联值的追踪结果作为该变量的追踪结果;若该变量不存在最近的关联值但该变量是类成员变量,则递归追踪该类成员变量是否安全,并将该类成员变量的追踪结果作为该变量的追踪结果。
递归追踪该关联值是否安全包括:若该关联值的类型为赋值则递归追踪该赋值操作的右值表达式是否安全;若该关联值的类型为函数调用,则通过该函数摘要获取该关联值的关联值并追踪是否安全。
递归追踪该类成员变量是否安全包括:获取该类成员变量最近的关联赋值或函数调用;若存在该最近的关联赋值或函数调用,则获取该类成员变量的关联值;以及递归追踪该类成员变量的关联值是否安全。
上述的装置还可包括过程内检测模块56,用于:根据该符号表循环检查每个函数调用点,判断其是否为预注册的危险函数,若是则检测该危险函数的参数,若该参数为预定义的关键参数则启动该污点追踪模块以回溯追踪该关键参数是否安全。
上述的装置还可包括类摘要预处理模块57,用于根据该抽象语法树收集类名、包名、引入的类名、以及类成员变量信息,并先递归分析引入的类内是否存在漏洞。
上述的装置还可包括规则管理模块58,用于读取配置文件并根据该配置文件获取该预注册的危险函数列表及安全函数列表,以及外部数据源列表。
上述的装置还可包括漏洞管理模块59,用于将该追踪结果添加至统一列表保存,在追踪完成后统一输出。
上述的装置还可包括AST管理模块60,用于管理AST构建模块52构建的抽象语法树,根据其他各模块的请求返回抽象语法树内的信息及漏洞点AS源代码信息。
关于本实施例的装置的其他细节,还可进一步参阅前述实施例中的动画源文件漏洞检查方法,在此不再赘述。
根据本实施例的动画源文件漏洞检测方法,可以自动化地将动画源文件转换为抽象语法树,进而根据抽象语法构建出符号表及函数摘要,可以无限迭代的追踪出一个变量是否危险,详细跟踪外部恶意数据在程序中的传递及漏洞的产生过程,相比于传统的关键字查询方式,漏洞检出率得以提高。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (20)
1.一种动画源文件安全漏洞检查方法,其特征在于,该方法包括:
对该动画源文件进行反编译以获取该动画源文件的程序结构及语法模型;
将该程序结构及该语法模型转换成抽象语法树;
根据该抽象语法树构建每个函数的符号表,并对于类内的每个方法,遍历其所有结点,获取返回值与参数的关系、返回值与成员变量的关系、成员变量与参数或其他成员变量的关系、参数与其他参数或成员变量的关系,并将结果分别存储在多个映射表内,得到由多个映射表所构成的函数摘要;以及
基于该符号表和函数摘要进行污点回溯追踪,在追踪过程中结合预注册的漏洞规则检测安全漏洞。
2.如权利要求1所述的动画源文件安全漏洞检查方法,其特征在于,基于该符号表和函数摘要进行污点回溯追踪包括:
根据该符号表遍历检查每个函数调用点,判断其是否为预注册的危险函数,若是则检测该危险函数的参数,若该参数为预定义的关键参数则回溯追踪该关键参数是否安全。
3.如权利要求2所述的动画源文件安全漏洞检查方法,其特征在于,回溯追踪该关键参数是否安全包括:
获取该关键参数的表达式;
根据该表达式的结点类型进行:
若该结点为变量,则追踪该变量是否安全;或者
若该结点为函数调用,则获取调用函数的函数摘要,若无则实时构建函数摘要,并根据摘要信息递归追踪该调用函数的关联参数或关联的类成员变量是否安全;或者
若该结点为常量,则返回安全;或者
若该结点为其他类型,则追踪该结点的子结点的表达式是否安全。
4.如权利要求3所述的动画源文件安全漏洞检查方法,其特征在于,追踪该变量是否安全包括:
若该变量为外部输入变量则返回危险;或者
若该变量为非字符串基本类型则返回安全;或者
若该变量找不到任何关联和定义则返回危险;或者
若该变量存在最近的关联值则递归追踪该关联值是否安全,并将该关联值的追踪结果作为该变量的追踪结果;或者
若该变量不存在最近的关联值但该变量是类成员变量,则递归追踪该类成员变量是否安全,并将该类成员变量的追踪结果作为该变量的追踪结果。
5.如权利要求4所述的动画源文件安全漏洞检查方法,其特征在于,递归追踪该关联值是否安全包括:
若该关联值的类型为赋值则递归追踪该赋值操作的右值表达式是否安全;或者
若该关联值的类型为函数调用,则通过该函数已构建的函数摘要获取该关联值的关联值并追踪是否安全。
6.如权利要求4所述的动画源文件安全漏洞检查方法,其特征在于,递归追踪该类成员变量是否安全包括:
获取该类成员变量最近的关联赋值或影响成员变量值的函数调用;
若存在该最近的关联赋值或函数调用,则获取该类成员变量的关联值;以及
递归追踪该类成员变量的关联值是否安全。
7.如权利要求1所述的动画源文件安全漏洞检查方法,其特征在于,还包括:
根据该抽象语法树收集类名、包名、引入的类名、以及类成员变量信息,优先分析引入的类内是否存在漏洞,并对引入的类进行摘要。
8.如权利要求1所述的动画源文件安全漏洞检查方法,其特征在于,还包括:
读取配置文件并根据该配置文件获取预注册的危险函数列表、安全函数列表及外部数据源列表,追踪至安全函数列表内的函数无须再继续追踪,返回安全;追踪至外部数据源列表中的函数或变量无需再继续追踪,返回危险。
9.如权利要求1所述的动画源文件安全漏洞检查方法,其特征在于,还包括:将污点回溯追踪发现的漏洞结果添加至统一列表保存,在追踪完成后统一输出。
10.如权利要求1所述的动画源文件安全漏洞检查方法,其特征在于,根据该抽象语法树构建符号表包括:
从该抽象语法树获取方法根结点,提取方法的形参变量信息;
递归地获取该方法根结点的每种关注的子结点,并提取该子结点的关键信息,该关注的子结点包括赋值结点、函数调用结点、变量声明结点、返回结点,该关键信息包括变量名、变量声明信息及相互关联信息;以及
分别将该关键信息存储至二维映射表内。
11.一种动画源文件安全漏洞检查装置,其特征在于,包括:
反编译解析模块,用于对该动画源文件进行反编译以获取该动画源文件的程序结构及语法模型;
抽象语法树构建模块,用于将该程序结构及该语法模型自动转换成抽象语法树;
符号表构建模块,用于根据该抽象语法树构建每个函数的符号表;
函数摘要模块,用于根据该抽象语法树构建每个函数的函数摘要;以及
污点追踪模块,用于基于该符号表和函数摘要进行污点回溯追踪,在追踪过程中结合预注册的漏洞规则检测安全漏洞;
其中,该函数摘要模块用于:
对于类内的每个方法,遍历其所有结点,获取返回值与参数的关系、返回值与成员变量的关系、成员变量与参数或其他成员变量的关系、参数与其他参数或成员变量的关系,并将结果分别存储在多个映射表内。
12.如权利要求11所述的动画源文件安全漏洞检查装置,其特征在于,还包括过程内检测模块,用于:
根据该符号表遍历检查每个函数调用点,判断其是否为预注册的危险函数,若是则检测该危险函数的参数,若该参数为预定义的关键参数则启动该污点追踪模块以回溯追踪该关键参数是否安全。
13.如权利要求12所述的动画源文件安全漏洞检查装置,其特征在于,该污点追踪模块回溯追踪该关键参数是否安全时用于进行:
获取该参数的表达式;
根据该表达式的结点类型进行:
若该结点为变量,则追踪该变量是否安全;或者
若该结点为函数调用,则获取调用函数的函数摘要,若无则实时构建摘要,并根据摘要信息递归追踪该调用函数的关联参数或关联的类成员变量是否安全;或者
若该结点为常量,则返回安全;或者
若该结点为其他类型,则追踪该结点的子结点的表达式是否安全。
14.如权利要求13所述的动画源文件安全漏洞检查装置,其特征在于,追踪该变量是否安全包括:
若该变量为外部输入变量则返回危险;或者
若该变量为非字符串基本类型则返回安全;或者
若该变量找不到任何关联和定义则返回危险;或者
若该变量存在最近的关联值则递归追踪该关联值是否安全,并将该关联值的追踪结果作为该变量的追踪结果;或者
若该变量不存在最近的关联值但该变量是类成员变量,则递归追踪该类成员变量是否安全,并将该类成员变量的追踪结果作为该变量的追踪结果。
15.如权利要求14所述的动画源文件安全漏洞检查装置,其特征在于,递归追踪该关联值是否安全包括:
若该关联值的类型为赋值则递归追踪该赋值操作的右值表达式是否安全;或者
若该关联值的类型为函数调用,则通过该函数摘要获取该关联值的关联值并追踪是否安全。
16.如权利要求14所述的动画源文件安全漏洞检查装置,其特征在于,递归追踪该类成员变量是否安全包括:
获取该类成员变量最近的关联赋值或函数调用;
若存在该最近的关联赋值或函数调用,则获取该类成员变量的关联值;以及
递归追踪该类成员变量的关联值是否安全。
17.如权利要求11所述的动画源文件安全漏洞检查装置,其特征在于,还包括:类摘要预处理模块,用于根据该抽象语法树收集类名、包名、引入的类名、以及类成员变量信息,并先递归分析引入的类内是否存在漏洞。
18.如权利要求11所述的动画源文件安全漏洞检查装置,其特征在于,还包括:规则管理模块,用于读取配置文件并根据该配置文件获取该预注册的危险函数列表及安全函数列表,位于该安全函数列表内的函数无须追踪是否安全。
19.如权利要求11所述的动画源文件安全漏洞检查装置,其特征在于,还包括:漏洞管理模块,用于将该追踪结果添加至统一列表保存,在追踪完成后统一输出。
20.如权利要求11所述的动画源文件安全漏洞检查装置,其特征在于,该符号表构建模块用于:
从该抽象语法树获取方法根结点,提取方法的形参变量信息;
递归地获取该方法根结点的每种关注的子结点,并提取该子结点的关键信息,该关注的子结点包括赋值结点、函数调用结点、变量声明结点、返回结点,该关键信息包括变量名、变量声明信息及相互关联信息;以及
分别将该关键信息存储至二维映射表内。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310295820.3A CN104298921B (zh) | 2013-07-15 | 2013-07-15 | 动画源文件安全漏洞检查方法及装置 |
PCT/CN2014/081643 WO2015007166A1 (en) | 2013-07-15 | 2014-07-04 | Method and apparatus for detecting security vulnerability for animation source file |
US14/501,897 US9426177B2 (en) | 2013-07-15 | 2014-09-30 | Method and apparatus for detecting security vulnerability for animation source file |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310295820.3A CN104298921B (zh) | 2013-07-15 | 2013-07-15 | 动画源文件安全漏洞检查方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104298921A CN104298921A (zh) | 2015-01-21 |
CN104298921B true CN104298921B (zh) | 2019-01-29 |
Family
ID=52318644
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310295820.3A Active CN104298921B (zh) | 2013-07-15 | 2013-07-15 | 动画源文件安全漏洞检查方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104298921B (zh) |
WO (1) | WO2015007166A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106295346B (zh) * | 2015-05-20 | 2022-08-30 | 深圳市腾讯计算机系统有限公司 | 一种应用漏洞检测方法、装置及计算设备 |
US10339304B2 (en) * | 2016-03-15 | 2019-07-02 | Symantec Corporation | Systems and methods for generating tripwire files |
CN107038115B (zh) * | 2016-11-14 | 2018-05-04 | 平安科技(深圳)有限公司 | 应用软件安全漏洞检测方法和系统 |
CN108614695A (zh) * | 2016-12-06 | 2018-10-02 | 北京奇虎科技有限公司 | 快速定位安卓应用代码文件中的指定内容的方法和装置 |
CN109508296A (zh) * | 2018-11-22 | 2019-03-22 | 北京知道创宇信息技术有限公司 | 数据检测方法、装置及电子设备 |
CN110532167B (zh) * | 2019-07-05 | 2021-05-04 | 华东师范大学 | 一种基于模型转换的状态机模型时序性质验证方法 |
CN110532166B (zh) * | 2019-07-05 | 2021-05-04 | 华东师范大学 | 一种基于模型转换的状态机模型时序性质验证系统 |
CN111506900B (zh) * | 2020-04-15 | 2023-07-18 | 抖音视界有限公司 | 漏洞检测方法、装置、电子设备及计算机存储介质 |
CN111666218B (zh) * | 2020-06-08 | 2023-06-13 | 抖音视界有限公司 | 代码审计方法、装置、电子设备及介质 |
CN111753302A (zh) * | 2020-07-15 | 2020-10-09 | 腾讯科技(深圳)有限公司 | 检测代码漏洞的方法、装置、计算机可读介质及电子设备 |
CA3190145A1 (en) * | 2020-08-27 | 2022-03-03 | Satya V. Gupta | Automated application vulnerability and risk assessment |
CN112100072B (zh) * | 2020-09-16 | 2024-04-19 | 广州虎牙科技有限公司 | 应用程序代码的静态检测方法、装置、设备及介质 |
CN115618363B (zh) * | 2022-11-22 | 2023-03-21 | 北京邮电大学 | 漏洞路径的挖掘方法及相关设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101482847A (zh) * | 2009-01-19 | 2009-07-15 | 北京邮电大学 | 一种基于安全漏洞缺陷模式的检测方法 |
CN101661543A (zh) * | 2008-08-28 | 2010-03-03 | 西门子(中国)有限公司 | 软件源代码安全漏洞的检测方法及检测装置 |
CN102693396A (zh) * | 2012-06-11 | 2012-09-26 | 中南大学 | 一种基于虚拟执行模式的Flash漏洞检测方法 |
CN102945203A (zh) * | 2012-10-26 | 2013-02-27 | 深圳出入境检验检疫局信息中心 | 一种用于移动互联网应用的代码安全测试方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100461132C (zh) * | 2007-03-02 | 2009-02-11 | 北京邮电大学 | 基于源代码静态分析的软件安全代码分析器及其检测方法 |
CN102955914B (zh) * | 2011-08-19 | 2015-11-25 | 百度在线网络技术(北京)有限公司 | 一种源文件安全漏洞的检测方法及检测装置 |
-
2013
- 2013-07-15 CN CN201310295820.3A patent/CN104298921B/zh active Active
-
2014
- 2014-07-04 WO PCT/CN2014/081643 patent/WO2015007166A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101661543A (zh) * | 2008-08-28 | 2010-03-03 | 西门子(中国)有限公司 | 软件源代码安全漏洞的检测方法及检测装置 |
CN101482847A (zh) * | 2009-01-19 | 2009-07-15 | 北京邮电大学 | 一种基于安全漏洞缺陷模式的检测方法 |
CN102693396A (zh) * | 2012-06-11 | 2012-09-26 | 中南大学 | 一种基于虚拟执行模式的Flash漏洞检测方法 |
CN102945203A (zh) * | 2012-10-26 | 2013-02-27 | 深圳出入境检验检疫局信息中心 | 一种用于移动互联网应用的代码安全测试方法 |
Non-Patent Citations (1)
Title |
---|
基于可回溯动态污点分析的攻击特征生成方法;刘豫等;《通信学报》;20120531;正文第4页第1段-第7页倒数第2段 |
Also Published As
Publication number | Publication date |
---|---|
CN104298921A (zh) | 2015-01-21 |
WO2015007166A1 (en) | 2015-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104298921B (zh) | 动画源文件安全漏洞检查方法及装置 | |
US9426177B2 (en) | Method and apparatus for detecting security vulnerability for animation source file | |
CN103455759B (zh) | 一种页面漏洞检测装置及检测方法 | |
CN103577324B (zh) | 移动应用中隐私信息泄露的静态检测方法 | |
CN107292170B (zh) | Sql注入攻击的检测方法及装置、系统 | |
CN103324470B (zh) | 一种Web系统生成的方法和装置 | |
CN107341399B (zh) | 评估代码文件安全性的方法及装置 | |
CN106295346B (zh) | 一种应用漏洞检测方法、装置及计算设备 | |
CN106649120A (zh) | 一种数据获取方法、分析方法及系统 | |
CN113342639B (zh) | 小程序安全风险评估方法和电子设备 | |
CN109800258A (zh) | 数据文件部署方法、装置、计算机设备及存储介质 | |
Schiewe et al. | Advancing static code analysis with language-agnostic component identification | |
CN105243019A (zh) | 一种检测python代码漏洞的方法及装置 | |
CN104331663A (zh) | web shell的检测方法以及web服务器 | |
CN107347076A (zh) | Ssrf漏洞的检测方法及装置 | |
CN104537305B (zh) | 网站漏洞检测方法和系统 | |
CN109145235A (zh) | 用于解析网页的方法、装置及电子设备 | |
CN104750463B (zh) | 一种插件开发方法及系统 | |
CN109388557A (zh) | 一种控件遍历方法、计算机可读存储介质及终端设备 | |
CN117113347A (zh) | 一种大规模代码数据特征提取方法及系统 | |
CN112069052B (zh) | 一种异常对象检测方法、装置、设备及存储介质 | |
CN104836779A (zh) | XSS漏洞检测方法、系统和Web服务器 | |
CN106790133A (zh) | 一种应用层协议解析方法及装置 | |
CN103442016B (zh) | 基于网站指纹推送白名单的方法及系统 | |
CN111176980B (zh) | 调试环境和运行环境分离的数据分析方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |