一种Android平台下应用软件的安全漏洞挖掘方法和装置的制作方法

文档序号:6444949阅读:197来源:国知局
专利名称:一种Android平台下应用软件的安全漏洞挖掘方法和装置的制作方法
技术领域
本发明涉及源代码检测领域,更具体地说,涉及一种Androi平台下应用软件的安全漏洞挖掘方法和装置。
背景技术
Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。目前尚未有统一中文名称,中国大陆地区较多人使用安卓(非官方)或安致(官方)。Android 操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由Google收购注资,并联合多家制造商组成开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。2010年末数据显示,仅正式推出两年的Android操作系统已经超越称霸十年的诺基亚Symbian系统,跃居全球最受欢迎的智能手机平台。Android的主要竞争对手是苹果的I0S,微软的WP7以及 RIM 的 Blackberry OS。面对移动智能终端市场日新月异的发展,随之而来的移动智能终端信息安全问题却日益凸显,给国家安全、社会稳定和用户隐私保护等带来新的安全隐患。Android是目前最流行的智能终端开发平台,依靠Google的强大开发和媒体资源,Android成为众多移动智能终端厂商竞相追逐的对象。随着Android平台在智能终端操作系统市场份额的日益增加,Android平台下应用软件的安全性成为了智能终端安全研究的紧要任务。由于受到移动智能终端较低的硬件处理能力的限制,移动智能终端上的应用有着体积小、升级快、功能专一等特点,移动智能终端与传统终端如PC机存在较大区别,PC机上的安全漏洞挖掘技术不能直接应用于智能终端上。目前,Android平台下应用软件的漏洞发掘还是个新的领域,开发者一般基于JUnit框架和Android SDK中android, test等命名空间下对Android平台下的程序进行测试,专门针对Android平台下应用软件的安全漏洞发掘自动化工具还很少。

发明内容
本发明要解决的技术问题在于,提供一种针对Android平台下应用软件的安全漏洞挖掘自动化方法和装置。本发明公开了一种Android平台下应用软件的安全漏洞挖掘方法,包括Si.提取多种Android平台下应用软件源代码的漏洞规则,形成漏洞规则库;S2.针对Android平台下应用软件的源代码构建ant脚本,对所述的源代码进行编译,形成字节码文件;S3.控制流分析引擎负责解析经过所述的字节码文件,根据所述的字节码文件中的指令信息构建控制流图,为不安全方法的定位提供基础;S4.数据流分析引擎是在所述的控制流图的基础上,分析变量中数据的传递过程, 构建数据流图,为逆向动态追踪数据提供基础;S5.根据所述漏洞规则库中的规则,调用所述的控制流引擎和数据流引擎,分析不安全方法的调用位置,逆向追踪变量中数据的传递过程,进行漏洞检测;S6.将挖掘的安全漏洞过程及相关数据信息生成报告。在本发明所述的Android平台下应用软件的安全漏洞挖掘方法中,步骤S2及步骤 S3之间还存在以下步骤S21.判断编译是否成功,若是,进入步骤S22,将编译后的字节码文件存放在与源代码同级目录下,为后续的分析、检测提供便利;若否,进入步骤S23,通过漏洞报告部件报告编译不成功原因。在本发明所述的Android平台下应用软件的安全漏洞挖掘方法中,步骤S5及步骤 S6之间还存在以下步骤S51.判断逆向追踪变量中的数据是否进行过安全验证操作,如果是,进入步骤 S52 放弃追踪,如果否,进入步骤S53 判断该数据的方法调用处存在安全漏洞,进入步骤 S6。在本发明所述的Android平台下应用软件的安全漏洞挖掘方法中,其特征在于, 所述的控制流分析引擎具有多个。在本发明所述的Android平台下应用软件的安全漏洞挖掘方法中,所述的数据流分析引擎具有多个。本发明还公开了一种Android平台下应用软件的安全漏洞挖掘装置,用于实现上述的方法,包括漏洞规则库生成单元提取多种Android平台下应用软件源代码的漏洞规则,形成漏洞规则库;字节码生成文件单元针对Android平台下应用软件的源代码构建ant脚本,对所述的源代码进行编译,形成字节码文件;控制流图构建单元与所述的字节码生成文件单元相连,用于控制流分析引擎负责解析经过所述的字节码文件,根据所述的字节码文件中的指令信息构建控制流图,为不安全方法的定位提供基础;数据流图构建单元数据流分析引擎是在所述的控制流图的基础上,分析变量中数据的传递过程,构建数据流图,为逆向动态追踪数据提供基础;漏洞检测单元与所述的数据流图构建单元相连,用于根据所述漏洞规则库中的规则,调用所述的控制流引擎和数据流引擎,分析不安全方法的调用位置,逆向追踪变量中数据的传递过程,进行漏洞检测;漏洞报告生成单元将挖掘的安全漏洞过程及相关数据信息生成报告。在本发明所述的Android平台下应用软件的安全漏洞挖掘装置中,还包括设置于字节码生成文件单元与控制流图构建单元间的用于判断编译是否成功的编译判断单元。在本发明所述的Android平台下应用软件的安全漏洞挖掘装置中,还包括设置于漏洞检测单元与漏洞报告生成单元间的安全验证单元。在本发明所述的Android平台下应用软件的安全漏洞挖掘装置中,所述的控制流分析引擎具有多个。在本发明所述的Android平台下应用软件的安全漏洞挖掘装置中,所述的数据流分析引擎具有多个。
实施本发明的一种Android平台下应用软件的安全漏洞挖掘方法和装置,具有以下有益的技术效果从问题的源头开始关注Android平台下应用软件的安全,及早发现软件中存在的安全漏洞,有利于Android平台下应用软件的安全开发。


