一种Android程序漏洞检测方法及系统的制作方法

文档序号:8412803阅读:182来源:国知局
一种Android程序漏洞检测方法及系统的制作方法
【技术领域】
[0001] 本发明涉及一种计算机技术,特别是涉及一种Android程序漏洞检测方法及系 统。
【背景技术】
[0002] 随着互联网和智能移动终端在人们生活中的日益普及,移动安全问题和安全隐患 也随之愈来愈严重。目前在移动终端上植入恶意代码进行网络犯罪的事件呈增长趋势,移 动终端的用户正在面临前所未有的安全风险。尤其是Android系统的智能手机,基于源代 码的开源性,其开发的应用程序存在的风险更是备受人们关注。
[0003] 为了检测应用程序中所存在的安全隐患,已经出现了不少Android程序漏洞检测 方法,主要是通过对Android应用程序反编译后的Dalvik字节码进行静态分析。Android程 序漏洞检测方法具体包括:1,采用构造控制流图(CFG,Control Flow Graph)技术,另外结 合一些静态污点分析或数据流分析的技术以提高检测的准确率。检测程序通过对Android 应用程序反编译后的Dalvik字节码建立控制流图来确定可能的执行路径,然后采用数据 流分析技术对以上结果作进一步精简得到可能触发权限泄露的路径集。2,检测程序反编 译后的Java源代码静态分析,从Manifest文件中提取疑似权限泄露的Android组件列 表,然后从每个组件对应的Java程序入口开始构造 CFG,同时结合静态污点分析技术,定位 导致权限泄露的系统调用点。3,通过Android应用中的隐私泄露与数据污染漏洞,对反编 译后的Java源代码进行静态分析,生成函数调用图和程序控制流图,SQLite数据库操作 函数的程序执行流,确定出存在漏洞的应用。4,通过分析待检测Android应用的Content Provider接口特征,判断其是否可能存在隐私泄露漏洞;如果可能存在,针对可能存在隐 私泄露漏洞的待检测Android应用,通过对Android系统中相关API函数的监控,对待检测 Android应用的公开可访问URI进行SQL注入漏洞测试和路径遍历漏洞测试,检测被动数据 泄露安全风险。这些方法都是在应用程序编译后的静态检测方法,而对于编写的Android 应用程序,其中的漏洞在该程序编译前就存在了。如果能在编译前就检测到这些漏洞,不仅 能降低漏洞检测的工作量,更快的发现并消除漏洞,而且也避免了现有的漏洞检测方法对 Java反编译工具准确和完整性的依赖。
[0004] 鉴于此,如何找到一种不依赖于Java反编译工具的Android程序检测漏洞的方法 及系统就成为了本领域技术人员亟待解决的问题。

【发明内容】

