一种基于静态分析的应用系统代码安全扫描装置制造方法

文档序号:6490284阅读:362来源:国知局
一种基于静态分析的应用系统代码安全扫描装置制造方法
【专利摘要】本发明公开了一种基于静态分析的应用系统代码安全扫描装置,包括:代码解析模型单元,用于对源代码进行词法和语法解析,将源代码转化为标准的AST;代码分析引擎单元,用于对所述的AST执行数据流分析和控制流分析,得出分析结果;规则扫描库单元,用于在所述的单元代码分析引擎中利用发现安全漏洞的规则来定义规则库。本发明提供的基于静态分析的应用系统代码安全扫描装置缩短应用系统代码中安全漏洞检测的时间,帮助技术人员快速精确的定位问题代码的位置。
【专利说明】—种基于静态分析的应用系统代码安全扫描装置【技术领域】
[0001]本发明涉及应用系统领域,特别涉及一种基于静态分析的应用系统代码安全扫描
装置。
【背景技术】
[0002]随着网络的飞速发展,各种网络应用不断成熟,各种开发技术层出不穷,上网已经成为人们日常生活中的一个重要组成部分。在享受互联网带来的各种方便之处的同时,安全问题也变得越来越重要。黑客、病毒、木马等不断攻击着各种网站,如何保证网站的安全成为一个非常热门的话题。
[0003]根据IT研究与顾问咨询公司Gartner统计数据显示,75%的黑客攻击发生在应用层。而由NIST的统计显示92%的漏洞属于应用层而非网络层。因此,应用软件的自身的安全问题是我们信息安全领域最为关心的问题,也是我们面临的一个新的领域,需要我们所有的在应用软件开发和管理的各个层面的成员共同的努力来完成。越来越多的安全产品厂商也已经在考虑关注软件开发的整个流程,将安全检测与监测融入需求分析、概要设计、详细设计、编码、测试等各个阶段以全面的保证应用安全。

【发明内容】

[0004]为解决以上的问题,本发明提供一种提高整个软件开发的整个流程安全性的基于静态分析的应用系统代码安全扫描装置。
[0005]本发明提供一种基于静态分析的应用系统代码安全扫描装置,包括:
[0006]代码解析模型单元,用于对源代码进行词法和语法解析,将源代码转化为标准的AST ;
[0007]代码分析引擎单元,用于对所述的AST执行数据流分析和控制流分析,得出分析
结果;
[0008]规则扫描库单元,用于在所述的单元代码分析引擎中利用发现安全漏洞的规则来定义规则库。
[0009]在本发明所述的基于静态分析的应用系统代码安全扫描装置中,所述代码解析模型单元根据具有规范语法结构定义的开发语言的文法定义,对源程序进行词法分析和语法分析,并转换成中间表示,生成源代码相应的抽象语法树结构、类结构图和类关系图,建立起代码的解析模型。
[0010]在本发明所述的基于静态分析的应用系统代码安全扫描装置中,所述的开发语言包括:Java或C#。
[0011]在本发明所述的基于静态分析的应用系统代码安全扫描装置中,所述代码分析引擎单元由数据流分析引擎、控制流分析引擎、代码结构分析引擎和安全规则分析引擎组成。
[0012]在本发明所述的基于静态分析的应用系统代码安全扫描装置中,所述的数据流分析引擎主要在代码解析的基础上,提取程序的数据流信息,数据流分析通过遍历AST,提取出分析需要的数据信息,并根据定义的规则,对信息进行筛选,并向程序分析模块提供接口以读取这些信息。
[0013]在本发明所述的基于静态分析的应用系统代码安全扫描装置中,所述的控制流分析引擎主要在代码解析的基础上,提取程序的控制流信息,控制流分析根据规则,通过遍历AST,生成对应的类结构图和类关系图,并向代码结构分析引擎和安全规则分析引擎提供接口以读取该信息。
[0014]在本发明所述的基于静态分析的应用系统代码安全扫描装置中,所述的代码结构分析引擎主要在提取的语法树的基础上,根据扫描规则库提供的代码分析规则,提取源代码的主要结构,并调度数据流分析引擎和控制流分析引擎,完成对规则指定的关键变量的安全分析。
[0015]在本发明所述的基于静态分析的应用系统代码安全扫描装置中,所述的安全规则分析引擎是可根据扫描规则库提供的信息,调度代码结构分析引擎进行安全性分析,扫描源代码中可能存在的安全漏洞,并生成相应的问题清单和检测报告。
[0016]在本发明所述的基于静态分析的应用系统代码安全扫描装置中,所述规则扫描库单元是根据我们参考常见的、流行的高危风险代码特征及安全缺陷,总结出扫描工具的安全规则库来定义风险代码特征库。
[0017]本发明的一种基于静态分析的应用系统代码安全扫描装置,具有以下有益效果:
[0018]可以帮助软件开发人员和测评人员在代码安全领域筑起第一道防线,尽力将代码安全漏洞扼杀在开发和测试阶段。它还可以缩短应用系统代码中安全漏洞检测的时间,帮助技术人员快速精确的定位问题代码的位置,方便研发人员立刻修改,减少应用安全测试、安全审查和安全漏洞排查的时间,最终实现增强发现应用系统中代码安全漏洞的合理性、科学性及快速反应,提高了决策的效率和效益。
【专利附图】

