CN102411690B - 一种Android平台下应用软件的安全漏洞挖掘方法和装置 - Google Patents

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

Info

Publication number
CN102411690B
CN102411690B CN201110460516.0A CN201110460516A CN102411690B CN 102411690 B CN102411690 B CN 102411690B CN 201110460516 A CN201110460516 A CN 201110460516A CN 102411690 B CN102411690 B CN 102411690B
Authority
CN
China
Prior art keywords
application software
data
android platform
software under
leak
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
Application number
CN201110460516.0A
Other languages
English (en)
Other versions
CN102411690A (zh
Inventor
吴世忠
张普含
时志伟
韩建
吴迪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Information Technology Security Evaluation Center
Original Assignee
China Information Technology Security Evaluation Center
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Information Technology Security Evaluation Center filed Critical China Information Technology Security Evaluation Center
Priority to CN201110460516.0A priority Critical patent/CN102411690B/zh
Publication of CN102411690A publication Critical patent/CN102411690A/zh
Application granted granted Critical
Publication of CN102411690B publication Critical patent/CN102411690B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种Android平台下应用软件的安全漏洞挖掘方法,包括:S1.提取多种Android平台下应用软件源代码的漏洞规则,形成漏洞规则库;S2.构建ant脚本,对源代码进行编译,形成字节码文件;S3.控制流分析引擎负责解析字节码文件;S4.数据流分析引擎分析变量中数据的传递过程,构建数据流图,为逆向动态追踪数据提供基础;S5.根据漏洞规则库中的规则,进行漏洞检测;S6.将挖掘的安全漏洞过程及相关数据信息生成报告。本发明还公开了一种Android平台下应用软件的安全漏洞挖掘装置。本发明及早发现软件中存在的安全漏洞,有利于Android平台下应用软件的安全开发。

Description

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

Claims (10)

1.一种Android平台下应用软件的安全漏洞挖掘方法,其特征在于,包括:
S1.提取多种Android平台下应用软件源代码的漏洞规则,形成漏洞规则库;
S2.针对Android平台下应用软件的源代码构建ant脚本,对所述的源代码进行编译,形成字节码文件;
S3.控制流分析引擎负责解析所述的字节码文件,根据所述的字节码文件中的指令信息构建控制流图,为不安全方法的定位提供基础;
S4.数据流分析引擎是在所述的控制流图的基础上,分析变量中数据的传递过程,构建数据流图,为逆向动态追踪数据提供基础;
S5.根据所述漏洞规则库中的规则,调用所述的控制流引擎和数据流引擎,分析不安全方法的调用位置,逆向动态追踪变量中数据的传递过程,进行漏洞检测;
S6.将挖掘的安全漏洞过程及相关数据信息生成报告。
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平台下应用软件的安全漏洞挖掘装置,其特征在于,所述的数据流分析引擎具有多个。
CN201110460516.0A 2011-12-31 2011-12-31 一种Android平台下应用软件的安全漏洞挖掘方法和装置 Active CN102411690B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110460516.0A CN102411690B (zh) 2011-12-31 2011-12-31 一种Android平台下应用软件的安全漏洞挖掘方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110460516.0A CN102411690B (zh) 2011-12-31 2011-12-31 一种Android平台下应用软件的安全漏洞挖掘方法和装置

Publications (2)

Publication Number Publication Date
CN102411690A CN102411690A (zh) 2012-04-11
CN102411690B true CN102411690B (zh) 2014-07-23

Family

ID=45913761

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110460516.0A Active CN102411690B (zh) 2011-12-31 2011-12-31 一种Android平台下应用软件的安全漏洞挖掘方法和装置

Country Status (1)

Country Link
CN (1) CN102411690B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102708054A (zh) * 2012-05-08 2012-10-03 中国信息安全测评中心 二进制程序循环写内存安全漏洞的检测方法
CN104331662B (zh) * 2013-07-22 2018-12-07 深圳市腾讯计算机系统有限公司 Android恶意应用检测方法及装置
CN104036193B (zh) * 2014-05-16 2017-02-01 北京金山安全软件有限公司 一种应用程序的本地跨域漏洞检测方法及装置
CN104036194B (zh) * 2014-05-16 2017-02-15 北京金山安全软件有限公司 一种应用程序中泄露隐私数据的漏洞检测方法及装置
CN103996007A (zh) * 2014-05-29 2014-08-20 诸葛建伟 Android应用权限泄露漏洞的测试方法及系统
CN104484607A (zh) * 2014-12-16 2015-04-01 上海交通大学 Android应用程序安全性测试的通用方法及系统
CN106295347B (zh) * 2015-05-28 2019-06-18 国家计算机网络与信息安全管理中心 用于搭建漏洞验证环境的方法及装置
CN105022958B (zh) * 2015-07-11 2018-01-12 复旦大学 一种安卓应用中基于代码库安全规约的应用程序漏洞检测分析方法
CN105243329B (zh) * 2015-10-26 2017-12-08 北京奇虎科技有限公司 Android系统漏洞挖掘的方法及装置
CN108153666B (zh) * 2016-12-06 2023-05-26 三六零科技集团有限公司 一种静态检测安卓代码中的资源回收漏洞的方法和装置
CN108153664A (zh) * 2016-12-06 2018-06-12 北京奇虎科技有限公司 一种静态代码扫描方法和装置
CN107273748B (zh) * 2017-05-23 2020-12-11 成都联宇云安科技有限公司 一种基于漏洞poc实现安卓系统漏洞检测的方法
CN107239706A (zh) * 2017-06-06 2017-10-10 贵州大学 一种Android平台下手机应用程序的安全漏洞挖掘方法
CN107516040A (zh) * 2017-07-25 2017-12-26 中国人民解放军63928部队 一种基于数据控制流图的脆弱性特征分析和获取方法
CN108322458B (zh) * 2018-01-30 2020-05-19 深圳壹账通智能科技有限公司 Web应用入侵检测方法、系统、计算机设备和存储介质
CN110032872A (zh) * 2019-05-08 2019-07-19 北京国舜科技股份有限公司 一种业务逻辑漏洞检测方法及装置
CN110929267A (zh) * 2019-11-29 2020-03-27 深信服科技股份有限公司 代码漏洞检测方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101017458A (zh) * 2007-03-02 2007-08-15 北京邮电大学 基于源代码静态分析的软件安全代码分析器及其检测方法
CN101261665A (zh) * 2008-04-10 2008-09-10 北京深思洛克数据保护中心 一种通过加密数据文件实现软件保护的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7516331B2 (en) * 2003-11-26 2009-04-07 International Business Machines Corporation Tamper-resistant trusted java virtual machine and method of using the same

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101017458A (zh) * 2007-03-02 2007-08-15 北京邮电大学 基于源代码静态分析的软件安全代码分析器及其检测方法
CN101261665A (zh) * 2008-04-10 2008-09-10 北京深思洛克数据保护中心 一种通过加密数据文件实现软件保护的方法

Also Published As

Publication number Publication date
CN102411690A (zh) 2012-04-11

Similar Documents

Publication Publication Date Title
CN102411690B (zh) 一种Android平台下应用软件的安全漏洞挖掘方法和装置
CN106650452B (zh) 一种Android系统内置应用漏洞挖掘方法
CN102810143B (zh) 基于Android平台手机应用程序的安全检测系统及方法
CN103577324B (zh) 移动应用中隐私信息泄露的静态检测方法
CN112134761A (zh) 基于固件分析的电力物联网终端脆弱性检测方法及系统
CN102541729A (zh) 软件安全漏洞检测装置和方法
US20210326446A1 (en) Vulnerability Detection Method, Apparatus, Electronic Device and Storage Medium
CN103473509A (zh) Android平台恶意软件自动检测方法
CN104331662B (zh) Android恶意应用检测方法及装置
CN108268371B (zh) 面向Android应用的智能模糊测试方法
CN103186740A (zh) 一种Android恶意软件的自动化检测方法
CN102053911A (zh) 基于Android的自动化测试方法、系统及移动终端
CN103780614B (zh) 一种基于模拟攻击扩展的sql注入漏洞挖掘方法
AlBreiki et al. Evaluation of static analysis tools for software security
CN102790706A (zh) 海量事件安全分析方法及装置
CN104504337A (zh) 一种安卓数据泄露的恶意应用检测方法
CN103810428A (zh) 一种宏病毒检测方法及装置
CN105653946A (zh) 基于组合事件行为触发的Android恶意行为检测系统及其检测方法
CN104615936A (zh) 云平台vmm层行为监控方法
CN104134019A (zh) 检测脚本病毒的方法和装置
CN112287342A (zh) 物联网固件动态检测方法、装置、电子设备以及存储介质
Talukder et al. Droidpatrol: a static analysis plugin for secure mobile software development
CN107239706A (zh) 一种Android平台下手机应用程序的安全漏洞挖掘方法
CN108932199B (zh) 一种基于用户界面分析的自动化污点分析系统
CN113626829A (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
C14 Grant of patent or utility model
GR01 Patent grant