[0005] 鉴于以上所述现有技术的缺点,本发明的目的在于提供一种Android程序漏洞检 测方法及系统,用于解决现有技术中Android程序检测漏洞方法通常需依赖于Java反编译 工具的的问题。
[0006] 为实现上述目的及其他相关目的,本发明提供一种Android程序漏洞检测方法, 所述Android程序漏洞检测方法包括:对Android程序的AndroidManifest. xml进行解析, 确定所述Android程序的组件构成以及继承类关系;对所述继承类进行检测,当检测到所 述继承类的接口不符合相应的接口编码规范,则提醒所述继承类存在类接口漏洞。
[0007] 可选地,所述Android程序漏洞检测方法还包括:当检测到所述组件由不安全类 构成时,提醒所述组件存在类安全漏洞。
[0008] 可选地,所述Android程序漏洞检测方法还包括:对所述提醒对所述组件存在类 安全漏洞进行处理,所述处理包括:修改所述组件,重新对所述组件进行漏洞检测。
[0009] 可选地,所述Android程序漏洞检测方法还包括:对所述提醒所述继承类存在类 接口漏洞进行处理,所述处理包括:修改所述类接口编码,重新对所述继承类接口进行漏洞 检测。
[0010] 可选地,所述接口编码规范包括:对类接口成员的可访问性进行限制。
[0011] 可选地,所述Android程序漏洞检测方法还包括:构建相应的程序漏洞探测类实 现对所述Android程序漏洞检测。
[0012] 本发明提供一种Android程序漏洞检测系统,应用于Android程序开发中, 所述Android程序漏洞检测系统包括:程序漏洞探测模块,用于获取Android程序的 AndroidManifest. xml进行解析,确定所述Android程序的组件构成以及继承类关系;对所 述继承类进行检测,当检测到所述继承类的接口不符合相应的接口编码规范时,则提醒所 述继承类存在类接口漏洞。
[0013] 可选地,所述程序漏洞探测模块还用于:对所述组件进行检测,当检测到所述组件 由不安全类构成时,提醒所述组件存在类安全漏洞。
[0014] 可选地,所述Android程序漏洞检测系统还包括程序漏洞处理模块,用于对所述 组件存在类安全漏洞进行修改。
[0015] 可选地,所述Android程序漏洞检测系统还包括程序漏洞处理模块,用于对所述 继承类存在类接口漏洞进行修改。
[0016] 可选地,所述接口编码规范包括:对类接口成员的可访问权限进行限制。
[0017] 可选地,所述程序漏洞探测模块的功能通过构建相应的程序漏洞探测类实现。
[0018] 如上所述,本发明的Android程序漏洞检测方法及系统,具有以下有益效果:在 Android应用程序还没有生成相应的APK程序前及程序还没有正式编译之前,不是针对 java语言本身的安全机制,而是对应用程序以及源代码的一种安全规范集合审查机制。为 尽早发现Android应用中隐私泄露与数据类安全漏洞提供了有力支持。在还没有编译的时 候,也就是应用程序还没有生成APK的时候,对程序员的代码进行深度扫描,发现程序员编 写程序的不规范代码,以及相应的权限机制进行自审查机制。本发明的技术方案不依赖于 Java反编译工具的准确性和完整性,同时也不受Java的多态这一动态特征的影响。
【附图说明】
[0019] 图1显示为本发明的Android程序漏洞检测方法的一实施例的流程示意图。
[0020] 图2显示为本发明的Android程序漏洞检测方法的一实施例的流程示意图。
[0021] 图3显示为本发明的Android程序漏洞检测系统的一实施例的模块示意图。
[0022] 元件标号说明
[0023] I Android程序漏洞检测系统
[0024] 11 程序漏洞探测模块
[0025] 12 程序漏洞处理模块
[0026] Sl ~S2 步骤
【具体实施方式】
[0027] 以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书 所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实 施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离 本发明的精神下进行各种修饰或改变。
[0028] 需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想, 遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘 制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可 能更为复杂。
[0029] 本发明提供一种Android程序漏洞检测方法。在一个实施例中,如图1所示,所述 Android程序漏洞检测方法包括:
[0030] 步骤Sl,对Android程序的AndroidManifest. xml进行解析,确定所述Android程 序的组件构成以及继承类关系。在一个实施例中,AndroidManifest. xml的组件中有活动 组件〈activityX/activity〉,服务接收器〈receiverX/receiver〉服务组件〈serviceX/ service〉等,这些组件所包含的类,代表相应的类,
[0031]
【主权项】
1. 一种Android程序漏洞检测方法,其特征在于,所述Android程序漏洞检测方法包 括: 对Android程序的AndroidManifest. xml进行解析,确定所述Android程序的组件构 成以及继承类关系; 对所述继承类进行检测,当检测到所述继承类的接口不符合相应的接口编码规范,则 提醒所述继承类存在类接口漏洞。
2.根据权利要求1所述的Android程序漏洞检测方法,其特征在于:所述Android程 序漏洞检测方法还包括:对所述组件进行检测,当检测到所述组件由不安全类构成时,提醒 所述组件存在类安全漏洞。
3.根据权利要求2所述的Android程序漏洞检测方法,其特征在于:所述Android程 序漏洞检测方法还包括:对所述提醒对所述组件存在类安全漏洞进行处理,所述处理包括: 修改所述组件,重新对所述组件进行漏洞检测。
4.根据权利要求1所述的Android程序漏洞检测方法,其特征在于:所述Android程 序漏洞检测方法还包括:对所述提醒所述继承类存在类接口漏洞进行处理,所述处理包括: 修改所述类接口编码,重新对所述继承类接口进行漏洞检测。
5.根据权利要求1所述的Android程序漏洞检测方法,其特征在于:所述接口编码规 范包括:对类接口成员的可访问性进行限制。
6.根据权利要求1所述的Android程序漏洞检测方法,其特征在于:所述Android程 序漏洞检测方法还包括:构建相应的程序漏洞探测类实现对所述Android程序漏洞检测。
7. -种Android程序漏洞检测系统,其特征在于:应用于Android程序开发中,所述 Android程序漏洞检测系统包括: 程序漏洞探测模块,用于获取Android程序的AndroidManifest. xml进行解析,确定所 述Android程序的组件构成以及继承类关系;对所述继承类进行检测,当检测到所述继承 类的接口不符合相应的接口编码规范,则提醒所述继承类存在类接口漏洞。
8.根据权利要求7所述的Android程序漏洞检测系统,其特征在于:所述程序漏洞探 测模块还用于:对所述组件进行检测,当检测到所述组件由不安全类构成时,提醒所述组件 存在类安全漏洞。
9.根据权利要求8所述的Android程序漏洞检测系统,其特征在于:所述Android程 序漏洞检测系统还包括程序漏洞处理模块,用于对所述组件存在类安全漏洞进行修改。
10.根据权利要求7所述的Android程序漏洞检测系统,其特征在于:所述Android程 序漏洞检测系统还包括程序漏洞处理模块,用于对所述继承类存在类接口漏洞进行修改。
11.根据权利要求7所述的Android程序漏洞检测系统,其特征在于:所述接口编码规 范包括:对类接口成员的可访问权限进行限制。
12.根据权利要求7所述的Android程序漏洞检测系统,其特征在于:所述程序漏洞探 测模块的功能通过构建相应的程序漏洞探测类实现。
【专利摘要】本发明提供一种Android程序漏洞检测方法及系统。所述Android程序漏洞检测系统,应用于Android程序开发中,所述Android程序漏洞检测系统包括:程序漏洞探测模块,用于获取Android程序的AndroidManifest.xml进行解析,确定所述Android程序的组件构成以及继承类关系;对所述继承类进行检测,当检测到所述继承类的接口不符合相应的接口编码规范时,则提醒所述继承类存在类接口漏洞。本发明的Android程序漏洞检测方法及系统,基于软件编码的错误会导致系统软件的安全漏洞为原型出发,构建相应的程序漏洞检测方案,能够检测出由不规范的编程引起的程序的漏洞。
【IPC分类】G06F21-56
【公开号】CN104732146
【申请号】CN201510158271
【发明人】金果
【申请人】上海斐讯数据通信技术有限公司
【公开日】2015年6月24日
【申请日】2015年4月3日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1