【附图说明】
[0019]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0020]图1为本发明一种基于静态分析的应用系统代码安全扫描装置结构方框图;
[0021]图2为图1中功能单元分解示意图。
【具体实施方式】
[0022]通过下面给出的本发明的具体实施例可以进一步了解本发明,但它们不是对本发明的限定。对于本领域的技术人员根据上述
【发明内容】
所作的一些非本质的改进与调整,也视为落在本发明的保护范围内。
[0023]为了保证各个业务系统更加稳定安全的运行,本技术方案从主动防御的角度出发,决定采用国际/国内成熟、规范的白盒测试方法,针对Asp、ASP.NET、VBScript、jsp、c#、Java等语言的WEB应用程序研制了代码审查工具,协助测评和开发人员快速与准确的查找和定位源码中存在的问题和安全漏洞,提出及时、详细以及合理的改进建议和修改策略。[0024]帮助客户解决以下问题:
[0025]协助用户发现组织中的安全最短板,协助企业有效的了解目前降低风险的初始任务;
[0026]一份文档齐全有效的应用系统源码审核报告有助于组织IT管理者以案例说明目前安全现状,从而增强信息安全的认知程度,甚至提高组织在安全方面的预算;
[0027]信息安全是一个整体工程,系统源码审核有助于组织中的所有成员意识到自己的岗位同样可能提高或降低风险,有助于内部安全的提升;
[0028]当然,系统源码审核并不能保证发现目标系统的“所有”弱点,因此我们不宜片面强调它的重要性。
[0029]请参阅图1及图2,本发明的实施例,一种基于静态分析的应用系统代码安全扫描装置1,包括:
[0030]代码解析模型单元10,用于对源代码进行词法和语法解析,将源代码转化为标准的 AST ;
[0031]代码分析引擎单元20,用于对所述的AST执行数据流分析和控制流分析,得出分析结果;
[0032]规则扫描库单元30,用于在所述的单元代码分析引擎中利用发现安全漏洞的规则来定义规则库。
[0033]其中,代码解析模型单元10根据具有规范语法结构定义的开发语言的文法定义,对源程序进行词法分析和语法分析,并转换成中间表示,生成源代码相应的抽象语法树结构、类结构图和类关系图,建立起代码的解析模型,开发语言包括:Java或C#。
[0034]代码分析引擎单元20由数据流分析引擎、控制流分析引擎、代码结构分析引擎和安全规则分析引擎组成。
[0035]数据流分析引擎主要在代码解析的基础上,提取程序的数据流信息,数据流分析通过遍历AST,提取出分析需要的数据信息,并根据定义的规则,对信息进行筛选,并向程序分析模块提供接口以读取这些信息。
[0036]控制流分析引擎主要在代码解析的基础上,提取程序的控制流信息,控制流分析根据规则,通过遍历AST,生成对应的类结构图和类关系图,并向代码结构分析引擎和安全规则分析引擎提供接口以读取该信息。
[0037]代码结构分析引擎主要在提取的语法树的基础上,根据扫描规则库提供的代码分析规则,提取源代码的主要结构,并调度数据流分析引擎和控制流分析引擎,完成对规则指定的关键变量的安全分析。
[0038]安全规则分析引擎是可根据扫描规则库提供的信息,调度代码结构分析引擎进行安全性分析,扫描源代码中可能存在的安全漏洞,并生成相应的问题清单和检测报告。
[0039]规则扫描库单元30是根据我们参考常见的、流行的高危风险代码特征及安全缺陷,总结出扫描工具的安全规则库来定义风险代码特征库。
[0040]本技术方案中,代码解析模型单元10、代码分析引擎单元20、规则扫描库单元30环环相扣缺一不可;代码解析模型单元10通过对将源代码转化成AST后,经由代码分析引擎单元20对其进行分析,在分析过程的最后阶段根据规则扫描库单元30的规则,发现可能存在的安全漏洞。[0041]代码解析模型单元10用于读入需要扫描的源代码,并且根据不同的编程语言使用不同的分析方式,如JAVA、C#这种类型的开发语言,它们具有规范语法结构定义的,所以代码分析模型将会根据它们各自的文法,使用各自的词法和语法分析器生成AST,然后依赖于AST生成类关系图和类结构图,从而建立起代码的解析模型以供代码分析引擎使用;而ASP、ASP.NET、JSP、JAVASCRIPT这类没有规范语法定义的开发语言,因此没有办法为其进行词法和语法分析,所以这类开发语言将不使用代码解析模型,而是直接进入代码分析引擎。
[0042]代码分析引擎单元20用于在代码解析模型单元10生成的AST上进行分析,根据规则扫描库单元30扫描源代码中存在的安全漏洞;其中代码分析引擎由数据流分析引擎、控制流分析引擎、代码结构分析引擎和安全规则分析引擎四部份组成;数据流分析引擎用于跟踪程序的数据流信息,通过遍历AST分析并跟踪路径结点表达式为变量表达式的路径,如变量X的值的来源或变量X的值被赋值给谁,都是数据流分析引擎需要分析的内容;控制流分析引擎用于通过遍历AST生成对应的程序控制依赖图,即是对程序中每个函数结构的图形化表示,它既表示了函数的控制结构信息,也表示了程序语句执行的流向,定义程序的控制流程图,首先需要针对程序语言中各种语句的结构特点,定义分支及其相关概念,建立起分支与程序语句之间准确简明的对应关系,如if语法结构中,引出了两个分支,一个是if判断表达式为真的分支,另一个是if判断表达式为假的分支,从而分析出程序的执行流向;代码分析引擎用于根据规则扫描库中对应开发语言的安全规则对AST进行分析,查找安全规则中提供的API集合,提取出特定的AST子集,此后根据规则将关键API需要检测的参数提取出来,如JAVA语言中SQL注入漏洞的其中一个规则定义了
[0043]开始API 为:
[0044]java.lang.String getParameter (java.lang.String),
[0045]结束API 为:
[0046]java.sql.ResultSet executeQuery (java.lang.String),把匹配该规则的AST子集通过控制流分析引擎提取变量相关的结构特征,并交给数据流分析引擎提取变量的数据流信息,最后,根据两个引擎返回的结果传送到安全规则分析引擎;安全分析引擎用于将代码结构分析引擎的分析结果依据JAVA规则扫描库中的规则进行分析,如分析SQL注入漏洞规则时,从代码结构分析引擎的分析结果中提取可能存在SQL注入漏洞的AST子集,分析该AST子集中java.sql.ResultSetexecuteQuery此API中执行SQL语句的内容是否包含变量,然后通过控制流跟踪该变量的数据流是否来自java.lang.String getParameter,并且在跟踪过程中,分析该数据流是否经过诸如Integer转换之类的处理,如果该数据流并没有经过任何函数的处理,即可判断为SQL注入漏洞。
[0047]规则扫描库单元30用于定义不同开发语言的安全漏洞规则,其中包含大量常见漏洞的产生规则,如SQL注入、跨站点脚本攻击、不恰当随机函数等,不同的漏洞定义了多种不同的API集合,而当代码分析引擎在扫描过程中将调用相应开发语言的扫描规则库,查找匹配安全漏洞规则的AST子集,从而审核出该源代码是否存在相应的安全漏洞。
[0048]本技术方案是基于B/S-client架构开发的一款应用系统静态源码审核工具,其主要功能包括项目管理、自动化审核、报告输出、统计分析等。其产品可以帮助软件开发人员和测评人员在代码安全领域筑起第一道防线,尽力将代码安全漏洞扼杀在开发和测试阶段。缩短应用系统代码漏洞的检测时间,提高决策的效益和效率,可用于“电力企业应用系统代码安全扫描工具”。
[0049]本发明的一种基于静态分析的应用系统代码安全扫描装置,具有以下有益效果:
[0050]可以帮助软件开发人员和测评人员在代码安全领域筑起第一道防线,尽力将代码安全漏洞扼杀在开发和测试阶段。它还可以缩短应用系统代码中安全漏洞检测的时间,帮助技术人员快速精确的定位问题代码的位置,方便研发人员立刻修改,减少应用安全测试、安全审查和安全漏洞排查的时间。最终实现增强发现应用系统中代码安全漏洞的合理性、科学性及快速反应,提高了决策的效率和效益。
[0051]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种基于静态分析的应用系统代码安全扫描装置,其特征在于,包括: 代码解析模型单元,用于对源代码进行词法和语法解析,将源代码转化为标准的AST ; 代码分析引擎单元,用于对所述的AST执行数据流分析和控制流分析,得出分析结果; 规则扫描库单元,用于在所述的单元代码分析引擎中利用发现安全漏洞的规则来定义规则库。
2.根据权利要求1所述的基于静态分析的应用系统代码安全扫描装置,其特征在于,所述代码解析模型单元根据具有规范语法结构定义的开发语言的文法定义,对源程序进行词法分析和语法分析,并转换成中间表示,生成源代码相应的抽象语法树结构、类结构图和类关系图,建立起代码的解析模型。
3.根据权利要求2所述的基于静态分析的应用系统代码安全扫描装置,其特征在于,所述的开发语言包括Java或C#。
4.根据权利要求1所述的基于静态分析的应用系统代码安全扫描装置,其特征在于,所述代码分析引擎单元由数据流分析引擎、控制流分析引擎、代码结构分析引擎和安全规则分析引擎组成。
5.根据权利要求4所述的基于静态分析的应用系统代码安全扫描装置,其特征在于,所述的数据流分析引擎主要在代码解析的基础上,提取程序的数据流信息,数据流分析通过遍历AST,提取出分析需要的数据信息,并根据定义的规则,对信息进行筛选,并向程序分析模块提供接口以读取这些信息。
6.根据权利要求4所述的基于静态分析的应用系统代码安全扫描装置,其特征在于,所述的控制流分析引擎主要在代码解析的基础上,提取程序的控制流信息,控制流分析根据规则,通过遍历AST,生成对应的类结构图和类关系图,并向代码结构分析引擎和安全规则分析引擎提供接口以读取该信息。
7.根据权利要求4所述的基于静态分析的应用系统代码安全扫描装置,其特征在于,所述的代码结构分析引擎主要在提取的语法树的基础上,根据扫描规则库提供的代码分析规则,提取源代码的主要结构,并调度数据流分析引擎和控制流分析引擎,完成对规则指定的关键变量的安全分析。
8.根据权利要求4所述的基于静态分析的应用系统代码安全扫描装置,其特征在于,所述的安全规则分析引擎是可根据扫描规则库提供的信息,调度代码结构分析引擎进行安全性分析,扫描源代码中可能存在的安全漏洞,并生成相应的问题清单和检测报告。
9.根据权利要求1所述的基于静态分析的应用系统代码安全扫描装置,其特征在于,所述规则扫描库单元是根据我们参考常见的、流行的高危风险代码特征及安全缺陷,总结出扫描工具的安全规则库来定义的风险代码特征库。
【文档编号】G06F21/57GK103793652SQ201210419735
【公开日】2014年5月14日 申请日期:2012年10月29日 优先权日:2012年10月29日
【发明者】王甜, 魏理豪, 朱奕, 崔磊, 邹洪, 艾解清, 周开东, 张超, 梁哲恒 申请人:广东电网公司信息中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1