图1是本发明实施例一种Android平台下应用软件的安全漏洞挖掘方法流程图;图2是本发明实施例一种Android平台下应用软件的安全漏洞挖掘各部件结构图;图3是本发明实施例一种Android平台下应用软件的安全漏洞挖掘装置模块方框图。
具体实施例方式为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。本发明涉及一种Android平台下应用软件的安全漏洞挖掘技术,用于Android平台下应用软件的安全漏洞挖掘,具体是基于源代码静态分析技术挖掘Android平台下应用软件的安全漏洞,具体的技术方案如下请参阅图1,本发明实施例一种Android平台下应用软件的安全漏洞挖掘方法,包括Si.提取多种Android平台下应用软件源代码的漏洞方法,形成漏洞规则库;漏洞规则库部件本发明针对Android SDK进行深入研究,提取出大量可能产生漏洞的方法,进行整理最终形成漏洞规则库,为检测器部件进行漏洞分析提供基础。S2.针对Android平台下应用软件的源代码构建ant脚本,对所述的源代码进行编译,形成字节码文件;S21.判断编译是否成功,若是,进入步骤S22,将编译后的字节码文件存放在与源代码同级目录下,为后续的分析、检测提供便利;若否,进入步骤S23,通过漏洞报告部件报告编译不成功原因。步骤S2及S21属于安全漏洞挖掘的预处理部件完成的步骤。S3.控制流分析引擎负责解析经过所述的字节码文件,根据所述的字节码文件中的指令信息构建控制流图,为不安全方法的定位提供基础;对Android平台下应用软件的字节码进行安全漏洞模式扫描,并确定代码中不安全方法(如方法 rawQuery (String sql, String[] selectionArgs)调用的位置。S4.数据流分析引擎是在所述的控制流图的基础上,分析变量中数据的传递过程, 构建数据流图,为逆向动态追踪数据提供基础;步骤S3及S4中控制流分析引擎及数据流分析引擎共同组成分析引擎部件。对扫描后不安全方法中的变量(如方法rawQuery (String sql,String [] selectionArgs 中的((String sql, String[] selectionArgs))进行逆向数据流分析。S5.根据所述漏洞规则库中的规则,调用所述的控制流引擎和数据流引擎,分析不安全方法的调用位置,逆向追踪变量中数据的传递过程,进行漏洞检测;步骤S5为检测器部件完成的动作。S51.判断逆向追踪变量中的数据是否进行过安全验证操作,如果是,进入步骤 S52 放弃追踪,如果否,进入步骤S53 该数据的方法调用处存在安全漏洞,进入步骤S6。S6.将挖掘的安全漏洞过程及相关数据信息生成报告。所述的控制流分析引擎具有多个。所述的数据流分析引擎具有多个。请参阅图2,本发明实施例一种Android平台下应用软件的安全漏洞挖掘各部件结构图。Android平台下应用软件源代码经过预处理器处理后进入多个分析引擎及多个检测器进行数据交换,以挖掘漏洞,并从Android平台下应用软件漏洞规则库调用规则,形成检测结果加以显示。请参阅图3、一种Android平台下应用软件的安全漏洞挖掘装置,用于实现上述的方法,包括漏洞规则库生成单元10、字节码生成文件单元20、编译判断单元25、控制流图构建单元30、数据流图构建单元40、漏洞检测单元50、安全验证单元55、漏洞报告生成单元 60。漏洞规则库生成单元10 提取多种Android平台下应用软件的漏洞规则,形成漏洞规则库;字节码生成文件单元20 针对Android平台下应用软件的源代码构建ant脚本, 对所述的源代码进行编译,形成字节码文件;控制流图构建单元30 与字节码生成文件单元20相连,用于控制流分析引擎负责解析经过所述的字节码文件,根据所述的字节码文件中的指令信息构建控制流图,为不安全方法的定位提供基础;数据流图构建单元40:数据流分析引擎是在所述的控制流图的基础上,分析变量中数据的传递过程,构建数据流图,为逆向动态追踪数据提供基础;漏洞检测单元50 与数据流图构建单元40相连,用于根据所述漏洞规则库中的规则,调用所述的控制流引擎和数据流引擎,分析不安全方法的调用位置,逆向追踪变量中数据的传递过程,进行漏洞检测;漏洞报告生成单元60 将挖掘的安全漏洞过程及相关数据信息生成报告。还包括设置于字节码生成文件单元与控制流图构建单元间的用于判断编译是否成功的编译判断单元25,还包括设置于漏洞检测单元与漏洞报告生成单元间的安全验证单
兀55ο进一步地,所述的数据流分析引擎及控制流分析引擎均具有多个,且安置于多个分析引擎中。由此,可以看出,本发明的目的是提供一种采用源代码静态分析技术挖掘Android 平台下应用软件安全漏洞的技术,该技术从Android平台下应用软件的源代码入手,分析安全漏洞产生的机理,挖掘软件中存在的安全漏洞。本发明方法关注Android平台下应用软件源代码中的不安全方法的使用和程序外部输入的数据,通过构建Android平台下应用软件源代码中方法的控制流图、数据流图,逆向追踪程序外部数据的输入,挖掘Android平台下应用软件的安全漏洞。实施本发明的一种Android平台下应用软件的安全漏洞挖掘方法和装置,具有以下有益的技术效果从问题的源头开始关注Android平台下应用软件的安全,及早发现软件中存在的安全漏洞,有利于Android平台下应用软件的安全开发。上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式
,上述的具体实施方式
仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护范围之内。
权利要求
1.一种Android平台下应用软件的安全漏洞挖掘方法,其特征在于,包括51.提取多种Android平台下应用软件源代码的漏洞规则,形成漏洞规则库;52.针对Android平台下应用软件的源代码构建ant脚本,对所述的源代码进行编译, 形成字节码文件;53.控制流分析引擎负责解析所述的字节码文件,根据所述的字节码文件中的指令信息构建控制流图,为不安全方法的定位提供基础;54.数据流分析引擎是在所述的控制流图的基础上,分析变量中数据的传递过程,构建数据流图,为逆向动态追踪数据提供基础;55.根据所述漏洞规则库中的规则,调用所述的控制流引擎和数据流引擎,分析不安全方法的调用位置,逆向动态追踪变量中数据的传递过程,进行漏洞检测;56.将挖掘的安全漏洞过程及相关数据信息生成报告。
2.如权利要求1所述的Android平台下应用软件的安全漏洞挖掘方法,其特征在于,步骤S2及步骤S3之间还存在以下步骤S21.判断编译是否成功,若是,进入步骤S22,将编译后的字节码文件存放在与源代码同级目录下,为后续的分析、检测提供便利;若否,进入步骤S23,通过漏洞报告部件报告编译不成功原因。
3.如权利要求1所述的Android平台下应用软件的安全漏洞挖掘方法,其特征在于,步骤S5及步骤S6之间还存在以下步骤S51.判断逆向动态追踪变量中的数据是否进行过安全验证操作,如果是,进入步骤 S52 放弃追踪,如果否,进入步骤S53 判断该数据的方法调用处存在安全漏洞,进入步骤 S6。
4.如权利要求1所述的Android平台下应用软件的安全漏洞挖掘方法,其特征在于,所述的控制流分析引擎具有多个。
5.如权利要求1所述的Android平台下应用软件的安全漏洞挖掘方法,其特征在于,所述的数据流分析引擎具有多个。
6.一种Android平台下应用软件的安全漏洞挖掘装置,用于实现权利要求1所述的方法,其特征在于,包括漏洞规则库生成单元提取多种Android平台下应用软件源代码的漏洞规则,形成漏洞规则库;字节码生成文件单元针对Android平台下应用软件的源代码构建ant脚本,对所述的源代码进行编译,形成字节码文件;控制流图构建单元与所述的字节码生成文件单元相连,用于控制流分析引擎负责解析经过所述的字节码文件,根据所述的字节码文件中的指令信息构建控制流图,为不安全方法的定位提供基础;数据流图构建单元数据流分析引擎是在所述的控制流图的基础上,分析变量中数据的传递过程,构建数据流图,为逆向动态追踪数据提供基础;漏洞检测单元与所述的数据流图构建单元相连,用于根据所述漏洞规则库中的规则, 调用所述的控制流引擎和数据流引擎,分析不安全方法的调用位置,逆向动态追踪变量中数据的传递过程,进行漏洞检测;漏洞报告生成单元将挖掘的安全漏洞过程及相关数据信息生成报告。
7.如权利要求6所述的Android平台下应用软件的安全漏洞挖掘装置,其特征在于,还包括设置于字节码生成文件单元与控制流图构建单元间的用于判断编译是否成功的编译判断单元。
8.如权利要求6所述的Android平台下应用软件的安全漏洞挖掘装置,其特征在于,还包括设置于漏洞检测单元与漏洞报告生成单元间的安全验证单元。
9.如权利要求6所述的Android平台下应用软件的安全漏洞挖掘装置,其特征在于,所述的控制流分析引擎具有多个。
10.如权利要求6所述的Android平台下应用软件的安全漏洞挖掘装置,其特征在于, 所述的数据流分析引擎具有多个。
全文摘要
本发明公开了一种Android平台下应用软件的安全漏洞挖掘方法,包括S1.提取多种Android平台下应用软件源代码的漏洞规则,形成漏洞规则库;S2.构建ant脚本,对源代码进行编译,形成字节码文件;S3.控制流分析引擎负责解析字节码文件;S4.数据流分析引擎分析变量中数据的传递过程,构建数据流图,为逆向动态追踪数据提供基础;S5.根据漏洞规则库中的规则,进行漏洞检测;S6.将挖掘的安全漏洞过程及相关数据信息生成报告。本发明还公开了一种Android平台下应用软件的安全漏洞挖掘装置。本发明及早发现软件中存在的安全漏洞,有利于Android平台下应用软件的安全开发。
文档编号G06F21/00GK102411690SQ20111046051
公开日2012年4月11日 申请日期2011年12月31日 优先权日2011年12月31日
发明者吴世忠, 吴迪, 张*, 张普含, 时志伟, 韩建 申请人:中国信息安全测评中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1