一种用于移动互联网应用的代码安全测试方法技术

技术编号:8366740 阅读:301 留言:0更新日期:2013-02-28 05:06
本发明专利技术公开了一种用于移动互联网应用的代码安全测试方法,所述方法主要针对移动应用软件的代码安全需求,给出了代码解析模块、数据流分析模块、控制流分析模块、结构分析模块和安全分析模块等功能模块构成的测试系统,支持Android、、Windows?Mobile?Phone、Symbian、HP-UX?11v1、IBM?AIX?5.2、Linux?Red?Hat?ES4/5、Linux?Fedora?Core?7、Linux?Novelle?SUSE?10、Sun?Solaris8/9/10等操作系统,可以扫描出300多种漏洞,实现了代码的低漏报率测试。

【技术实现步骤摘要】

本专利技术涉及一种移动互联网应用技术,尤其涉及。
技术介绍
随着移动互联网终端的普及应用,移动互联网业务得到了前所未有的快速发展,相关的移动业务应用软件也被越来越多的个人或企业用于处理各种私密信息、敏感信息和高价值信息,例如个人隐私、商务谈判信息等,这使得移动业务应用软件日益成为企图获取这些信息的攻击者的攻击目标。软件代码编写阶段引入的安全漏洞是最常见的安全漏洞,如何设计一种有效的代码安全测试方法,以检测存在于源代码中的潜在威胁是非常有必要的,且迫切的。·软件代码的漏洞主要通过静态方法和动态方法进行检测。虽然动态方法对代码的规模没有限制,可以对大型程序进行检测,但不足之处是检测的效果严重依赖输入方法,只有当特定的输入使代码执行到危险点时,漏洞才会被发现,所以这种方法漏报率较高。基于约束分析和模型检验的代码安全漏洞检测方法(申请号200910086938. 9)提出一种约束分析的模型检测的方法对缓冲区溢出漏洞进行验证,通过谓词公理系统进行模型求解,判断和分析安全漏洞以及引发路径,可以一定程度上地降低漏报率,但这是以牺牲大量计算资源为代价的,另外,该方法没有考虑到移动应用业务更加灵活、接入方式多样化等特点,很难直接应用到移动应用软件中。
技术实现思路
本专利技术要解决的技术问题在于提供了一种可以扫描出300多种漏洞,实现了代码的低漏报率的测试方法。为解决上述技术问题,本专利技术通过以下方案来实现,所述方法主要针对移动应用软件的代码安全需求,给出了代码解析模块、数据流分析模块、控制流分析模块、结构分析模块和安全分析模块等功能模块构成的测试系统,所述测试系统包括代码解析器、代码分析引擎、报告生成器以及安全规则模块、用户接口模块组成,各模块主要功能如下所述代码解析器与代码分析引擎连接,是负责对源程序进行词法语法分析,并转换成中间表示,并根据后续分析模块的需要,生成特定的语法树结构;所述代码分析引擎包括数据流分析器、控制流分析器、结构分析器、安全分析器;所述报告生成器是对代码分析的结果进行分析并提交给用户,并生成相应的审核 艮告;所述安全规则模块负责为代码分析引擎提供代码分析规则支持;所述用户接口模块负责与用户进行交互,一方面可以接受用户扫描源代码的请求,另一方面则将扫描分析的结果输出给用户。所述数据流分析器是在代码解析的基础上,提取程序的数据流信息。所述控制流分析器主要是在代码解析的基础上,提取程序的控制流信息,控制流分析器根据规则,通过遍历AST (抽象语法树),生成对应的程序控制依赖图,并向安全分析调度模块提供接口以读取信息。所述结构分析器的目标是在代码分析引擎提取出的语法树的基础上,根据安全规则模块提供的代码分析规则,提取程序的主要结构。 所述安全分析器根据安全规则模块提供的信息,调度结构分析器进行安全性分析,并生成报告表,提供接口供报告生成器调用。本专利技术的优点是本专利技术给出了,主要针对移动应用软件的代码安全需求,给出了代码解析、数据流分析、控制流分析、结构分析和安全分析等功能模块,支持 Android、^Windows MobiIePhone、Symbian、HP-UX llvl、IBM AIX 5. 2、Linux Red Hat ES4/5、Linux FedoraCore 7、Linux Novelle SUSE 10、SunSolaris8/9/10等操作系统,可以扫描出300多种漏洞,实现了代码的低漏报率测试。以下结合附图对本专利技术作详细说明。图I为本专利技术系统架构设计示意图;图2为本专利技术代码解析器功能实现流程图;图3为本专利技术数据流分析器功能实现流程图;图4为本专利技术结构分析器功能实现流程图;图5为本专利技术安全分析器功能实现流程图;图6为本专利技术系统处理流程图。 图7为本专利技术Main方法的控制流程示意 图8为本专利技术label语法结构示意 图 9 为本专利技术 break, continue, return, goto, exit ()和 abort ()语法结构不意图; 附图说明图10为本专利技术if语法结构示意 图11为本专利技术switch-case语法结构示意 图12为本专利技术while循环语法结构示意 图13为本专利技术for语法结构示意 图14为本专利技术do-while循环语法结构示意 图15为本专利技术虚分支结构示意图。具体实施例方式如图I所示,,所述方法主要针对移动应用软件的代码安全需求,给出了代码解析模块、数据流分析模块、控制流分析模块、结构分析模块和安全分析模块等功能模块构成的测试系统,所述测试系统包括代码解析器I、代码分析引擎2、报告生成器3以及安全规则模块4、用户接口模块5组成,各模块主要功能如下I)、代码解析器I是负责对源程序进行词法语法分析,并转换成中间表示,并根据后续分析模块的需要,生成特定的语法树结构,为后继分析提供便利,数据流分析器21是在代码解析器I的基础上,提取程序的数据流信息。其实现流程如图2所示,源代码经分析调度、词法分析、语法分析等预处理,连接若干处理线程,词法分析带有AST缓冲池。2)、所述代码分析引擎2包括数据流分析器21、控制流分析器22、结构分析器23、安全分析器24,如图3所示数据流分析器21功能实现流程图,数据流分析器21通过遍历AST (抽象语法树),提取出需要的数据信息,并根据用户规则,对这些信息进行刷选,并向程序分析模块提供接口以读取这些信息,其实现原理为假设变量X的定值是一个语句,它赋值或可能赋值给X。最普通的定值是对X的赋值或读值到X的语句。这些语句真正对X定值,称为X的无二义定植。还有一些语句,它们可能对X定值,称为二义定植。称a定值d到达程序点P,若存在路径从紧跟d的点到达P,且在这条路径上d没·有被注销。如果沿着这条路径的某两点间是读a或对a的赋值,那么我们注销变量a的那个定值。直观上,如果某个变量a的定值d到达点P,那么P引用a的最新定值可能在d点。只有a的无二义定值注销a的其它定值。这样,一个点可以由一条路径上的无二义定值和同一个变量出现在无二义定值之后的二义定值到达。控制流分析器22主要是在代码解析器I的基础上,提取程序的控制流信息。控制流分析器22根据规则,通过遍历AST (抽象语法树),生成对应的程序控制依赖图,并向安全分析调度模块提供接口以读取这些信息。控制流分析器22的实现如下程序的控制流程图是由上述节点和分支组成的,对程序控制流程的一种抽象的图形表示。以上Main方法的控制流程图可以表示为如图7所示的图形。控制流程图中的分支数就是图中所有分支数之和。实际上,分支数也等于所有节点的“流出”分支数之和。因此,一种简便的分支数计算方法是计算程序中每个节点的“流出”分支数之和。下表给出每种语法及其对应的分支点的“流出”分支数的计算方法。 mm具体说明图形表示 label语法结每个label语句有一个-hnmR构汇聚点,引出I个分支___权利要求1.,其特征在于所述方法主要针对移动应用软件的代码安全需求,给出了代码解析模块、数据流分析模块、控制流分析模块、结构分析模块和安全分析模块等功能模块构成的测试系统,所述测试系统包括代码解析器(I)、代码分析引擎(2)、报告生成器(3)以及安全规则模块(4)、用户接口模块(5)组成,各模块主要本文档来自技高网...

