检测移动智能终端的源代码安全的方法、装置及系统的制作方法

文档序号:6499090阅读:175来源:国知局
检测移动智能终端的源代码安全的方法、装置及系统的制作方法
【专利摘要】本发明公开了一种检测移动智能终端的源代码安全的方法,包括:S1.抓取移动智能终端的源代码;S2.对所述的源代码进行语法和词法解析,将所述的源代码转化为标准的AST树;S3.调用源代码规则数据库,根据所述的规则,对所述的AST树进行解析分析,获取分析数据;S4.输出所述的分析数据。本发明还公开了一种检测移动智能终端的源代码安全的装置以及系统。本发明提供的检测移动智能终端的源代码安全的方法、装置以及系统能通过对源代码的静态分析,一方面可以找出潜在的风险,从内对软件进行检测,提高代码的安全性,另一方面也可以进一步提高代码的质量可以使得软件的安全性得到很大程度的提高。
【专利说明】检测移动智能终端的源代码安全的方法、装置及系统
【技术领域】
[0001]本发明涉及源代码安全的领域,特别涉及一种检测移动智能终端的源代码安全的方法、装置及系统。
【背景技术】
[0002]目前,应用软件的自身的安全问题是我们信息安全领域最为关心的问题,也是我们面临的一个新的领域,需要我们所有的在应用软件开发和管理的各个层面的成员共同的努力来完成。越来越多的安全产品厂商也已经在考虑关注软件开发的整个流程,将安全检测与监测融入需求分析、概要设计、详细设计、编码、测试等各个阶段以全面的保证应用安全。
[0003]对于应用安全性的检测目前大多数是通过测试的方式来实现。测试大体上分为黑盒测试和白盒测试两种。黑盒测试一般使用的是渗透的方法,这种方法仍然带有明显的黑盒测试本身的不足,需要大量的测试用例来进行覆盖,且测试完成后仍无法保证软件是否仍然存在风险。如何找到更有效的测移动智能终端的源代码安全的方法、装置以及系统成为人们的一道课题。

【发明内容】

[0004]为解决以上的问题,本发明提供检测移动智能终端的源代码安全的方法、装置及系统。
[0005]本发明公开了一种检测移动智能终端的源代码安全的方法,包括:
[0006]S1.抓取移动智能终端的源代码;
[0007]S2.对所述的源代码进行语法和词法解析,将所述的源代码转化为标准的AST树;
[0008]S3.调用源代码规则数据库,根据所述的规则,对所述的AST树进行解析分析,获取分析数据;
[0009]S4.输出所述的分析数据。
[0010]在本发明所述的检测移动智能终端的源代码安全的方法中,所述的步骤S3中对所述的解析分析包括对所述的AST树进行数据流分析,具体是:通过遍历所述的AST树,提取出需要的数据信息,并根据所述的规则,对所述的数据信息进行筛选,向程序分析模块提供接口以读取所述的数据信息。
[0011]在本发明所述的检测移动智能终端的源代码安全的方法中,所述步骤S3对所述的解析分析包括:对所述的AST树进行控制流分析,具体是:通过遍历所述的AST树,生成对应的程序控制依赖图,并向安全分析调度模块提供接口以读取这些信息。
[0012]在本发明所述的检测移动智能终端的源代码安全的方法中,所述步骤S3对所述的解析分析包括:对所述的AST树进行结构分析,具体是:提取所述的AST树,根据所述的规则,提取程序的主要结构信息,所述的主要结构信息包括入口点信息、主要方法名、方法关系。[0013]在本发明所述的检测移动智能终端的源代码安全的方法中,所述步骤S3对所述的解析分析包括:对所述的AST树进行安全分析,具体是:根据所述的规则,对所述的主要结构信息进行安全性分析。
[0014]本发明公开了一种检测移动智能终端的源代码安全的装置,包括:
[0015]源代码抓取单元,用于抓取移动智能终端的源代码;
[0016]源代码转化单元,用于对所述的源代码进行语法和词法解析,将所述的源代码转化为标准的AST树;
[0017]AST树分析单元,用于调用源代码规则数据库,根据所述的规则,对所述的AST树进行解析分析,获取分析数据;
[0018]检测结果输出单元,用于输出所述的分析数据。
[0019]在本发明所述的检测移动智能终端的源代码安全的装置中,所述的AST树分析单元包括以下子单元,具体是:
[0020]提取源代码的数据流信息并分析的数据流分析器;
[0021]提取源代码的控制流信息并分析的控制流分析器;
[0022]提取源代码的主要结构并分析的结构分析器;
[0023]提取源代码的主要结构并进行安全分析的安全分析器。
[0024]本发明公开了一种检测移动智能终端的源代码安全的系统,包括存放源代码的服务器,与所述的服务器相连的用于存放源代码规则的数据库及客户端,其特征在于,在所述的服务器上具有上述的通过对源代码转化而成的AST树进行解析而输出检测结果的检测移动智能终端的源代码安全的装置。
[0025]在本发明所述的检测移动智能终端的源代码安全的系统中,所述的客户端通过网络与所述的服务器相连,所述的网络包括:WIF1、GPRS、蓝牙、3G。
[0026]在本发明所述的检测移动智能终端的源代码安全的系统中,所述的客户端包括电脑及智能手机。
[0027]本发明的一种检测移动智能终端的源代码安全的方法、装置以及设备,具有以下有益效果:
[0028]本技术方案通过对源代码的静态分析,一方面可以找出潜在的风险,从内对软件进行检测,提高代码的安全性,另一方面也可以进一步提高代码的质量可以使得软件的安全性得到很大程度的提高。
【专利附图】

【附图说明】
[0029]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0030]图1为本发明第一实施例一种检测移动智能终端的源代码安全的方法流程示意图;
[0031]图2为本发明第一实施例一种检测移动智能终端的源代码安全的装置功能方框图;[0032]图3为本发明一种检测移动智能终端的源代码安全的系统示意图。
【具体实施方式】
[0033]通过下面给出的本发明的具体实施例可以进一步了解本发明,但它们不是对本发明的限定。对于本领域的技术人员根据上述
【发明内容】
所作的一些非本质的改进与调整,也视为落在本发明的保护范围内。
[0034]请参阅图1,本发明第一实施例,一种检测移动智能终端的源代码安全的方法,包括:
[0035]S1.抓取移动智能终端的源代码;
[0036]S2.对所述的源代码进行语法和词法解析,将所述的源代码转化为标准的AST树;
[0037]当用户选择源代码路径后,系统首先对源代码进行语法和词法解析,将源代码转化为标准的AST树,进而系统对AST树进行数据流和控制流分析,得到相关项目的函数/方法信息(包括名称,个数,参数,方法间的相互调用关系等)和变量信息(包括变量名,使用变量的函数、函数/方法以及变量在不同位置的值等)以及函数/方法间的控制依赖关系。
[0038]S3.调用源代码规则数据库,根据所述的规则,对所述的AST树进行解析分析,获取分析数据;
[0039]在数据流和控制流分析的结果基础上,系统根据定义的安全规则调用不同的解析器,解析器根据规则的类型可分为SQL注入解析器,密码检验解析器等等。在调用解析器时,系统根据规则的内容自动调用相应类型的解析器,当解析器分析完毕后,将结果存在结果缓冲池中,等待所有的解析器都工作完毕后,系统将分析结果统一输出给用户。
[0040]S4.输出所述的分析数据。
[0041]报告生成器是对代码分析的结果进行分析并提交给用户,并生成相应的审核报告,用户接口模块负责与用户进行交互,一方面可以接受用户扫描源代码
[0042]的请求,另一方面则将扫描分析的结果输出给用户。结果包括问题类型,问题所处的位置,以及问题的具体跟踪信息等。同时该系统还根据不同的问题类型给出了具体的参考解决方案。
[0043]进一步地,所述的步骤S3中对所述的解析分析包括对所述的AST树进行数据流分析,具体是:通过遍历所述的AST树,提取出需要的数据信息,并根据所述的规则,对所述的数据信息进行筛选,向程序分析模块提供接口以读取所述的数据信息。
[0044]进一步地,所述步骤S3对所述的解析分析包括:对所述的AST树进行控制流分析,具体是:通过遍历所述的AST树,生成对应的程序控制依赖图,并向安全分析调度模块提供接口以读取这些信息。
[0045]进一步地,所述步骤S3对所述的解析分析包括:对所述的AST树进行结构分析,具体是:提取所述的AST树,根据所述的规则,提取程序的主要结构信息,所述的主要结构信息包括入口点信息、主要方法名、方法关系。
[0046]进一步地,所述步骤S3对所述的解析分析包括:对所述的AST树进行安全分析,具体是:根据所述的规则,对所述的主要结构信息进行安全性分析。
[0047]请参阅图2、一种检测移动智能终端的源代码安全的装置1,包括:
[0048]源代码抓取单元10,用于抓取移动智能终端的源代码;[0049]源代码转化单元20,用于对所述的源代码进行语法和词法解析,将所述的源代码转化为标准的AST树;
[0050]AST树分析单元30,用于调用源代码规则数据库,根据所述的规则,对所述的AST树进行解析分析,获取分析数据;
[0051]规则库负责为代码分析引擎提供代码分析规则支持。
[0052]检测结果输出单元40,用于输出所述的分析数据。
[0053]进一步地,AST树分析单元30包括以下子单元,具体是:
[0054]提取源代码的数据流信息并分析的数据流分析器;
[0055]提取源代码的控制流信息并分析的控制流分析器;
[0056]提取源代码的主要结构并分析的结构分析器;
[0057]提取源代码的主要结构并进行安全分析的安全分析器。
[0058]具体来说,
[0059]各个子单元的主要功能设计如下:
[0060]代码解析器是负责对源程序进行建模,通过词法分析和语法分析,将源代码转换成中间表示,并根据后续分析模块的需要,生成特定的语法树和数据结构,为后继分析提供便利。代码解析器负责对源程序进行词法和语法分析,抽出足够多的信息并转换成中间表示,根据后继分析的需要生成特定的抽象语法树结构。
[0061]我们采用AST (抽象语法树)作为中间表示,从源程序生成其相应的AST形式是后续的程序分析的基础。
[0062]抽象语法树的具体形式的选择,即抽象语法树中包含的信息的多少,影响程序分析的效率。抽象语法树中包含的信息在满足程序后续静态分析需要的同时,也需要注意包含的其他信息越少,算法分析的效率将会越高。抽象语法树能否正确地生成,并包含足够的信息将决定后续的程序分析的成败。在本软件的实现过程中,我们将选择编译器前端来生成抽象语法树。
[0063]数据流分析器是在代码解析的基础上,提取程序的数据流信息。数据流分析通过遍历AST (抽象语法树),提取出需要的数据信息,并根据用户规则,对这些信息进行刷选,向程序分析模块提供接口以读取这些信息。
[0064]设计原理
[0065]变量X的定值是一个语句,它赋值或可能赋值给X。
[0066]最普通的定值是对X的赋值或读值到X的语句。这些语句真正对X定值,称为X的无二义定值。还有一些语句,它们可能对X定值,称为二义定值。
[0067]称a定值d到达程序点P,若存在路径从紧跟d的点到达P,且在这条路径上d没有被注销。如果沿着这条路径的某两点间是读a或对a的赋值,那么我们注销变量a的那个定值。
[0068]直观上,如果某个变量a的定值d到达点P,那么P引用a的最新定值可能在d点。只有a的无二义定值注销a的其它定值。这样,一个点可以由一条路径上的无二义定值和同一个变量出现在无二义定值之后的二义定值到达。
[0069]控制流分析器主要是在代码解析的基础上,提取程序的控制流信息。控制流分析根据规则,通过遍历AST (抽象语法树),生成对应的程序控制依赖图,并向安全分析调度模块提供接口以读取这些信息。
[0070]程序控制流图,是对程序中每个函数结构的图形化表示,它既表示了函数的控制结构信息,也表示了程序语句执行的流向。程序控制流图是程序逻辑结构的图形表示,通过不同的实现算法,可得到各种形式的控制流图,例如树型图和有向图。程序的控制流,可以用控制流程图来描述。控制流程图由节点和边组成,节点分为分支点和汇聚点,边被称作分支,对应于程序中一段顺序执行的语句序列(或称语句块、语句段)。
[0071]为了定义程序的控制流程图,首先需要针对程序语言中各种语句的结构特点,定义分支及其相关概念,建立起分支与程序语句之间准确简明的对应关系。针对常见的开发语言,给出以下常见概念的定义。
[0072](I)分支点
[0073]分支点是指程序判断语句的判定部分,这些判断语句根据判定结果的不同而执行不同的分支。与判断语句一样,每个分支点有一个“流入”分支和多个“流出”分支;特殊的,当分支点上的判定条件是一个常量时,分支点只有一个“流出”分支。分支点有五种类型,分别对应各种判断语句的判定部分:
[0074]I) if分支点:对应if语句的if (exp)部分。
[0075]2)switch 分支点:对应 switch 语句的 switch (exp)部分。
[0076]3) for 分支点:对应 for 语句的 for (init ;exp ;inc)部分。
[0077]4) while分支点:对应while语句的while (exp)部分。
[0078]5) do-while 分支点:对应 do-while 语句的 while (exp)部分。
[0079]分支点在图中用菱形表示,并标记判断语句的关键字。
[0080](2)汇聚点
[0081]汇聚点是指程序中多于一条控制流汇聚到一起的位置。通常,这个位置不对应任何语句或语句片断,而是对应于程序语句的一个抽象结束位置。汇聚点有多个“流入”分支,但只有一个或者没有“流出”的分支。汇聚点可分为以下几种类型:
[0082]I)判断语句的汇聚点:每个判断语句有一个汇聚点,位于判断语句块的“结束”位置。
[0083]2)标号语句的汇聚点:每个标号有一个汇聚点,位于标号的“:”之后。
[0084]3) case和default的汇聚点:位于其“:”之后。
[0085]4)方法入口点:对应于方法体的开括号“ {”。
[0086]5)方法结束点:对应于方法体的闭括号
[0087]6)分支跳转点:对应于跳转语句。
[0088]汇聚点在图中用圆点表示。
[0089]分支点和汇聚点合称控制流图中的节点,在不严格区分的情况下,统称分支点。
[0090](3)分支
[0091]程序中任意两个节点之间如果存在一个直接的控制流,即从一个节点执行O条或任意有限条顺序语句可到达另一个节点,其间不再包含任何其它节点,则称这两个节点之间的直接的控制流为一条分支,这两个节点称作是相邻节点。特殊地,相邻节点之间的直接控制流,如果是由执行O条顺序语句而形成,这两个节点之间的分支称作虚分支
[0092]结构分析器的目标是在代码分析引擎提取出的语法树的基础上,根据安全规则库提供的代码分析规则,提取程序的主要结构(如入口点信息、主要方法名、方法关系等信息)。
[0093]当结构分析器被要求根据指定的安全规则对程序源代码进行分析时,首先根据代码解析模块提供的语法树,根据规则中的API集合,提取出特定的语法树子集;此后根据规则将关键API需要检测的参数提取出来,通过控制流分析器提取变量相关的结构特征,并交给数据流分析器提取变量的数据流信息。最后,根据两个模块返回的结果,分析出安全问题,并将结果返回给调度模块。
[0094]安全分析器可以根据安全规则库提供的信息,调度结构分析器进行安全性分析,并生成报告表,提供接口供报告生成器调用。
[0095]分析调度模块作为常驻线程工作于系统中,当用户输入源代码后,首先经过程序解析模块将代码解析成语法树结构。分析调度模块开始工作后,其根据语法解析的结果和用户输入(如编程语言、安全分析的类别等)读取特定类型的安全规则,交给结构分析模块进行分析;在结构分析模块得到分析结果后,分析调度模块会将此结果交由评审报告产生模块进行下一步处理。
[0096]请参阅图3、一种检测移动智能终端的源代码安全的系统,包括存放源代码的服务器100,与服务器100相连的用于存放源代码规则的数据库200及客户端300,在服务器100上具有上述的通过对源代码转化而成的AST树进行解析而输出检测结果的检测移动智能终端的源代码安全的装置I。
[0097]进一步地,客户端300通过网络与服务器100相连,网络包括:WIF1、GPRS、蓝牙、3G。
[0098]客户端300包括电脑及智能手机。
[0099]本发明的一种检测移动智能终端的源代码安全的方法、装置以及设备,具有以下有益效果:
[0100]本技术方案通过对源代码的静态分析,一方面可以找出潜在的风险,从内对软件进行检测,提高代码的安全性,另一方面也可以进一步提高代码的质量可以使得软件的安全性得到很大程度的提高。
[0101]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种检测移动智能终端的源代码安全的方法,其特征在于,包括: 51.抓取移动智能终端的源代码; 52.对所述的源代码进行语法和词法解析,将所述的源代码转化为标准的AST树; 53.调用源代码规则数据库,根据所述的规则,对所述的AST树进行解析分析,获取分析数据; 54.输出所述的分析数据。
2.根据权利要求1所述的检测移动智能终端的源代码安全的方法,其特征在于,所述的步骤S3中对所述的解析分析包括对所述的AST树进行数据流分析,具体是:通过遍历所述的AST树,提取出需要的数据信息,并根据所述的规则,对所述的数据信息进行筛选,向程序分析模块提供接口以读取所述的数据信息。
3.根据权利要求1或2任一项所述的检测移动智能终端的源代码安全的方法,其特征在于,所述步骤S3对所述的解析分析包括:对所述的AST树进行控制流分析,具体是:通过遍历所述的AST树,生成对应的程序控制依赖图,并向安全分析调度模块提供接口以读取这些信息。
4.根据权利要求3所述的检测移动智能终端的源代码安全的方法,其特征在于,所述步骤S3对所述的解析分析包括:对所述的AST树进行结构分析,具体是:提取所述的AST树,根据所述的规则,提取程序的主要结构信息,所述的主要结构信息包括入口点信息、主要方法名、方法关系。
5.根据权利要求4所述的检测移动智能终端的源代码安全的方法,其特征在于,所述步骤S3对所述的解析分析包括:对所述的AST树进行安全分析,具体是:根据所述的规则,对所述的主要结构信息进行安全性分析。
6.一种检测移动智能终端的源代码安全的装置,其特征在于,包括: 源代码抓取单元,用于抓取移动智能终端的源代码; 源代码转化单元,用于对所述的源代码进行语法和词法解析,将所述的源代码转化为标准的AST树; AST树分析单元,用于调用源代码规则数据库,根据所述的规则,对所述的AST树进行解析分析,获取分析数据; 检测结果输出单元,用于输出所述的分析数据。
7.根据权利要求6所述的检测移动智能终端的源代码安全的装置,其特征在于,所述的AST树分析单元包括以下子单元,具体是: 提取源代码的数据流信息并分析的数据流分析器; 提取源代码的控制流信息并分析的控制流分析器; 提取源代码的主要结构并分析的结构分析器; 提取源代码的主要结构并进行安全分析的安全分析器。
8.—种检测移动智能终端的源代码安全的系统,包括存放源代码的服务器,与所述的服务器相连的用于存放源代码规则的数据库及客户端,其特征在于,在所述的服务器上具有如权利要求6所述的通过对源代码转化而成的AST树进行解析而输出检测结果的检测移动智能终端的源代码安全的装置。
9.根据权利要求8所述的检测移动智能终端的源代码安全的系统,其特征在于,所述的客户端通过网络与所述的服务器相连,所述的网络包括:WIF1、GPRS、蓝牙、3G。
10.根据权利要求8所述的检测移动智能终端的源代码安全的系统,其特征在于,所述的客户端包括电脑及智能手机。
【文档编号】G06F21/50GK103927473SQ201310016830
【公开日】2014年7月16日 申请日期:2013年1月16日 优先权日:2013年1月16日
【发明者】王甜, 魏理豪, 朱奕, 崔磊, 邹洪, 艾解清, 周开东, 张超, 粱哲恒 申请人:广东电网公司信息中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1