【技术保护点】
一种用于移动互联网应用的代码安全测试方法,其特征在于:所述方法主要针对移动应用软件的代码安全需求,给出了代码解析模块、数据流分析模块、控制流分析模块、结构分析模块和安全分析模块等功能模块构成的测试系统,所述测试系统包括代码解析器(1)、代码分析引擎(2)、报告生成器(3)以及安全规则模块(4)、用户接口模块(5)组成,各模块主要功能如下:所述代码解析器(1)与代码分析引擎(2)连接,是负责对源程序进行词法语法分析,并转换成中间表示,并根据后续分析模块的需要,生成特定的语法树结构;所述代码分析引擎(2)包括数据流分析器(21)、控制流分析器(22)、结构分析器(23)、安全分析器(24);所述报告生成器(3)是对代码分析的结果进行分析并提交给用户,并生成相应的审核报告;所述安全规则模块(4)负责为代码分析引擎(2)提供代码分析规则支持;所述用户接口模块(5)负责与用户进行交互,一方面可以接受用户扫描源代码的请求,另一方面则将扫描分析的结果输出给用户。

【技术特征摘要】

【专利技术属性】
技术研发人员:罗时龙覃志武薛亚沈晨胡建光李军殷杰包先雨方凯彬
申请(专利权)人:深圳出入境检验检疫局信息中心深圳市检验检疫科学研究院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1